| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- skip WHITESPACE '\s+'
- token NUM '[0-9]+'
- token VAR '[A-Za-z_][A-Za-z0-9_]*'
- token OP '\+|-'
- token MOP '\*|/'
- token IN '==>'
- token OUT '<=='
- token ASSIGN '->'
- token LOOP '\?\?'
- token IF '\?'
- token ELSE '\|'
- token LPAREN '\('
- token RPAREN '\)'
- token LBRACE '\{'
- token RBRACE '\}'
- token SEMI ';'
- token OP '\+|-'
- token MOP '\*|/'
- %
- <program> ::= <stmtlist>
- <stmtlist> **= <stmt>
- <stmt>InputStmt ::= <IN> <VAR> <SEMI>
- <stmt>OutputStmt ::= <OUT> <exp> <SEMI>
- <stmt>AssignStmt ::= <VAR> <ASSIGN> <exp> <SEMI>
- <stmt>ControlStmt ::= <LPAREN> <exp> <RPAREN> <ctrltail>
- <ctrltail>IfStmt ::= <IF> <block> <ELSE> <block>
- <ctrltail>LoopStmt ::= <LOOP> <block>
- <block> ::= <LBRACE> <stmtlist> <RBRACE>
- <exp> ::= <mult> <exprest>
- <exprest> **= <OP> <mult>
- <mult> ::= <value> <multrest>
- <multrest> **= <MOP> <value>
- <value> ::= <NUM> | <VAR>
- %
|