电子科大-编译原理实验报告(得分70分)

合集下载

编译原理 实验报告

编译原理 实验报告

编译原理实验报告编译原理实验报告引言编译原理是计算机科学中的重要课程,它研究的是如何将高级语言程序转化为机器语言程序的过程。

在本次实验中,我们学习了编译原理的基本概念和技术,并通过实践来加深对这些概念和技术的理解。

本报告将对我们在实验中遇到的问题、解决方案以及实验结果进行总结和分析。

实验目的本次实验的主要目的是设计并实现一个简单的编译器,能够将类C语言的源代码翻译成目标代码。

通过这个实验,我们可以更好地理解编译器的工作原理,掌握编译器设计的基本方法和技术。

实验过程在实验中,我们首先对给定的类C语言的语法进行了分析,并根据语法规则设计了相应的语法分析器。

然后,我们使用了自顶向下的递归下降分析法来实现语法分析器。

在实现语法分析器的过程中,我们遇到了一些问题,例如如何处理语法规则中的左递归、如何处理语法规则中的优先级和结合性等。

通过仔细研究相关的文献和资料,我们成功地解决了这些问题,并完成了语法分析器的设计和实现。

接下来,我们对语法分析器进行了测试,并对测试结果进行了分析。

通过测试,我们发现语法分析器在处理简单的源代码时能够正确地识别出语法错误,并给出相应的错误提示。

然而,在处理复杂的源代码时,语法分析器可能会出现一些错误,例如无法正确地处理嵌套的语法结构、无法正确地处理运算符的优先级和结合性等。

为了解决这些问题,我们对语法分析器进行了改进,并进行了多次测试,最终得到了令人满意的结果。

实验结果通过本次实验,我们成功地设计并实现了一个简单的编译器,能够将类C语言的源代码翻译成目标代码。

在实验中,我们对编译器的工作原理有了更深入的了解,掌握了编译器设计的基本方法和技术。

同时,我们也发现了一些问题,并通过不断地改进和测试,最终得到了令人满意的结果。

结论编译原理是一门重要的计算机科学课程,它研究的是如何将高级语言程序转化为机器语言程序的过程。

通过本次实验,我们对编译原理的基本概念和技术有了更深入的了解,并通过实践来加深了对这些概念和技术的理解。

编译原理实验报告

编译原理实验报告

编译原理实验报告一、实验目的和要求本次实验旨在对PL_0语言进行功能扩充,添加新的语法特性,进一步提高编译器的功能和实用性。

具体要求如下:1.扩展PL_0语言的语法规则,添加新的语法特性;2.实现对新语法的词法分析和语法分析功能;3.对扩展语法规则进行语义分析,并生成中间代码;4.验证扩展功能的正确性。

二、实验内容1.扩展语法规则本次实验选择扩展PL_0语言的语句部分,添加新的控制语句,switch语句。

其语法规则如下:<switch_stmt> -> SWITCH <expression> CASE <case_list><default_stmt> ENDSWITCH<case_list> -> <case_stmt> , <case_stmt> <case_list><case_stmt> -> CASE <constant> : <statement><default_stmt> -> DEFAULT : <statement> ,ε2.词法分析和语法分析根据扩展的语法规则,需要对新的关键字和符号进行词法分析,识别出符号类型和记号类型。

然后进行语法分析,建立语法树。

3.语义分析在语义分析阶段,首先对switch语句的表达式进行求值,判断其类型是否为整型。

然后对case语句和default语句中的常量进行求值,判断是否与表达式的值相等。

最后将语句部分生成中间代码。

4.中间代码生成根据语法树和语义分析的结果,生成对应的中间代码。

例如,生成switch语句的跳转表,根据表达式的值选择相应的跳转目标。

5.验证功能的正确性设计一些测试用例,验证新语法的正确性和扩展功能的实用性。

三、实验步骤与结果1.扩展语法规则,更新PL_0语法分析器的词法规则和语法规则。

电子科大-编译原理实验报告(得分80分)

电子科大-编译原理实验报告(得分80分)

电子科技大学实验报告学生姓名:爸爸学号:2222222222222 指导教师:陈昆实验地点:科研楼A-506 实验时间:2017-04-28一、实验项目名称:词法分析器的设计与实现二、实验学时:4学时三、实验原理1.编译程序要求对高级语言编写的源程序进行分析和合成,生成目标程序。

