编译实验报告ll1文法java版(代码运行)

编译实验报告ll1文法java版(代码运行)

ID:38945607

大小:206.51 KB

页数:17页

时间:2019-06-21

编译实验报告ll1文法java版(代码运行)_第1页
编译实验报告ll1文法java版(代码运行)_第2页
编译实验报告ll1文法java版(代码运行)_第3页
编译实验报告ll1文法java版(代码运行)_第4页
编译实验报告ll1文法java版(代码运行)_第5页
资源描述:

《编译实验报告ll1文法java版(代码运行)》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、1、实验目的通过设计、编写、调试LL(1)语法分析程序,加深对LL(1)语法分析器构造原理的理解,增强对应用LL(1)语法分析器对语句进行语法分析的认识,且了解其语法分析过程。2、实验要求1)、分析和给出LL(1)语法分析器构造的算法思想、步骤、程序结构。2)、用自己熟悉的计算机语言编写符合要求的LL(1)语法分析器。3)、采用LL(1)语法分析器对教材上的几个实例,判别其是否为LL(1)文法。4)、对相应的LL(1)文法,设计几个输入符号串,然后应用所构造的LL(1)语法分析器进行分析,给出分析过程。3、LL(1)语法分析器的构造思想3.1LL(1)语法分析器原理一个上下无关的文

2、法是LL(1)文法的充要条件时,对每个非终结符A的两个不同产生式,A-αA-β满足SELECT(A-α)∩SELECT(A-β)φ,其中α和β不同时推出ξ。如果某个文法满足上述条件,称该文法为LL(1)文法。LL(1)分析法是一种采用确定的自顶向下的语法分析技术,其含义是:第一个L表明自顶向下分析是从左向右扫描输入串,第二个L表明分析过程中将用最左推导,1表明只需向右看一个符号便可以决定如何推导,即便选择哪个产生式规则进行推导。语法分析程序的流程图如图所示。开始读入文法有效?是LL(1)文法?结束判断句型报错语法分析程序流程图3.2求出能推出空的终结符1)建立一个以VN的个数为上限

3、的一维数组X[],数组元素为VN,对应每个VN有一标志位;(该标志位记录能否推出ε,其值为:“未定”、“是”、“否”)2)置初值——将数组X[]中对应的每一个VN的标记置为“未定”;3)删除所有右部含VT的产生式,若某一VN为左部的产生式全被删除,则将数组中对应的标记值改为“否”;4)若某一的某产生式右部为ε,则数组中对应的标记值为“是”,并删除该VN为左部的所有产生式;5)扫描产生式右部的每个VN,若该VN在数组中对应标志为“是”,则删去该VN,转6;若该VN在数组中对应标志为“否”,则转7;6)若该VN删去后,所在产生式右部为空,则该产生式左部的VN在数组中对应的标志改为“是”

4、,并删去该VN为左部的所有产生式;否则转8;7)删去该产生式,若该产生式左部在剩余的产生式中是唯一的左部(即A→α…,再无其它“A→β”的产生式),则把书组中该VN对应的标志改为“否”;8)返回5,直至扫描完一遍文法的产生式后,数组中的标志不再改变。3.33FIRST集的确定给定一个由终结符号和非终结符号组成的字符串E,FIRST(E)是从E可以推导出的任意字符串中的开头是终结符组成的集合。求First(x)的算法:1)若x∈VT,则first(x)={x}2)若X∈VN,且有产生式Xa…,a∈VT,则a∈first(X)3)若X∈VN,xε,则ε∈first(X)4)若X∈VN,

5、且有产生式XY1Y2…Yn,其中Y1,Y2,…Yn都∈VN当Y1,Y2,…Yi-1都能推导出ε时(1<=i<=n),则first(Y1)-{ε}∈first(X)first(Y2)-{ε}∈first(X)…3.44FOLLOW集的确定first(Yi-1)-{ε}∈first(X)当Y1,Y2,…Yn都能推导出ε时,则first(X)=(first(Y1)-{ε})∪(first(Y2)-{ε})∪……∪(first(Yn)-{ε})∪{ε}设G=(VT,VN,S,P)是上下文无关文法,A∈VN,S是开始符号。FOLLOW(A)={a

6、SμAβ且a∈FIRST(β),μ∈VT*

7、,β∈V+}若SμAβ,且βε,则规定#∈FOLLOW(A),#作为输入串的结束符,或为句子括号,FOLLOW(A)={a

8、S…Aa…,a∈VT}若S…A,则规定#∈FOLLOW(A)1)设S为开始符号,把{#}加入Follow(S)中(#为句子括号)2)若A→αBβ,则把First(β)–{ε}加入Follow(B)中,如果βε,则把Follow(A)也加入Follow(B)中。3)反复2,直到每个VN的Follow集不再增大为止。3.35SELECT集的确定给定上下文无关文法的产生式A→α,A∈VN,α∈V*,若αε,则SELECT(A→α)=First(α)若αε,则SELE

9、CT(A→α)=(First(α)-{ε})∪Follow(A)3.6逻辑结构X1…Xn-1X1#一个LL(1)分析器由一张分析表、一个分析栈和一个总控程序组成。其逻辑结构如图1所式。总控程序a1a2a3…ai…an#分析表M图1LL(1)分析器的逻辑结构3.7句子的判定左部相同的产生式的SELECT集的交集均为空。4、程序代码packagebase;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*

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

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

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