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

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

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

《编译原理》实验报告 专 业: 学 号: 班 级: 姓 名: 实验题目:设计,实现一个简单的计算器程序 实验时间: 指导教师: 实验成绩: 实验目的 实现一个简单计算器 实验要求 单词的构词规则有明确的定义; 编写的分析程序能够正确识别源程序中的语法符号; 计算器源程序的以.c格式输出 对于源程序中的词法错误,能够做出简单的错误处理,给出简单的错误提示,保证顺利完成整个源程序的词法分析,语法分析; 计算器能够实现加,减,乘,除,混合运算,多项式运算。 实验环境 Windows XP Flex词法分析工具 Visual Studio C++ 6.0 实验原理 多项式计算器的实现,采用后缀表达式来对输入的计算表达式进行计算 对后缀表达式进行符号识别,词法分析,语法分析 编写计算器的源程序,使用Flex工具生成计算器的C语言程序 对生成的程序进行相应的修改,再进行编译,连接,运行,测试得到可以用于进行多项式运算的源程序。 软件设计与编程 程序源代码: 新建文件夹 将Flex工具复制到该文件夹下 在DOS环境学生成目标源程序 在Visual Studio C++ 6.0环境下进行相应的修改,添加main方法和打开文件的方法 程序测试结果 编写源代码 使用Flex生成C代码: 6.3 在Visual Studio C++6.0上运行生成的”.c”文件 文件:y.ta.h #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { 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 = 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) typedef int YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 #endif extern YYSTYPE yylval; 文件:calc.l 核心程序 %{ #define YYSTYPE double #define BIGINT long #include ctype.h #include y.tab.h %} digit [0-9] xdigit [0-9a-fA-F] odigit [0-7] decnum (0(\.{digit}+)?)|([1-9]{digit}*(\.{digit}+)?) octnum 0{odigit}+ hexnum 0(x|X){xdigit}+ reg [a-zA-Z] opt1 +|-|*|/||||%|^|~|!|| opt2 ()|(\|\|)|(\\)|(\\) exit ((E|e)(X|x)(I|i)(T|t))|((Q|q)(U|u)(I|i)(T|t)) clear (C|c)(L|l)(E|e)(A|a)(R|r) list (L|l)(I|i)(S|s)(T|t) erase (E|e)(R|r)(A|a)(S|s)(E|e) hex (H|h)

文档评论(0)

d47fv82b5hI + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档