词法分析是对源程序进行的首次分析,实现词法分析的程序为词法分析程序或词法分析器,也称扫描器。

2.词法分析的功能是:从左到右逐个地扫描源程序字符串,按照词法规则,识别出单词符号作为输出,对识别过程中发现的词法错误,输出相关的错误信息。

3.识别出来的单词会采用某种中间表现形式,通常一个单词用一个二元式来表示:(单词类别,单词的属性)。

4.状态转换图简称转化图,是有限有向图,是设计词法分析器的有效工具。

四、实验目的通过该实验,让同学们自己独立自主的设计词法分析器,使得同学们可以更好的掌握词法分析程序设计的原理及相应的程序设计方法,对编译这门课程也可以有更加深刻理解,同时还可以锻炼编程能力。

五、实验内容实现求n!的极小语言的词法分析程序,返回二元式作为输出。

六、实验器材(设备、元器件)1.操作系统:Windows XP2.开发工具:VS2013七、实验步骤(1)在VS2013中创建工程;(2)编写输入输出,初始化,错误处理等函数;(3)建立相应的单词符号与种别对照表,根据状态转换图编写相应的处理函数;(4)运行代码进行调试;(5)编写测试需要的输入文件:.pas文件;(6)生成.dyd文件。

八、实验数据及结果分析编码完成后将测试程序放入debug文件夹中,测试程序如下图:代码运行成功后在debug文件夹中会产生对应的exe,在cmd中运行后,会在debug文件夹中生成后缀为dyd和err的文件,打开dyd如下图所示:因为没有错误,所以对应的test1.err的文件为空可以对源程序进行词法分析,如果有错给出出错信息和所在行数,如果无错则生成二元式文件。

编译原理实验报告

编译原理实验报告

编译原理实验报告一、实验概述本次实验旨在设计并实现一个简单的词法分析器,即实现编译器的第一个阶段,词法分析。

词法分析器将一段源程序代码作为输入,将其划分为一个个的词法单元,并将其作为输出。

二、实验过程1.设计词法规则根据编程语言的规范和所需实现的功能,设计词法规则,以明确规定如何将源程序代码分解为一系列的词法单元。

2.实现词法分析器采用合适的编程语言,根据所设计的词法规则,实现词法分析器。

词法分析器的主要任务是读入源程序代码,并将其根据词法规则进行分解,生成对应的词法单元。

3.测试词法分析器设计测试用例,用于检验词法分析器的正确性和性能。

测试用例应包含各种情况下的源程序代码。

4.分析和修正错误根据测试过程中发现的问题,分析产生错误的原因,并进行修正。

重复测试和修正的过程,直到词法分析器能够正确处理所有测试用例。

三、实验结果我们设计了一个简单的词法分析器,并进行了测试。

测试用例涵盖了各种情况下的源程序代码,包括正确的代码和错误的代码。

经过测试,词法分析器能够正确处理所有的测试用例。

词法分析器将源程序代码分解为一系列的词法单元,每个词法单元包含了单词的种类和对应的值。

通过对词法单元的分析,可以进一步进行语法分析和语义分析,从而完成编译过程。

四、实验总结通过本次实验,我深入了解了编译原理的词法分析阶段。

词法分析是编译器的第一个重要阶段,它将源程序代码分解为一个个的词法单元,为后续的语法分析和语义分析提供基础。

在实现词法分析器的过程中,我学会了如何根据词法规则设计词法分析器的算法,并使用编程语言实现词法分析器。

通过测试和修正,我掌握了调试和错误修复的技巧。

本次实验的经验对我今后的编程工作有很大帮助。

编译原理是计算机科学与技术专业的核心课程之一,通过实践能够更好地理解和掌握其中的概念和技术。

我相信通过进一步的学习和实践,我能够在编译原理领域取得更大的成果。

编译原理实验报告

编译原理实验报告

编译原理实验报告一、实验目的编译原理是计算机科学中的重要学科,它涉及到将高级编程语言转换为计算机能够理解和执行的机器语言。

本次实验的目的是通过实际操作和编程实践,深入理解编译原理中的词法分析、语法分析、语义分析以及中间代码生成等关键环节,提高我们对编译过程的认识和编程能力。

二、实验环境本次实验使用的编程语言为C++,开发环境为Visual Studio 2019。

此外,还使用了一些相关的编译工具和调试工具,如 GDB 等。

三、实验内容(一)词法分析器的实现词法分析是编译过程的第一步,其任务是将输入的源程序分解为一个个单词符号。

