mirror of
https://github.com/MorizzG/rlox.git
synced 2025-12-06 04:12:42 +00:00
Lox Interpreter done (Chapter 13)
This commit is contained in:
parent
10540708d4
commit
719a014977
16 changed files with 707 additions and 196 deletions
11
GRAMMAR
11
GRAMMAR
|
|
@ -23,25 +23,26 @@ declaration -> var_decl | fun_decl | class_decl ;
|
|||
|
||||
var_decl -> "var" IDENTIFIER ( "=" expression )? ";"
|
||||
fun_decl -> "fun" IDENTIFIER "(" parameters ")" block ;
|
||||
class_decl -> "class" IDENTIFIER "{" method* "}" ;
|
||||
class_decl -> "class" IDENTIFIER ( "<" IDENTIFIER ) "{" method* "}" ;
|
||||
|
||||
method -> IDENTIFIER "(" parameters ")" block ;
|
||||
|
||||
expression -> assignment
|
||||
|
||||
assignment -> IDENTIFIER "=" assignment | logic_or ;
|
||||
assignment -> ( call_or_get "." )? IDENTIFIER "=" assignment | logic_or ;
|
||||
logic_or -> logic_and ( "or" logic_and )* ;
|
||||
logic_and -> equality ( "and" equality )* ;
|
||||
equality -> comparison ( ( "==" | "!=" ) comparison )* ;
|
||||
comparison -> term ( ">" | ">=" | "<" | "<=" term )* ;
|
||||
term -> factor ( ( "+" | "-" ) factor )*
|
||||
factor -> unary ( ( "*" | "/" ) unary )* ;
|
||||
unary -> ( "!" | "-" ) unary | call ;
|
||||
unary -> ( "!" | "-" ) unary | call_or_get ;
|
||||
|
||||
call -> primary ( "(" arguments? ")" )* ;
|
||||
call_or_get -> primary ( "(" arguments? ")" | "." IDENTIFIER )* ;
|
||||
arguments -> expression ( "," expression )* ;
|
||||
|
||||
primary -> "(" expression ")" | IDENTIFIER | lambda | NUMBER | STRING | "true" | "false" | "nil" ;
|
||||
primary -> "(" expression ")" | IDENTIFIER | lambda | NUMBER | STRING | "true" | "false" | "nil"
|
||||
| "this" | "super" "." IDENTIFIER ;
|
||||
|
||||
lambda -> "fun" "(" parameters ")" block ;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue