smartc文法.txt
来自「词法分析程序」· 文本 代码 · 共 56 行
TXT
56 行
关键字: if,else,int,return,void,while for;
专用符号: + - * / < <= > >= == != = ; , ( ) [ ] { } /* */
其他标记是ID和NUM,通过下列正则表达式定义:
ID = letter letter*
num = digit digit*
letter = a|..|z|A|..|Z
digit = 0|..|9
小写和大写字母是有区别的。
C-Minus语言的EBNF语法:
1. program -> declaration-list
2. declaration-list -> declaration { declaration }
3. declaration -> var-declaration | fun-declaration
4. var-declaration -> type-specifier ID ; | type-specifier ID [ NUM ] ;
5. type-specifier -> int | void
6. fun-declaration -> type-specifier ID ( params ) compound-stmt
7. params -> params-list | void
8. param-list -> param { , param }
9. param -> type-specifier ID | type-specifier ID [ ]
10. compound-stmt -> { local-declarations statement-list} (注:该处左右大括号是真正意义上的大括号 )
11. local-declarations -> var-declaration { var-declaration }| empty
12. statement-list -> statement { statement }| empty
13. statement -> expression-stmt | compound-stmt | selection-stmt | iteration-stmt | return-stmt
14. expression-stmt -> expression ; | ;
15. selection-stmt -> if ( expression ) statement [ else statement ](注:该处左右中括号是唯一表示内容可选的中括号 )
16. iteration-stmt -> while ( expression ) statement|for(expression;expression;expression) statement
17. return-stmt -> return ; | return expression;
18. expression -> var = expression | simple-expression|logical-expression
19. var -> ID | ID [value]
20. simple-expression -> additive-expression relop additive-expression | additive-expression
21. logical-expression-> simple-expression logical simple-expression {logical logical-expression}| ! simple-expression {logical logical-expression}
22 logical-> &&| ||
23. relop -> <= | >= | < | > | == | !=
24. additive-expression -> term { addop term }
25. addop -> + | -
26. term -> factor { mulop factor }
27. mulop -> * | /
28. factor -> ( simple-expression )|(logical-expression) | value
29. value->var | call | NUM
30. call -> ID ( args )
31. args -> { arg-list }
32. arg-list -> expression { , expression }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?