在本次实验中,我们使用有限自动机的理论来设计和实现词法分析器。

首先,定义了各种单词符号的类别,如标识符、关键字、常量、运算符等。

然后,根据这些类别设计了相应的状态转换图,并将其转换为代码实现。

在实现过程中,使用了正则表达式来匹配输入字符串中的单词符号。

对于标识符和常量等需要进一步处理的单词符号,使用了相应的规则进行解析和转换。

(二)语法分析器的实现语法分析是编译过程的核心环节之一,其任务是根据给定的语法规则,分析输入的单词符号序列是否符合语法结构。

在本次实验中,我们使用了递归下降的语法分析方法。

首先,根据实验要求定义了语法规则,并将其转换为相应的递归函数。

在递归函数中,通过对输入单词符号的判断和处理,逐步分析语法结构。

为了处理语法错误,在分析过程中添加了错误检测和处理机制。

当遇到不符合语法规则的输入时,能够输出相应的错误信息,并尝试进行恢复。

(三)语义分析及中间代码生成语义分析的目的是对语法分析得到的语法树进行语义检查和语义处理,生成中间代码。

在本次实验中,我们使用了三地址码作为中间代码的表示形式。

在语义分析过程中,对变量的定义和使用、表达式的计算、控制流语句等进行了语义检查和处理。

对于符合语义规则的语法结构,生成相应的三地址码指令。

四、实验步骤(一)词法分析器的实现步骤1、定义单词符号的类别和对应的正则表达式。

编译原理实验报告

编译原理实验报告

编译原理实验报告编译原理实验报告一、实验目的1. 了解编译器的基本原理和工作过程;2. 掌握编译器设计和实现的基本方法和技巧;3. 通过设计和实现一个简单的编译器,加深对编程语言和计算机系统的理解和认识。

二、实验原理编译器是将高级语言程序翻译成机器语言程序的一种软件工具。

它由编译程序、汇编程序、链接程序等几个阶段组成。

本次实验主要涉及到的是编译程序的设计和实现。

编译程序的基本原理是将高级语言程序转换为中间代码,再将中间代码转换为目标代码。

整个过程可以分为词法分析、语法分析、语义分析、代码生成和代码优化几个阶段。

三、实验内容本次实验的设计目标是实现一个简单的四则运算表达式的编译器。

1. 词法分析根据规定的语法规则,编写正则表达式将输入的字符串进行词法分析,将输入的四则运算表达式划分成若干个单词(Token),例如:运算符、操作数等。

2. 语法分析根据定义的语法规则,编写语法分析程序,将词法分析得到的Token序列还原成语法结构,构建抽象语法树(AST)。

3. 语义分析对AST进行遍历,进行语义分析,判断表达式是否符合语法规则,检查语义错误并给出相应的提示。

4. 代码生成根据AST生成目标代码,目标代码可以是汇编代码或者机器码。

四、实验过程和结果1. 首先,根据输入的表达式,进行词法分析。

根据所定义的正则表达式,将输入的字符串划分成Token序列。

例如:输入表达式“2+3”,经过词法分析得到的Token序列为["2", "+", "3"]。

2. 然后,根据语法规则,进行语法分析。

根据输入的Token序列,构建抽象语法树。

3. 接着,对抽象语法树进行语义分析。

检查表达式是否符合语法规则,给出相应的提示。

4. 最后,根据抽象语法树生成目标代码。

根据目标代码的要求,生成汇编代码或者机器码。

五、实验总结通过本次实验,我对编译器的工作原理有了更深入的认识,掌握了编译器设计和实现的基本方法和技巧。

编译原理实验报告

编译原理实验报告

《编译原理》实验报告软件131 陈万全132852一、需求分析通过对一个常用高级程序设计语言的简单语言子集编译系统中词法分析、语法分析、语义处理模块的设计、开发,掌握实际编译系统的核心结构、工作流程及其实现技术,获得分析、设计、实现编译程序等方面的实际操作能力,增强设计、编写和调试程序的能力。

通过开源编译器分析、编译过程可视化等扩展实验,促进学生增强复杂系统分析、设计和实现能力,鼓励学生创新意识和能力。

1、词法分析程序设计与实现假定一种高级程序设计语言中的单词主要包括五个关键字begin、end、if、then、else;标识符;无符号常数;六种关系运算符;一个赋值符和四个算术运算符,试构造能识别这些单词的词法分析程序。

