diff options
-rw-r--r-- | grammar.txt | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/grammar.txt b/grammar.txt new file mode 100644 index 0000000..0a7a66e --- /dev/null +++ b/grammar.txt @@ -0,0 +1,30 @@ +start-symbol PROGRAM + +context-free syntax + PROGRAM ::= "begin" DECLS "|" (STATEMENT ";")* "end" + DECLS ::= "declare" (ID ",")* + +context-free syntax + STATEMENT ::= ID ":=" EXP + +context-free syntax + EXP ::= ID + EXP ::= NAT + EXP ::= EXP "+" EXP {left} + EXP ::= EXP "*" EXP {left} + EXP ::= "-" EXP + EXP ::= "(" EXP ")" + +lexical syntax + ID ::= [a-z][a-z0-9]* + +lexical syntax + NAT ::= [0] | [1-9][0-9]* + +lexical syntax + LAYOUT ::= [\ \n]* + +context-free priorities + EXP ::= "-" EXP > + EXP ::= "*" EXP > + EXP ::= "+" EXP |