DoisC::ASTData
Data Representations of Abstract Syntax Tree Components
Constants
ASSIGN_OPERATORS = Set {TokenType::EQ, TokenType::ADD_ASSIGN, TokenType::SUB_ASSIGN, TokenType::MUL_ASSIGN, TokenType::DIV_ASSIGN, TokenType::IDIV_ASSIGN, TokenType::OR_ASSIGN, TokenType::AND_ASSIGN, TokenType::BITWISE_OR_ASSIGN, TokenType::BITWISE_AND_ASSIGN, TokenType::BITWISE_XOR_ASSIGN}
Collection of all assignment operators, i.e. x += 2, y -= 3
BINARY_OPERATORS = Set {TokenType::ADD, TokenType::SUB, TokenType::MUL, TokenType::DIV, TokenType::IDIV, TokenType::MODULUS, TokenType::COMP_LT, TokenType::COMP_GT, TokenType::COMP_GTEQ, TokenType::COMP_LTEQ, TokenType::COMP_EQ, TokenType::AND, TokenType::OR, TokenType::EQ}
Collection of all binary operators
DESUGARED_ASSIGN_OPERATORS = {TokenType::ADD_ASSIGN => TokenType::ADD, TokenType::SUB_ASSIGN => TokenType::SUB, TokenType::MUL_ASSIGN => TokenType::MUL, TokenType::DIV_ASSIGN => TokenType::DIV, TokenType::IDIV_ASSIGN => TokenType::IDIV, TokenType::BITWISE_OR_ASSIGN => TokenType::BAR, TokenType::BITWISE_AND_ASSIGN => TokenType::BITWISE_AND, TokenType::BITWISE_XOR_ASSIGN => TokenType::BITWISE_XOR, TokenType::AND_ASSIGN => TokenType::AND, TokenType::OR_ASSIGN => TokenType::OR}
Mapping of assignment operators to their respective binary operators
EXPR_PRECEDENCE = {:UNARY => 15, TokenType::MUL => 14, TokenType::DIV => 14, TokenType::IDIV => 14, TokenType::MODULUS => 14, TokenType::ADD => 13, TokenType::SUB => 13, TokenType::BITWISE_AND => 12, TokenType::BAR => 11, TokenType::BITWISE_XOR => 11, TokenType::COMP_LT => 10, TokenType::COMP_GT => 10, TokenType::COMP_GTEQ => 10, TokenType::COMP_LTEQ => 10, TokenType::COMP_EQ => 9, TokenType::AND => 8, TokenType::OR => 7, TokenType::EQ => 6, TokenType::MUL_ASSIGN => 5, TokenType::DIV_ASSIGN => 5, TokenType::IDIV_ASSIGN => 5, TokenType::ADD_ASSIGN => 4, TokenType::SUB_ASSIGN => 4, TokenType::BITWISE_OR_ASSIGN => 3, TokenType::BITWISE_AND_ASSIGN => 2, TokenType::AND_ASSIGN => 1, TokenType::OR_ASSIGN => 0}
Operator precedence master mapping
KEYWORDS = {"let" => TokenType::LET, "var" => TokenType::VAR, "if" => TokenType::IF, "else" => TokenType::ELSE, "elif" => TokenType::ELIF, "while" => TokenType::WHILE, "do" => TokenType::DO, "then" => TokenType::THEN, "true" => TokenType::TRUE, "false" => TokenType::FALSE, "nil" => TokenType::NIL, "end" => TokenType::END, "fn" => TokenType::FN, "proc" => TokenType::PROC, "break" => TokenType::BREAK, "return" => TokenType::RETURN, "has" => TokenType::HAS, "is" => TokenType::IS, "type" => TokenType::TYPE, "module" => TokenType::MODULE, "def" => TokenType::DEF, "match" => TokenType::MATCH, "_" => TokenType::UNDERSCORE}
Mapping of String => TokenType pairs
Nested types
- DoisC::ASTData::AST
- DoisC::ASTData::AccessExpression
- DoisC::ASTData::ArrayLiteral
- DoisC::ASTData::BinaryExpression
- DoisC::ASTData::Binding
- DoisC::ASTData::BindingPattern
- DoisC::ASTData::BoolLiteral
- DoisC::ASTData::Break
- DoisC::ASTData::Call
- DoisC::ASTData::CharLiteral
- DoisC::ASTData::Declaration
- DoisC::ASTData::Expression
- DoisC::ASTData::ExpressionStatement
- DoisC::ASTData::Field
- DoisC::ASTData::FloatLiteral
- DoisC::ASTData::FunctionCall
- DoisC::ASTData::FunctionDeclaration
- DoisC::ASTData::Identifier
- DoisC::ASTData::IdentifierExpression
- DoisC::ASTData::IfBranch(BodyType)
- DoisC::ASTData::IfExpression
- DoisC::ASTData::IfLetStatement
- DoisC::ASTData::IfStatement
- DoisC::ASTData::IntLiteral
- DoisC::ASTData::Literal
- DoisC::ASTData::LiteralCollection
- DoisC::ASTData::LiteralPattern
- DoisC::ASTData::LiteralType
- DoisC::ASTData::LiteralValue
- DoisC::ASTData::MapLiteral
- DoisC::ASTData::MatchBranch
- DoisC::ASTData::MatchExpression
- DoisC::ASTData::ModuleDeclaration
- DoisC::ASTData::NamedArgument
- DoisC::ASTData::NamedFieldPattern
- DoisC::ASTData::NilLiteral
- DoisC::ASTData::Node
- DoisC::ASTData::Operator
- DoisC::ASTData::OperatorType
- DoisC::ASTData::Parameter
- DoisC::ASTData::Pattern
- DoisC::ASTData::Procedure
- DoisC::ASTData::ProcedureCall
- DoisC::ASTData::ProcedureDeclaration
- DoisC::ASTData::ProductTypeDeclaration
- DoisC::ASTData::Reassignment
- DoisC::ASTData::SourceLocation
- DoisC::ASTData::Statement
- DoisC::ASTData::StringLiteral
- DoisC::ASTData::SymbolRef
- DoisC::ASTData::Token
- DoisC::ASTData::TokenType
- DoisC::ASTData::TupleLiteral
- DoisC::ASTData::TuplePattern
- DoisC::ASTData::TypeDeclaration
- DoisC::ASTData::TypeID
- DoisC::ASTData::UnaryExpression
- DoisC::ASTData::UnionTypeDeclaration
- DoisC::ASTData::VarDeclaration
- DoisC::ASTData::VariantPattern
- DoisC::ASTData::WhileLoop
- DoisC::ASTData::WildCardPattern