ADDI(整数加)、ADDF(浮点数加)、SUBI、SUBF、MULTI、MULTF、DIVI、DIVF、MOD
AND、OR、EQ、NE、GT、GE、LT、LE
READI,READF,FLOAT,
如何创建四元式?语法制导技术在处理和规则相关联的任务中有着重要的应用
INIT 添加到S开始头部——sum=0;
则有: S-> #Init# AB
A-> aA│ b #Add#
B-> b #Add# B│c #Out#
其中:
Init:m = 0;
Add : m++ ;
Out :print(m);
起始符S首先进入符号栈,然后使用S的右侧代替S得到#init# AB
,执行#init#
使得m=0
;执行完之后剩下AB#
,不能与输入流中的字符消去;继续将A使用aA代替得到aAB
,将输入流中的a和符号栈中的a匹配掉得到AB
;没有匹配的,继续使用文法的右部进行替换,这次选择替换的指令是A->b# Add#
,将b匹配上,然后剩下# Add# B
,执Add,然后剩下B#
,后面和前面的运行步骤相同,最后剩下#
则证明成功实现。
匹配过程中仍然按照原来的规则选择语法压入符号栈,在进行匹配之前直接执行插入的相关操作,然后继续进行匹配
四元式当前的表示形式是便于直接读写的方式,而实际上存储在x和y的不是x和y的符号,而是一个指向xy在符号表中位置的指针。
将语义信息(种类信息,类型信息,抽象地址)写在四元式中,但是如果全部写入会出现大量的冗余信息,所以最好的一种方式是指向对应存在语义信息的符号表中的指针,需要信息的时候直接通过指针在符号表中提取出所需信息。
具体表达式的四元式生成的语义程序写法:
自底向上只能添加在末尾,在归约的时候才能执行添加操作。
Gen表示生成四元式的函数
将栈顶元素按照四元式进行计算之后将栈顶元素取出计算将结果压栈
首先画出其语法树,然后使用自底向上的方法看能否生成相应的四元式,过程如下:
本文发布于:2024-01-31 16:39:02,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170669034229910.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |