欢迎来到天天文库
浏览记录
ID:35627073
大小:1006.14 KB
页数:30页
时间:2019-04-03
《编译原理课程设计--(LR(1)分析表的构造)》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、引言《编译原理》是计算机专业的一门重要的专业课程,其中包含大量软件设计思想。通过课程设计,实现一些重要的算法,或设计一个完整的编译程序模型,能够进一步加深理解和掌握所学知识,对提高自己的软件设计水平具有十分重要的意义。语法分析是编译过程的第二阶段,是编译器前端的核心组成部分,在编译系统中起到了至关重要的作用。自底向上的语法分析与自顶向下的语法分析相比,对将要分析的源程序有着更大的分析空间,从而受到了广泛的运用。LR(0)分析是自底向上LR类语法分析的基础,自底向上语法分析方法是一种移进-规约过程,在当前分析的栈顶符号串形成句柄时就采取规
2、约动作,因此最终目标是如何在分析过程中确定句柄。LR分析法是给出一种能根据当前分析栈中的符号串和向右顺序查看k个符号串就可以唯一地确定分析器动作:是移进还是规约,采用哪条产生式。LR(0)分析器是在分析过程中,不需要向后查看输入串符号,因此它对文法的限制较大。对绝大多数高级语言语法分析器是不适用的,但是它是构造其他LR分析器的基础。LR(0)最终存在的问题和需要解决的问题是在构造LR(0)分析表的时候,在LR(0)项目集规范族中,有移进项目和规约项目、规约项目和规约项目同时存在的现象,形成移进-规约冲突和规约-规约冲突,直接导致语法分析
3、器无法在某一状态进行移进还是规约。为了能够解决这一问题,我们需要再向后查看一个输入字符(也就是当前字符的FOLLOW集)以确定下一步操作是否能够进行。我班选择的是老师给的LR(1)语法分析构造器的设计,即对任意给定的文法G构造LR(1)项目集规范族,其中要实现CLOSURE(I)、GO(I,X)、FIRST集合等。在此基础上,构造了LR(1)分析表。然后对输入的句子进行语法分析,给出接受或出错报告。程序采用文件输入输出方式。其中包括两个输入文件:文法grammar.txt,以及输入串input.txt;两个输出文件:项目集items.t
4、xt和文法的LR(1)分析表action_table.txt。由于语法分析的结果只给出接受或错误报告,比较简单。所以直接在屏幕上输出,也便于用户查看。在具体编写程序过程中,对文法操作的各个功能模块独立成为一个子程序,而对具体输入串的分析则放在main()函数中进行。各个变量及函数的意义和用法我将在叙述程序设计的总体方案中详细给出。程序的总体算法思想来自《编译原理》课程。具体实现由我独立完成。程序用C/C++语言编写。在MicrosoftVisualC++2005环境下调试通过。摘 要语法分析的主要任务是接收词法分析程序识别出来的单词
5、符由某种号串,判断它们是否语言的文法产生,即判断被识别的符号串是否为某语法部分。 LR分析法是给出一种能根据当前分析栈中的符号串(通常以状态表示)和向右顺序查看输入串的K个(K≥0))符号就可唯一地确定分析器的动作是移进还是归约和用哪个产生式归约,因而也就能唯一地确定句柄,所以LR分析过程是一种规范归约过程。 经过分析,我们使用C作为前端开发工具,在分析语法成分时比较方便直观,更便于操作。运行程序的同时不断修正改进程序,直至的到最优源程序。关 键 字语法分析 文法 LR(1)分析 移进 归约AbstractGrammati
6、calanalysisofthemaintaskswastoreceivelexicalanalysisproceduretoidentifythewordsfromawebsite,string,andjudgewhethertheyhaveagrammarofthelanguage,thatis,judgingbytheseriesofsymbolstoidentifywhetheragrammarpart.TheLRanalyticmethodisgivesonekindtobeabletoactaccordingtocurren
7、tanalyzesinstack'sstring(usuallybyconditionexpression)andexaminedinturntowardrighttheinputstringK(K≥0))themarkmaydetermineonlywhichproductionpatternsellingandbuyingofrealesgatewithinthesamefamilyanalyzer'smovementismovestoorthesellingandbuyingofrealesgatewithinthesamefam
8、ilyanduses.Thereforecanalsodeterminethehandleonly,thereforetheLRparsingprocessisonekindofstandardsellin
此文档下载收益归作者所有