]>
Commit | Line | Data |
---|---|---|
933e60e3 JW |
1 | GLOBAL := ( FUNCTION | VARIABLE )* |
2 | FUNCTION := TYPE MODIFIERS _IDENTIFIER ARGSLIST ( ';' | STMTLIST ) | |
3 | TYPE := 'int' | |
4 | MODIFIERS := '*'* | |
7e3bbd6a | 5 | ARGSLIST := '(' [ TYPE MODIFIERS _IDENTIFIER ( ',' TYPE MODIFIERS _IDENTIFIER )* ] ')' |
933e60e3 JW |
6 | STMTLIST := '{' ( VARIABLE | STATEMENT | STMTLIST )* '}' |
7 | VARIABLE := TYPE MODIFIERS _IDENTIFIER [ = EXPRESSION ] ';' | |
8 | STATEMENT := ( ';' | EXPRESSION ';' | WHILE | IF | RETURN ) | |
9 | WHILE := 'while' '(' EXPRESSION ')' CHUNK | |
10 | IF := 'if' '(' EXPRESSION ')' CHUNK | |
11 | RETURN := 'return' EXPRESSION ';' | |
12 | CHUNK := ( STMTLIST | STATEMENT ) | |
13 | EXPRESSION := P13EXPR | |
14 | P13EXPR := P6EXPR ( '=' P6EXPR )* | |
15 | P6EXPR := P5EXPR ( '==' P5EXPR )* | |
16 | P5EXPR := P3EXPR ( ( '<' | '>' ) P3EXPR )* | |
17 | P3EXPR := P2EXPR ( ( '+' | '-' ) P2EXPR )* | |
7e3bbd6a JW |
18 | P2EXPR := SUBEXPR ( ( '*' | '/' ) SUBEXPR )* |
19 | SUBEXPR := ( '(' EXPRESSION ')' | _NUMBER | _IDENTIFIER ) |