1 / 8
文档名称:

编译原理语法分析程序设计分析法.doc

格式:doc   大小:83KB   页数:8页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

编译原理语法分析程序设计分析法.doc

上传人:梅花书斋 2021/12/7 文件大小:83 KB

下载得到文件列表

编译原理语法分析程序设计分析法.doc

相关文档

文档介绍

文档介绍:: .
1. 实验目:掌握LL(1)分析法基本原理,掌握LL(1)分析表构造办法,掌握LL(1) 驱动程序构造办法。
:实现LR分析法(P147,)或预测分析法(P121,)。
:一台配备为1GXP操作系统PC机;Visual C++.
:编译程序语法分析器以单词符号作为输入,分析单词符号串与否形成符合语 法规则语法单位,如表达式、赋值、循环等,最后看与否构成一种符合规定程序,按该语言使用语法规则分析检查每条语句与否有对的逻辑构造,程序是最后一种语法单位。编译程序语法规则可用上下文无关文法来刻画。
语法分析办法分为两种:自上而下分析法和自下而上分析法。自上而下就是从文法开始符号出发,向下推导,推出句子。而自下而上分析法采用是移进归约法,基本思想是:用一种寄存符号先进后出栈,把输入符号一种一种地移进栈里,当栈顶形成某个产生式一种候选式时,即把栈顶这一某些归约成该产生式左邻符号。
自顶向下带递归语法分析:1、一方面对因此生成式消除左递归、提取公共左因子
2、在源程序里建立一种字符串数组,将所有生成式都存在这个数组中。
3、给每个非终结符写一种带递归匹配函数,其中起始符函数写在main函数里。 这些函数对生成式右边从左向右扫描,若是终结符直接进行匹配,匹配失败,则调用出错函数。如果是非终结符则调用相应非终结符函数。
4、对输入符号串进行扫描,从起始符生成式开始。如果匹配成功某个非终结符生成式右边首个终结符,则将这个生成式输出。匹配过程中,应当浮现非终结符没有浮现,则出错解决。
:相应源程序代码:
#include <>
#include <>
#include <stack>
using namespace std;
struct Node1
{ char vn;
char vt;
char s[10];
}MAP[20]; //存储分析预测表每个位置相应终结符,非终结符,产生式
int k; //用R代表E',W代表T',e代表空
char start='E';
int len=8;
charG[10][10]={"E->TR","R->+TR","R->e","T->FW","W->*FW","W->e","F->(E)","F->i"};//存储文法中产生式
char VN[6]={'E','R','T','W','F'}; //存储非终结符
char VT[6]={'i','+','*','(',')','#'}; //存储终结符
char SELECT[10][10]={"(,i","+","),#","(,i","*","+,),#","(","i"};//存储文法中每个产生式相应SELECT集
char Right[10][8]={"->