急急急,编译原理

急急急,编译原理,第1张

using namespace std

struct BiNode

{

char data

BiNode *lchild, *rchild

}

typedef BiNode *BiTree

int CreateBiTree(BiTree &T, const char *s1, const char *s2, int len)

{

if (len<=0)

{

T = NULL

return 1

}

else

{

T = new BiNode

T->data = *s1

int i

for ( i=0i<leni++) if (s2[i]==*s1) break

CreateBiTree(T->lchild, s1+1, s2, i)

CreateBiTree(T->rchild, s1+i+1, s2+i+1, len-(i+1))

}

return 1

}

int DestroyBiTree(BiTree &T)

{

if (T==NULL) return 1

DestroyBiTree(T->毁桥滑lchild)

DestroyBiTree(T->rchild)

delete T

T = NULL

return 1

}

int ATraverse(BiTree &T)

{

if (T==NULL) return 1

ATraverse(T->lchild)

ATraverse(T->rchild)

cout<<T->data

return 1

}

main()

{

char a[2000],b[2000]

while(cin>>a>>b)

{

BiTree T

int count=0

int n

for(n=0a[n]!='\0'n++)

CreateBiTree(T,a,b,n)

ATraverse(T)

cout<<纤腊" "

cout<<消手endl

DestroyBiTree(T)

1、逆波兰表示

逆波兰表示又称后缀表示法,它是最简单的一种中间代码表示形式,早在编译程序出现之前,它就用于表示算术表达式。

2、四元式

四元式也是一种比较普遍采用的中间代码形式,其形式为:(OP,ARG1,ARG2,RESULT)。其中:OP为运算符,ARG1为第一运算对象,ARG2为第二运算对象,RESULT为运算结果。

3、三元式

三元式表示是与四元式类似的一种表示法,所不同的仅是三元式中没有表示运算结果的部分,凡要涉及到运算结果的均用三元式的位置或序号来代替。

三元式的形式为:(OP,ARG1,ARG2),其中,OP为运算符,ARG1为第一运算对象,ARG2为第二运算对象旅搭。运算对象ARG1,ARG2可以是变量名,也可以是三元式的编号。

扩展资料:

中间代码相关延伸:代码优化-优化所涉及的源程序的范围

局部优化 — 基本块内优化;

循环优化 — 隐式、显式循环体内优化;

全局优化 — 一个源程序范围内优化;

优化相对于编译逻辑功能实现的阶段,中间代码级 — 目标代码生成前的优化;目标代码级 — 目标代码生成后的优化。

参考资料来源:百度百科-代码优化

参考枝旅资料来猛镇凳源:百度百科-中间语言

你只要找到书上的关于for的文法和属性文法,然后稍微简化一下孝橡洞,比如布尔表达式弄成一个就好了,先不管属性文法,只如袜要看文巧枯法,排出优先关系就可以用自底向上的方法分析了,在规约的过程中执行属性文法,也就是语义动作就可以了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12540815.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存