网站大量收购独家精品文档,联系QQ:2885784924

编译原理第二次上机实验报告软工_李_U2025172xx.docxVIP

编译原理第二次上机实验报告软工_李_U2025172xx.docx

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

PAGE/NUMPAGES

编译原理第二次上机实验报告

姓名:李x

班级:软工140x班

学号:U2025172xx

实验二设计实现简单语言的语法分析器

1、实验目的

通过该实验,熟练应用编译原理关于语法分析的基本理论和方法;学会用C/C++高级程序设计语言设计一个语法分析器;加深对编译原理理论的分析理解,提高实际操作和解决具体问题的能力。

2、实验条件

计算机上安装C/C++编译处理软件。

3、实验内容及要求

对下述单词表与语法定义的语言设计编制一个语法分析器。单词符号及种别表、语法及语法分析器功能、基本要求如下:

(1)单词符号及种别表

单词符号

种别编码

单词值

main

1

int

2

float

3

double

4

char

5

if

6

else

7

do

8

while

9

l(l|d)*

10

内部字符串

(+|-|ε)dd*(.dd*|ε)(e(+|-|ε)dd*|ε)

20

二进制数值表示

=

21

+

22

-

23

*

24

/

25

(

26

)

27

{

28

}

29

,

30

;

31

32

=

33

34

=

35

==

36

!=

37

#

0

(2)语法结构定义

表达式::=项{+项|-项}

项::=因子{*因子|/因子}

因子::=ID|num|(表达式)

num::=(+|-|ε)数字数字*(.数字数字*|ε)(e(+|-|ε)数字数字*|ε)

ID::=字母(字母|数字)*

字母::=a|b|c…|z|A|B|C…|Z

数字::=0|1|2…|9

(3)语法分析器功能及基本要求

处理用户提交的符合上述文法的源代码序列,进行语法分析,并给出语法是否正确的结论。

(1)总体设计思想

利用自上而下的分析方法;本实验所采用的是LL(1)分析法即预测分析法;每次通过词法分析模块读入一个完整的单词,在语法分析中判断正确性,最终将结果输出。

(2)详细算法设计

语法分析

表达式::=项{+项|-项}

项::=因子{*因子|/因子}

因子::=ID|num|(表达式)

num::=(+|-|ε)数字数字*(.数字数字*|ε)(e(+|-|ε)数字数字*|ε)

ID::=字母(字母|数字)*

字母::=a|b|c…|z|A|B|C…|Z

数字::=0|1|2…|9

用字母替代后写成如下:

E→T{+T|-T}

T→F{*F|/F}

F→i|n|(E)

将该扩充文法还原

E?E+T|E-T|T

T?T*F|T/F|F

F?(E)|i|n

消除非终结符E、T的直接左递归后,文法变为

E?TE’

E’?+TE’|-TE’|ε

T?FT’

T’?*FT’|/FT’|ε

F?(E)|i|n

此文法是LL(1)文法

求出该文法的预测分析表

i

n

+

-

*

/

(

)

$

E

E?TE’

E?TE’

E?TE’

E’(e)

E’?+TE’

E’?TE’

E’?ε

E’?ε

T

T?FT’

T?FT’

T?F’

T’(t)

T’?ε

T’?ε

T’?*FT’

T’?/FT’

T’?ε

T’?ε

F

F?i

F?n

F?(E)

根据预测分析表、分析栈和一个总控程序来判断一个语句是否正确;

(3)流程框图

(4)函数相关说明

charinput[300];//存放输入的字符串

chartoken[20];//存放符合C语言词法规则的单词

charch;//单个字符

charprevious;//ch的前一个字符

charlatter;//ch的后一个字符

charch1,ch2;//当处理注释的时候使用

inttypenum;//表示单词的种别码

intp,m,n,cx;

doubledecimal;//记录小数

doublesum;//存放数字

intindex;//存放指数

intisNum;//是否是数字

intisDecimal;//记录是否为小数

intisExp;//记录是否为指数

intisNegative;//是否带负号(对于指数)

intisNegative1;//是否为负数

charX,a;

charstack[200];

voidscanner();

char*rwtab[11]={main,int,float,double,char,if,else,while,do,end};

//记录预测分析表,0表示没有产生

文档评论(0)

指尖商务服务店 + 关注
官方认证
文档贡献者

我们公司拥有一支经验丰富、富有创意的文档创作团队。他们擅长于撰写各种类型的文档,包括但不限于商业计划书、项目报告、产品说明书、学术论文等。无论您需要什么样的文档,我们都能为您量身定制,满足您的个性化需求。

认证主体南江县集州街道指尖商务服务店(个体工商户)
IP属地四川
统一社会信用代码/组织机构代码
92511922MADJJPY30X

1亿VIP精品文档

相关文档