pub struct Parser { /* private fields */ }Expand description
Represents the parses that parses the tokens and returns the resulting expression according to the following grammer. This grammer is traversed in a top-down, left-to-right manner. The lower rule is, the higher precedence it has. Therefore the parser will start parsing from the top rule but will go down to the lower rules if it finds a match.
§Syntax Grammer
Program -> Decleration* EOF ;§Declarations
Declaration -> ClassDecl | FunDecl | VarDecl | Statement ;
ClassDecl -> "class" IDENTIFIER ( "<" IDENTIFIER )? "{" Function* "}" ;
FunDecl -> "fun" Function ;
VarDecl -> "var" IDENTIFIER ( "=" Expression )? ";" ;§Statements
Statement -> ExprStmt | ForStmt | IfStmt | PrintStmt | ReturnStmt | BreakStmt | WhileStmt | Block ;
ExprStmt -> Expression ";" ;
ForStmt -> "for" "(" ( VarDecl | ExprStmt | ";" ) Expression? ";" Expression? ")" Statement ;
IfStmt -> "if" "(" Expression ")" Statement ( "else" Statement )? ;
PrintStmt -> "print" Expression ";" ;
ReturnStmt -> "return" Expression? ";" ;
BreakStmt -> "break" ";" ;
WhileStmt -> "while" "(" Expression ")" Statement ;
Block -> "{" Decleration* "}" ;§Expressions
Expression -> Assignment ;
Assignment -> ( Call "." )? IDENTIFIER "=" Assignment | LogicOr ;
LogicOr -> LogicAnd ( "or" LogicAnd )* ;
LogicAnd -> Equality ( "and" Equality )* ;
Equality -> Comparison ( ( "!=" | "==" ) Comparison )* ;
Comparison -> Term ( ( ">" | ">=" | "<" | "<=" ) Term )* ;
Term -> Factor ( ( "+" | "-" ) Factor )* ;
Factor -> Unary ( ( "*" | "/" ) Unary )* ;
Unary -> ( "!" | "-" ) Unary | Call ;
Call -> Primary ( "(" Arguments? ")" | "." IDENTIFIER )* ;
Primary -> NUMBER | STRING | "false" | "true" | "null" | "this" | "(" Expression ")" | IDENTIFIER | "super" "." IDENTIFIER ;§Misc
Function -> IDENTIFIER "(" Parameters? ")" Block ;
Parameters -> IDENTIFIER ( "," IDENTIFIER )* ;
Arguments -> Expression ( "," Expression )* ;Implementations§
Auto Trait Implementations§
impl Freeze for Parser
impl RefUnwindSafe for Parser
impl Send for Parser
impl Sync for Parser
impl Unpin for Parser
impl UnwindSafe for Parser
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more