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

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

ID:8872394

大小:199.50 KB

页数:8页

时间:2018-04-10

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

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

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

2、4实验原理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环境下进行相应的修改,添加main方法和打开文件的方法6程序测试结果6.1编写源代码6.2使用Fle

3、x生成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=272,LSHIFT=273,RSHIFT=274,AND=275,OR=276,NOT=277,LESS

4、=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;#defineyystypeYYSTYPE/*obsolescent;willbewithdrawn*/#defineYYSTYPE_IS_DECLAR

5、ED1#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(0(.{digit}+)?)

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

7、X){xdigit}+reg[a-zA-

8、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)(I

41、i)(S

42、s)(T

43、t)erase(E

44、e)(R

45、r)(A

46、a)(S

47、s)(E

48、e)hex(H

49、h)(E

50、e)(X

51、x)oct(O

52、o)(C

53、c)(T

54、t)dec(D

55、d)(E

56、e)(C

57、c)help(H

58、h)

59、(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]{}{decnum}{sscanf(yytext,"%lf",&yylval);return(NUM);}{octnum}{i=1;val=0;while(i

82、l=val;return(NUM);}{hexnum}{i=2;val=0;while(i

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

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

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