pns/grammar.txt
Gašper Dobrovoljc b1e61398a6
WIP SynAn
2025-03-18 19:24:19 +01:00

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 .