小型桌面计算器_第1页
小型桌面计算器_第2页
小型桌面计算器_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

小型桌面计算器⑴语法分析器(Parser):完成语言的语法分析;⑵词法分析器(Lexer):完成语言的词法分析;⑶符号表(SymbolTable):存储用户标识的名-值对;⑷驱动程序(Driver):main函数;⑸错误处理器(ErrorHandler):进行程序的错误处理。1iiiLexer1 I ——1 I .I t •: !ErrorHandler::Driver<4111三全局变量I1•• I— ■■it-■.errprmain 屈iexpr—term—primParserjSymbolTable:!一全局变最!t Ww I

一个简单桌面计算器的设计与实现⑴小型桌面计算器的功能。桌面计算器实际上是一个小型的某种语言的编译器,它完成:从标准输入设备读入一个(数值计算)表达式,计算它的值后从标准输出设备输出;读入的可以是一个赋值语句:左端是一个符号名,右端是表达式。表达式中可以有四则运算符、括号、整数/实数值。若发现输入内容与文法不符或将导致非法计算,则从标准输出设备输出出错提示,并计算出错次数。⑵程序中关键的数据结构enumToken_value{NAME,NUMBER,END,PLUS='+',Minus='-',MUL='*',DIV='/',PRINT=';',ASSIGN='=',LP='(',RP=')'};其中,Token_value为枚举类型,枚举了该语言中的各种终结符标记(token)值。⑶语言的文法。语言的文法以递归的方式进行定义,其中终结符(TerminalSymboIs)以黑色粗体/大写字符标识。erogram:ENDexpr_listENDexpr_list:expressionPRINTexpressionPRINTexpr_listexpression:expression+termexpression-tremtermterm:term/primaryterm*primaryprimaryprimary:NUMBERNAMENAME=expression-primary(expression)⑷程序中的全局变量及其功能。程序中共定义了5个全局变量:Token_valuedoublestringmap<string,double>intcurr_tok=PRINT;number_value;string_value;table;no_of_errorsToken_valuedoublestringmap<string,double>intcurr_tok=PRINT;number_value;string_value;table;no_of_errors①curr_tok:在get_token中设置,在expr、term、prim中的switch中使用。它表示的是当前读入的标记的类别,用来控制分类别的求值及其它处理。number_value:在get_token中设置,在prim中使用。它表示的是当前读入数的字面值。string_value:在get_token中设置,在prim中使用。它表示的是当前读入的符号名,用来在table中查找对应的数值。table:在prim中设置,在prim中使用。它表示的是已经读入的符号名对应数值,符号名可以增加,对应数值通过引用类型隐含地赋值。no_of_errors:在error中设置,在main中使用。它表示的是已经发生的错误数量。⑸小型桌面计算器的程序结构图,桌面计算器采用递归下降子程序的方法实现。该计算器主要由以下四部分组成:语法分析器(Parser)、一个输入函数(InputFunction)、一个符号表(SymbolTable)和一个程序驱动程序(Driver)。语法分析器:完成语言的语法分析。对于上述语言,语法分析器以递归下降的方法,对语言的每个产生器用一个函数实现。输入函数:由程序中的get_token函数实现,它

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论