cminus文法
C_minus语言中关键字集合:else if int return void while
专用符号:+ - * / < >= = = != ; , ( ) [ ] {} /* */
其他标号:ID NUM,通过正则表达式定义为:
1)ID = letter(letter | digit)*
2)NUM = digit digit*
3)letter = a | … | z | A | … | Z | | _
4)digit = 0 | … | 9
空格由空白(space),换行符(Enter)和制表符(Tab)组成.空格可以被忽略,
除了它们是用来区分ID,NUM关键字.
注释由 /* …. */ 围起来.注释可以放在任何空白出现的位置,且可以超过一行.
注释不可以嵌套.
以下是C_minus的BNF定义:
编号 产生式
001 program → declaration-list
002 declaration-list → declaration-list declaration
003 declaration-list → declaration
004 declaration → var-declaration
005 declaration → fun-declaration
006 var-declaration → type-specifier ID;
007 var-declaration → type-specifier ID[NUM];
008 type-specifier → int
009 type-specifier → void
010 fun-declaration → type-specifier ID(params) compound-stmt
011 params → params-list
012 params → void
013 params-list → params-list,param
014 params-list → param
015 param → type-specifier ID
016 param → type-specifier ID[NUM]
017 compound-stmt → {local-declarations statement-list}
018 local-declarations →local-declarations var-declaration
019 local-declarations → empty
020 statement-list → statement-list statement
021 statement-list → empty
022 statement → expression-stmt
023 statement → compound-stmt
024 statement → selection-stmt
025 statement → iteration-stmt
026 statement → return-stmt
027 expression-stmt → expression;
028 expression-stmt →;
029 selection-stmt → if (expression) statement
030 selection-stmt → if (expression) statement else statement
031 iteration-stmt → while (expression) statement
032 return-stmt → return ;
033 return-stmt → return expression;
034 expression → var=expression
035 expression → simple-expression
036 var → ID
037 var → ID[expression]
038 simple-expression → additive-expression relop additive-expression
039 simple-expression → additive-expression
040 relop → <=
041 relop →
043 relop → >=
044 relop → ==
045 relop → !=
046 additive-expression → additive-expression addop term
047 additive-expression → term
048 addop → +
049 addop → -
050 term → term mulop factor
051 term → factor
052 mulop → *
053 mulop → /
054 factor → (expression)
055 factor → var
056 factor → call
057 factor → NUM
058 call → ID(args)
059 args → arg-list
060 args → empty
061 arg-list → arg-list,expression
062 arg-list → expression
一 C-语言的词法分析器(基于Lex) 报告
目的、意义
基于Parser Genarator的词法分析器构造方法
C-语言词法分析的设计(重要数据结构和数据类型介绍、词法规则、重要处理程序设计)
运行结果及分析
小结
参考资料
二 手工构造C-语言的词法分析器 报告
目的、意义
C-语言词法的特点,正则表达式
识别C-语言Token的DFA设计
重要的数据类型、数据结构设计
介绍DFA实现代码的各种方法的特点,说明自己选择的方案
实现的关键代码分析
运行结果实例、分析
小结
参考资料
三 C-语言的语法分析器(基于Yacc) 报告
目的、意义
C-语言语法的特点,CFG
重要的数据类型、数据结构设计
实现的关键代码分析
运行结果实例、分析
小结
参考资料
14 个解决方案
#1
up
#2
现在的学生都这样啊,呵呵呵
#3
不懂,帮顶。
#4
要源码?百度搜索。比如这儿:
http://bbs.chinaunix.net/viewthread.php?tid=1003081
http://bbs.chinaunix.net/viewthread.php?tid=1003081
#6
up
#7
看看
#8
网上源码一堆的.
#9
百度一下
google一下
帮顶一下
google一下
帮顶一下
#10
http://download.csdn.net/source/335966
http://download.csdn.net/sort/tag/cminus
http://download.csdn.net/sort/tag/cminus
#11
好东西啊,慢慢做呗
#12
LZ是学生吗?研究生?
这么大个东西,你还是网上找个源码慢慢看。然后再改进吧
这么大个东西,你还是网上找个源码慢慢看。然后再改进吧
#13
编译原理,再次学习~~
#14
编译原理好难!
#1
up
#2
现在的学生都这样啊,呵呵呵
#3
不懂,帮顶。
#4
要源码?百度搜索。比如这儿:
http://bbs.chinaunix.net/viewthread.php?tid=1003081
http://bbs.chinaunix.net/viewthread.php?tid=1003081
#5
#6
up
#7
看看
#8
网上源码一堆的.
#9
百度一下
google一下
帮顶一下
google一下
帮顶一下
#10
http://download.csdn.net/source/335966
http://download.csdn.net/sort/tag/cminus
http://download.csdn.net/sort/tag/cminus
#11
好东西啊,慢慢做呗
#12
LZ是学生吗?研究生?
这么大个东西,你还是网上找个源码慢慢看。然后再改进吧
这么大个东西,你还是网上找个源码慢慢看。然后再改进吧
#13
编译原理,再次学习~~
#14
编译原理好难!