sapphire-lang 0.8.0

Gradually typed scripting language where every value is an object and types are optional, checked at runtime
Documentation
#[derive(Debug, Clone, PartialEq)]
pub enum TokenKind {
    LeftParen,
    RightParen,

    Plus,
    Minus,
    Star,
    Slash,
    Percent,
    Bang,
    Amp,
    Pipe,
    Caret,
    Tilde,
    AmpDot,
    AmpAmp,
    PipePipe,
    LessLess,
    GreaterGreater,
    Eq,
    EqEq,
    BangEq,
    Less,
    LessEq,
    Greater,
    GreaterEq,
    Semicolon,
    Comma,

    LeftBrace,
    RightBrace,
    LeftBracket,
    RightBracket,
    Dot,
    DotDot,
    Colon,
    Arrow,

    Number(i64),
    Float(f64),
    StringLit(String),
    StringInterp(Vec<(String, bool)>), // (content, is_expr)
    Identifier(String),
    True,
    False,
    Nil,
    If,
    Elsif,
    Else,
    While,
    Def,
    Defp,
    Return,
    Break,
    Next,
    Class,
    Module,
    Include,
    Attr,
    SelfKw,
    SuperKw,
    Yield,
    Print,
    Raise,
    Begin,
    Rescue,
    End,
    Import,
    Type,
    Abstract,
    Interface,
    Question,

    Match,
    FatArrow,   // =>
    Underscore, // _

    Newline,
    Eof,
}

#[derive(Debug, Clone)]
pub struct Token {
    pub kind: TokenKind,
    pub line: usize,
    pub column: usize,
}