输入:由符合和不符合所规定的单词类别结构的各类单词组成的源程序文件。

输出:把所识别出的每一单词均按形如(CLASS,VALUE)的二元式形式输出,并将结果放到某个文件中。

对于标识符和无符号常数,CLASS字段为相应的类别码的助记符;VALUE字段则是该标识符、常数的具体值;对于关键字和运算符,采用一词一类的编码形式,仅需在二元式的CLASS字段上放置相应单词的类别码的助记符,VALUE字段则为“空”。

2、语法分析程序设计与实现选择对各种常见高级程序设计语言都较为通用的语法结构——算术表达式的一个简化子集——作为分析对象,根据如下描述其语法结构的BNF定义G2[<算术表达式>],任选一种学过的语法分析方法,针对运算对象为无符号常数和变量的四则运算,设计并实现一个语法分析程序。

G2[<算术表达式>]:<算术表达式> → <项> | <算术表达式>+<项> | <算术表达式>-<项><项> → <因式> | <项>*<因式> | <项>/<因式><因式> → <运算对象> | (<算术表达式>)若将语法范畴<算术表达式>、<项>、<因式>和<运算对象>分别用E、T、F和i 代表,则G2可写成:G2[E]:E → T | E+T | E-T T → F | T*F | T/F F → i | (E)输入:由实验一输出的单词串,例如:UCON,PL,UCON,MU,ID ······输出:若输入源程序中的符号串是给定文法的句子,则输出“RIGHT”,并且给出每一步分析过程;若不是句子,即输入串有错误,则输出“ERROR”,并且显示分析至此所得的中间结果,如分析栈、符号栈中的信息等,以及必要的出错说明信息。

编译原理实验报告语义分析

编译原理实验报告语义分析

编译原理实验报告语义分析实验名称:语义分析实验目的:1.掌握词法分析器生成的词法单元序列的构造;2.学会设计语法分析器,实现对程序的基本语法结构检查,并生成抽象语法树;3.学习语义规约的实现,实现对程序的语义分析和错误检查;4.熟悉语义分析向语法分析的接口。

实验原理:语义分析是编译过程的一个重要环节,它的主要任务是对生成的抽象语法树进行遍历,并验证程序的类型一致性、语义规则的正确性、错误的检查和恢复等。

语义分析的输入是由语法分析生成的抽象语法树,输出是继续优化的抽象语法树或中间代码,以供后续的中间代码生成等工作使用。

实验步骤:1.设计语法分析器,包括语法规则、优先级关系等;2.生成词法单元序列;3.构建语法分析器,进行语法分析,并生成抽象语法树;4.针对不同的语义规约,设计语义动作,实现对程序的语义分析和错误检查;5.完成语义分析器的构建和测试。

实验设备:1.计算机;2. 编程语言:C++/Java/Python等;3. 开发环境:Visual Studio/ Eclipse/PyCharm等。

实验结果:通过对语法分析生成的抽象语法树进行遍历,实现了对程序的语义分析和错误检查。

具体实现包括:1.类型检查:根据语义规约,对程序中的类型进行检查,包括变量的声明及使用、函数的调用、赋值语句的一致性等;2.作用域检查:检查变量的作用域和可见性等;3.错误检查:检测语义错误,如变量未声明、函数重复定义等;4.错误恢复:当检测到错误时,采取适当的错误恢复措施,如跳过错误的部分继续分析、提示错误信息等。

实验心得:本次实验主要学习了语义分析的原理和实现方法,深入了解了编译过程中各个环节的作用和关系。

通过实践操作,加深了对语法分析和语义分析的理解,提高了编程能力和解决问题的能力。

同时,实验过程中也遇到了一些挑战和困难,例如语义规约的设计和实现、错误检查和恢复等,但通过查阅资料和与同学讨论,最终解决了这些问题。

通过本次实验,我对编译原理和语义分析有了更深入的了解,并且对以后的学习和工作有了更好的准备。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机专业类课程实验报告课程名称:编译原理学院:计算机科学与工程学院专业:计算机科学与技术专业学生姓名:郫县库里学号:2014666666666指导教师:日期: 2017年 5月 14日电子科技大学计算机学院实验中心电子科技大学实验报告实验一一、实验名称:词法分析器的设计与实现二、实验学时:4三、实验内容和目的:(一)实验内容:1.源语言:求n!的极小语言2.输入输出:源程序*.pas文件作为输入,经过自己编程实现的词法分析器进行处理,生成二元式,保存到*.dyd文件中,如下图所示。

