借助lex和yacc进行词法语法分析

借助lex和yacc进行词法语法分析

ID:5320213

大小:264.22 KB

页数:30页

时间:2017-12-08

借助lex和yacc进行词法语法分析_第1页
借助lex和yacc进行词法语法分析_第2页
借助lex和yacc进行词法语法分析_第3页
借助lex和yacc进行词法语法分析_第4页
借助lex和yacc进行词法语法分析_第5页
资源描述:

《借助lex和yacc进行词法语法分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、借助Lex和Yacc进行词法语法分析一、实验目的:1.通过对实验型程序设计语言C1的定义,掌握程序设计语言的基本语法和语义;2.使用Lex及Yacc实现词法分析和语法分析;二、实验内容:C1文法这里定义了一个编程语言称作C1,这是一种适合编译器设计方案的语言,包括函数和数组。本质上它是C的一个子集,但省去了一些重要的部分,因此得名。C1惯用的词法1.下面是语言的关键字:elseifintreturnvoidwhile所有的关键字都是保留字,并且必须是小写。2.下面是专用符号:+-*/<<=>>===!==;,()[]{}/**/3.其他标记

2、是ID和NUM,通过下列正则表达式定义:ID=letterletter*NUM=digitdigit*letter=a

3、..

4、z

5、A

6、..

7、Zdigit=0

8、..

9、9小写和大写字母是有区别的。4.空格由空白、换行符和制表符组成。空格通常被忽略,除了它必须分开ID、NUM关键字。5.注释用通常的C语言符号/*...*/围起来。注释可以放在任何空白出现的位置(即注释不能放在标记内)上,且可以超过一行。注释不能嵌套。C1的语法和语义1.program→declaration-list2.declaration-list→declaration-l

10、istdeclaration

11、declaration3.declaration→var-declaration

12、fun-declaration4.var-declaration→type-specifierID;

13、type-specifierID[NUM];5.type-specifier→int

14、void

15、float6.fun-declaration→type-specifierID(params)compound-stmt7.params→params-list

16、void8.param-list→param-list,param

17、par

18、am9.param→type-specifierID

19、type-specifierID[]10.compound-stmt→{local-declarationsstatement-list}11.local-declarations→local-declarationsvar-declaration

20、empty12.statement-list→statement-liststatement

21、empty13.statement→expression-stmt

22、compound-stmt

23、selection-stmt

24、iteration-s

25、tmt

26、return-stmt14.expression-stmt→expression;

27、;15.selection-stmt→if(expression)statement

28、if(expression)statementelsestatement16.iteration-stmt→while(expression)statement17.return-stmt→return;

29、returnexpression;18.expression→var=expression

30、simple-expression19.var→ID

31、ID[expre

32、ssion]20.simple-expression→additive-expressionrelopadditive-expression

33、additive-expression21.relop→<=

34、<

35、>

36、>=

37、==

38、!=

39、&&

40、

41、

42、22.additive-expression→additive-expressionaddopterm

43、term23.addop→+

44、-24.term→termmulopfactor

45、factor25.mulop→*

46、/26.factor→(expression)

47、var

48、call

49、NUM27.call→

50、ID(args)28.args→arg-list

51、empty29.arg-list→arg-list,expression

52、expression下面是对以上每条文法规则,给出了相关语义的简短解释。1.program→declaration-list2.declaration-list→declaration-listdeclaration

53、declaration3.declaration→var-declaration

54、fun-declaration程序由声明的列表(或序列)组成,声明可以是函数或变量声明,顺序是任意的。至少必须有一个声明。

55、接下来是语义限制(这些在C中不会出现)。所有的变量和函数在使用前必须声明(这避免了向后backpatching引用)。程序中最后的声明必须是一个函数声明,名字为main。注意,C

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。