BNF Grammar For C-Minus: ID Letter Letter NUM Digit Digit Letter A - .. - Z - A - .. - Z Digit 0 - .. - 9
BNF Grammar For C-Minus: ID Letter Letter NUM Digit Digit Letter A - .. - Z - A - .. - Z Digit 0 - .. - 9
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. program declaration-list declaration-list declaration-list declaration | declaration declaration var-declaration | fun-declaration var-declaration type-specifier ID ; | type-specifier ID [ NUM ] ; type-specifier int | void fun-declaration type-specifier ID ( params ) compound-stmt params param-list | void param-list param-list , param | param param type-specifier ID | type-specifier ID [ ] compound-stmt { local-declarations statement-list } local-declarations local-declarations var-declarations | empty statement-list statement-list statement | empty statement expression-stmt | compound-stmt | selection-stmt | iteration-stmt | return-stmt expression-stmt expression ; | ; selection-stmt if ( expression ) statement | if ( expression ) statement else statement iteration-stmt while ( expression ) statement return-stmt return ; | return expression ; expression var = expression | simple-expression var ID | ID [ expression ] simple-expression additive-expression relop additive-expression | additive-expression relop <= | < | > | >= | == | != additive-expression additive-expression addop term | term addop + | term term mulop factor | factor mulop * | / factor ( expression ) | var | call | NUM call ID ( args ) args arg-list | empty arg-list arg-list , expression | expression
Keywords: else if int return void while Special symbols: + - * / < <= > >= == != = ; , ( ) [ ] { } /* */ ID = letter letter* NUM = digit digit* letter = a | .. | z | A | .. | Z digit = 0 | .. | 9 Comments: /* ... */