(二)实验目的:通过设计词法分析器的实验,使同学们了解和掌握词法分析程序设计的原理及相应的程序设计方法,同时提高编程能力。

四、实验原理:(一)结合“数据结构”进行分析:1.二元式文件*.dyd(1)二元式形式:电子科技大学计算机学院实验中心分析:由输出二元式形式可知,使用printf 输出可以很方便达到要求:(2) 每行后加一分析:对输入文件中的换行符“\n”,要采取相应的策略:(3) 文件结尾加分析:对于文件末尾的“EOF”,要采取相应的策略:2. 错误信息文件:*.err (1) 错误信息格式分析:设置出错处理的函数,并且需要记录错误行号、错误性质:(2) 注意:进入每一阶段, 首先打开 .err, 如果无错误, 则 .err 为空。

(二)词法分析的实现方法——利用状态转换分析:根据状态转化图,编写读到不同的内容时的状态转化函数,是设计词法分析器的核心。

(三)对“输入输出”文件的分析——文件相关操作因为需要读写文件,并生成错误文件,涉及许多文件相关操作,通过相关函数函数实现功能:五、实验器材(设备、元器件)(一)操作系统:Windows 8 Professional(二)开发工具:Visual Studio 2015(三)编程语言:C电子科技大学计算机学院实验中心六、实验步骤:(一) 启动Visual Studio 2015,新建一个项目LxicalAnalyzer (二) 编写LxicalAnalyzer.h 文件,声明项目将要用到的自定义函数:(三) 编写LxicalAnalyzer.cpp 文件,根据“状态转化图”、“单词符号与种别对照表”实现LxicalAnalyzer.h 中声明的函数(详细代码附在实验报告最后); (四) 编写main.cpp 文件,完成编码;(五) 根据给出的测试程序,编写输入文件test.pas(六) 运行写好的词法分析器程序,并结合输出文件test.err 、test.dyd 进行调试; (七) 完成实验。

七、实验数据及结果分析:(一) 输入文件test.pas(二)执行词法分析器程序(三)检查输出文件test.err因为输入文件中测试程序没有错误,所以文件为空:(四)检查输出文件test.dyd检查可知,输出文件内容为符合实验要求的二元式:(五)修改输入文件,在输入文件中添加错误(六)再次执行词法分析器程序(七)重新检查输出文件test.err可见,本词法分析器成功实现检查多处词法错误:八、实验结论、心得体会和改进建议:(一)实验结论通过编码与反复调试,成功完成了词法分析器的设计与实现,能够对给出文法的测试程序进行正确的词法分析,按要求输出二元式的*.dyd文件。

同时,也可以检测出所给源程序中的多处词法错误。

(二)心得体会1.对于这种需要多次重复同一操作的实验,将相应的操作写成函数,可以方便编码,减少错误和代码行数。

2.第一次编码忽略了状态转化之后的回退工作,导致bug的出现,以后需要吸取经验教训。

3.尽量在第一次编写程序时,写出较多的提示信息和注释,便于发现bug后的调试。

(三)改进建议上课使用的教材P134页“第六章词法分析”中的内容对本实验的完成有很大帮助,认真阅读后思路更加清晰。

*********为便于老师评阅报告,两次实验代码都添加底纹后放在在文档最后部分*********电子科技大学计算机学院实验中心电子科技大学实验报告实验二一、实验名称:递归下降分析器的设计与实现二、实验学时:4三、实验内容和目的:(一)实验内容:根据给定的方法,编写相应的递归下降的语法分析程序,实现对词法分析后的单词序列的语法检查和程序结构的分析,生成相应的变量名表和过程名表,并将编译中语法检查出来的错误写入相应的文件。

语法错分类:(1)缺少符号错;(2)符号匹配错;(3)符号无定义或重复定义。

(二)实验目的:通过设计递归下降分析器的设计与实现实验,使同学们掌握自上而下的递归分析法的语法分析原理和程序设计方法。

四、实验原理:(一)语法分析的定义和功能语法分析是根据语法规则,将单词符号构成各类语法单位,并进行语法检查。

在本实验中,对源程序经过词法分析后转换成的单词流按方法规则进行判断,对能构成正确句子的单词流,给出相应的语法树;对不能构成正确句子的单词流判断其语法错误并做出相应处理。

