好文档 - 专业文书写作范文服务资料分享网站

语义分析实验报告

天下 分享 时间: 加入收藏 我要投稿 点赞

p1.s; }

P→ε {P.s=P.i}

F→( E ) { F.place := E.place} F→id {F.place:=position (id)} V→id {V.place:=position(id)}

3、实现原理

基于翻译模式的自上而下语义处理(翻译)

1. 对每个非终结符 A,构造一个函数,以 A 的每个继承属性为形参,以A的

综合属性为返回值(若有多个综合属性,可返回记录类型的值) 。如同预测分析程序的构造,该函数代码的流程是根据当前的输入符号来决定调用哪个产生式。

2. 与每个产生式相关的代码根据产生式右端的终结符,非终结符,和语义规则

集(语义动作),依从左到右的次序完成下列工作:

(1)

对终结符 X,保存其综合属性x的值至专为 X.x 而声明的变量;

然后调用匹配终结符(match_token) 和取下一输入符号(next_token)的函数; (2)

对非终结符 B,利用相应于 B 的函数调用产生赋值语句

c:=B(b1, b2, …, bk),其中变量 b1, b2, …, bk 对应 B的各继承属性,变量c对应B的综合属性 (3)

对语义规则集,直接copy其中每一语义规则(动作)来产生代

码,只是将对属性的访问替换为对相应变量的访问。

4、文法的属性分析 文法符号 start D B L A S E 属性 无 无 无 L.type A.type 无 E.place 综合或继承 继承 继承 综合 页脚内容

含义 类型 类型 指向变量或临时变量的指针(用整数10

R T P F V

R.i R.s T.place P.i P.s F.place V.place 继承 综合 继承 继承 综合 综合 综合 实现) 同上 同上 同上 同上 同上 同上 同上 5、过程设计

int getsym(); //读一个单词

void enter(enum symbol type); //登记符号表 void init();

int position(char* idt); //查询符号表用函数,返回在符号表中位置 int gen(enum symbol op, int arg1, int agr2,int result ); //生成四元式 void newtemp()//申请临时变量 void start(); void D(); void B();

void L(enum symbol type); void A(enum symbol type); void S(); void H(); int E(); int R(int Ri); int T(); int P(int pi); int F(); int V();

页脚内容

10

语义分析实验报告

语p1.s;}P→ε{P.s=P.i}F→(E){F.place:=E.place}F→id{F.place:=position(id)}V→id{V.place:=position(id)}3、实现原理基于翻译模式的自上而下语义处理(翻译)
推荐度:
点击下载文档文档为doc格式
5xt433cs224qfr01784a35m4y31es801582
领取福利

微信扫码领取福利

微信扫码分享