X-Git-Url: http://git.joshuawise.com/jwcc.git/blobdiff_plain/933e60e38a9fe9d3770ab93b494d967361eef5b8..7e3bbd6ac9896666e26d7a634242ee77b58db331:/grammar.txt diff --git a/grammar.txt b/grammar.txt index f8e78d2..ecf0dd1 100644 --- a/grammar.txt +++ b/grammar.txt @@ -2,7 +2,7 @@ GLOBAL := ( FUNCTION | VARIABLE )* FUNCTION := TYPE MODIFIERS _IDENTIFIER ARGSLIST ( ';' | STMTLIST ) TYPE := 'int' MODIFIERS := '*'* -ARGSLIST := '(' [ TYPE _IDENTIFIER ( ',' TYPE _IDENTIFIER)]* ] ')' +ARGSLIST := '(' [ TYPE MODIFIERS _IDENTIFIER ( ',' TYPE MODIFIERS _IDENTIFIER )* ] ')' STMTLIST := '{' ( VARIABLE | STATEMENT | STMTLIST )* '}' VARIABLE := TYPE MODIFIERS _IDENTIFIER [ = EXPRESSION ] ';' STATEMENT := ( ';' | EXPRESSION ';' | WHILE | IF | RETURN ) @@ -15,4 +15,5 @@ P13EXPR := P6EXPR ( '=' P6EXPR )* P6EXPR := P5EXPR ( '==' P5EXPR )* P5EXPR := P3EXPR ( ( '<' | '>' ) P3EXPR )* P3EXPR := P2EXPR ( ( '+' | '-' ) P2EXPR )* -P2EXPR := _NUMBER ( ( '*' | '/' ) _NUMBER )* \ No newline at end of file +P2EXPR := SUBEXPR ( ( '*' | '/' ) SUBEXPR )* +SUBEXPR := ( '(' EXPRESSION ')' | _NUMBER | _IDENTIFIER )