(二)语法分析的方法语法分析方法有自上而下和自下而上的分析方法。

(1)自上而下语法分析法:或从开始符号出发,找最左推导;或从根开始,构造推导树。

(2)自下而上语法分析法:从输入串开始,归约,直至文法开始符。

本实验中,我们采用自上而下的递归下降分析法,在不含左递归的文法G中,如果对每一个非终结符的所有候选式的第一个终结符都是两两不相交的(即无公共左因子),则可能构造出一个不带回溯的自上而下的分析程序,这个分析程序由一组递归过程组成,每个过程对应文法的一个非终结符。

这样的分析程序称为递归下降分析程序。

(三)数据结构1.*.dys同*.dyd2.变量名表·变量名vname: char(16)·所属过程vproc:char(16)·分类vkind: 0..1(0—变量、1—形参)·变量类型vtype: types·变量层次vlev: int·变量在变量表中的位置vadr: int(相对第一个变量而言)3.过程名表·过程名pname: char(16)·过程类型ptype: types·过程层次plev: int·第一个变量在变量表中的位置fadr: int·最后一个变量在变量表中的位置ladr: int4.四元式表电子科技大学计算机学院实验中心(oprd, op1, op2, result)·oprd——整数码·op1——第一操作数·op2——第二操作数·result——结果·op1、op2、result可用“值/地址”表示5.目标代码——P码(四)给定文法产生式实验中给定文法如下:<程序>→<分程序><分程序>→begin <说明语句表>;<执行语句表> end<说明语句表>→<说明语句>│<说明语句表> ;<说明语句><说明语句>→<变量说明>│<函数说明><变量说明>→integer <变量><变量>→<标识符><标识符>→<字母>│<标识符><字母>│ <标识符><数字><字母>→a│b│c│d│e│f│g│h│i│j│k│l│m│n│o │p│q │r│s│t│u│v│w│x│y│z<数字>→0│1│2│3│4│5│6│7│8│9<函数说明>→integer function <标识符>(<参数>);<函数体><参数>→<变量><函数体>→begin <说明语句表>;<执行语句表> end<执行语句表>→<执行语句>│<执行语句表>;<执行语句><执行语句>→<读语句>│<写语句>│<赋值语句>│<条件语句><读语句>→read(<变量>)<写语句>→write(<变量>)<赋值语句>→<变量>:=<算术表达式><算术表达式>→<算术表达式>-<项>│<项><项>→<项>*<因子>│<因子><因子>→<变量>│<常数>│<函数调用><常数>→<无符号整数><无符号整数>→<数字>│<无符号整数><数字><条件语句>→if<条件表达式>then<执行语句>else <执行语句><条件表达式>→<算术表达式><关系运算符><算术表达式><关系运算符> →<│<=│>│>=│=│<>五、实验器材(设备、元器件)(一)操作系统:Windows 8 Professional(二)开发工具:Visual Studio 2015电子科技大学计算机学院实验中心(三)编程语言:C六、实验步骤:(一)启动Visual Studio 2015,新建一个项目GrammerAnalyzer;(二)消除文法中的左递归;(三)编写GrammerAnalyzer.h文件,定义将要用到的结构,并声明项目将要用到的自定义函数:(四)编写GrammerAnalyzer.cpp文件,根据“文法产生式”实现LxicalAnalyzer.h中声明的函数和具体的递归下降分析法(详细代码附在实验报告最后);(五)编写main.cpp文件,完成编码;(五)将词法分析器的输出文件test.dyd作为实现的语法分析器的输入文件:电子科技大学计算机学院实验中心(六) 运行写好的词法分析器程序,并结合输出文件test.dys 、变量名表文件test.var 、过程名表文件test.pro 、错误文件等进行调试; (七) 完成实验。

七、实验数据及结果分析:(一) 输入文件test.dyd ,内容为2元式子(二) 执行词法分析器程序(三) 检查输出文件test.dys ,与输入文件相同,正确:(四)检查变量名表文件test.var,符合要求:(五)检查过程名表文件test.pro,符合要求:(六)检查过程名表文件test.err,基本符合要求:八、实验结论、心得体会和改进建议:(一)实验结论:本实验程序较好地完成了递归下降分析器的设计与实现,能够对所给文法的程序进行语法分析,生成变量名表和过程名表,如果源程序有语法错误则给出出错类型及所在行数。

相关文档
最新文档