62 lines
1.6 KiB
Plaintext
62 lines
1.6 KiB
Plaintext
program -> definition restdefs .
|
|
restdefs -> definition restdefs | .
|
|
|
|
definition -> fun IDENTIFIER LPAREN parameters RPAREN funcassign .
|
|
funcassign -> ASSIGN statements | .
|
|
|
|
definition -> var IDENTIFIER ASSING initializers .
|
|
|
|
parameters -> IDENTIFIER restparams | .
|
|
restparams -> COMMA parameters | .
|
|
|
|
statements -> statement reststmts .
|
|
reststmts -> COMMA statements | .
|
|
|
|
statement -> expression exprassign .
|
|
exprassign -> ASSIGN expression | .
|
|
|
|
statement -> if expression then statements elsestmt end .
|
|
elsestmt -> else statements | .
|
|
|
|
statement -> while expression do statements end .
|
|
|
|
statement -> let definition reststmtdefs in statements end .
|
|
reststmtdefs -> definition reststmtdefs | .
|
|
|
|
expression -> conjexpr restdisj .
|
|
restdisj -> OR expression | .
|
|
|
|
conjexpr -> cmpexpr restconj .
|
|
restconj -> AND conjexpr | .
|
|
|
|
cmpexpr -> addexpr restcmp .
|
|
restcmp -> cmpop cmpexpr | .
|
|
cmpop -> EQ | NEQ | LTH | GTH | LEQ | GEQ .
|
|
|
|
addexpr -> multexpr restadd .
|
|
restadd -> addop addexpr | .
|
|
addop -> ADD | SUB .
|
|
|
|
multexpr -> prefixexpr restmult .
|
|
restmult -> multop multexpr | .
|
|
multop -> MUL | DIV | MOD .
|
|
|
|
prefixexpr -> prefixop postfixexpr .
|
|
prefixop -> NOT prefixop | ADD prefixop | SUB prefixop | PTR prefixop | .
|
|
|
|
postfixexpr -> primary postfixop .
|
|
postfixop -> PTR postfixop | .
|
|
|
|
primary -> const | LPAREN expression RPAREN | IDENTIFIER exprargs .
|
|
exprargs -> LPAREN arguments RPAREN | .
|
|
|
|
arguments -> expression restargs | .
|
|
restargs -> COMMA restargs | .
|
|
|
|
initializers -> initializer restinits | .
|
|
restinits -> COMMA initializers | .
|
|
|
|
initializer -> INTCONST intconstmul | CHARCONST | STRINGCONST .
|
|
intconstmul -> MUL const | .
|
|
|
|
const -> INTCONST | CHARCONST | STRINGCONST . |