编译原理实现一个简单的计算器程序.doc

编译原理实现一个简单的计算器程序.doc

ID:58831471

大小:123.50 KB

页数:8页

时间:2020-09-24

编译原理实现一个简单的计算器程序.doc_第1页
编译原理实现一个简单的计算器程序.doc_第2页
编译原理实现一个简单的计算器程序.doc_第3页
编译原理实现一个简单的计算器程序.doc_第4页
编译原理实现一个简单的计算器程序.doc_第5页
资源描述:

《编译原理实现一个简单的计算器程序.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、《编译原理》实验报告专业:学号:班级:姓名:实验题目:设计,实现一个简单的计算器程序实验时间:指导教师:实验成绩:1实验目的1.1实现一个简单计算器2实验要求2.1单词的构词规则有明确的定义;2.2编写的分析程序能够正确识别源程序中的语法符号;2.3计算器源程序的以.c格式输出2.4对于源程序中的词法错误,能够做出简单的错误处理,给出简单的错误提示,保证顺利完成整个源程序的词法分析,语法分析;2.5计算器能够实现加,减,乘,除,混合运算,多项式运算。3实验环境3.1WindowsXP3.2Flex词法分析工具3.3

2、VisualStudioC++6.04实验原理4.1多项式计算器的实现,采用后缀表达式来对输入的计算表达式进行计算4.2对后缀表达式进行符号识别,词法分析,语法分析4.3编写计算器的源程序,使用Flex工具生成计算器的C语言程序4.4对生成的程序进行相应的修改,再进行编译,连接,运行,测试得到可以用于进行多项式运算的源程序。5软件设计与编程5.1程序源代码:5.2新建文件夹5.3将Flex工具复制到该文件夹下5.4在DOS环境学生成目标源程序5.5在Visual StudioC++6.0环境下进行相应的修改,添加m

3、ain方法和打开文件的方法6程序测试结果6.1编写源代码6.2使用Flex生成C代码:6.3在VisualStudioC++6.0上运行生成的”.c”文件文件:y.ta.h#ifndefYYTOKENTYPE#defineYYTOKENTYPEenumyytokentype{CLEAR=258,EXIT=259,LIST=260,ERASE=261,DEC=262,HEX=263,OCT=264,HELP=265,NUM=266,REG=267,ADD=268,SUB=269,MUL=270,DIV=271,MOD

4、=272,LSHIFT=273,RSHIFT=274,AND=275,OR=276,NOT=277,LESS=278,MORE=279,BITAND=280,BITOR=281,BITXOR=282,BITREV=283,SIN=284,COS=285,TAN=286,ABS=287,SQRT=288,LOG=289,RMINUS=290};//前面定义过,此处省略宏定义#if!defined(YYSTYPE)&&!defined(YYSTYPE_IS_DECLARED)typedefintYYSTYPE;#def

5、ineyystypeYYSTYPE/*obsolescent;willbewithdrawn*/#defineYYSTYPE_IS_DECLARED1#defineYYSTYPE_IS_TRIVIAL1#endifexternYYSTYPEyylval;文件:calc.l核心程序%{#defineYYSTYPEdouble#defineBIGINTlong#include#include"y.tab.h"%}digit[0-9]xdigit[0-9a-fA-F]odigit[0-7]decnum(

6、0(.{digit}+)?)

7、([1-9]{digit}*(.{digit}+)?)octnum0{odigit}+hexnum0(x

8、X){xdigit}+reg[a-zA-Z]opt1"+"

9、"-"

10、"*"

11、"/"

12、"&"

13、"

14、"

15、"%"

16、"^"

17、"~"

18、"!"

19、"<"

20、">"opt2(&&)

21、(

22、

23、)

24、(<<)

25、(>>)exit((E

26、e)(X

27、x)(I

28、i)(T

29、t))

30、((Q

31、q)(U

32、u)(I

33、i)(T

34、t))clear(C

35、c)(L

36、l)(E

37、e)(A

38、a)(R

39、r)list(L

40、l)

41、(I

42、i)(S

43、s)(T

44、t)erase(E

45、e)(R

46、r)(A

47、a)(S

48、s)(E

49、e)hex(H

50、h)(E

51、e)(X

52、x)oct(O

53、o)(C

54、c)(T

55、t)dec(D

56、d)(E

57、e)(C

58、c)help(H

59、h)(E

60、e)(L

61、l)(P

62、p)sin(S

63、s)(I

64、i)(N

65、n)cos(C

66、c)(O

67、o)(S

68、s)log(L

69、l)(O

70、o)(G

71、g)tan(T

72、t)(A

73、a)(N

74、n)abs(A

75、a)(B

76、b)(S

77、s)sqrt(S

78、s)(Q

79、q)(R

80、r)(T

81、t)%%inti;BIGINTval;["";t

82、]{}{decnum}{sscanf(yytext,"%lf",&yylval);return(NUM);}{octnum}{i=1;val=0;while(i

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

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

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