中间代码生成程序三地址Word格式文档下载.docx
- 文档编号:22003749
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:8
- 大小:15.46KB
中间代码生成程序三地址Word格式文档下载.docx
《中间代码生成程序三地址Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《中间代码生成程序三地址Word格式文档下载.docx(8页珍藏版)》请在冰豆网上搜索。
r'
}
};
charsnum[12][6]={//数字表
{5,1,1,4,2,1},
{3,6,5,3,2,0},
{2,2,7,2,2,2},
{4,4,4,4,4,4},
{6,6,6,6,6,6},
{3,6,5,3,11,4},
{1,1,7,1,1,1},
{3,3,3,3,3,3},
{5,5,5,5,5,5}
intgo2[12][3]={//goto表
{1,2,3},
{0,0,0},
{8,2,3},
{0,9,3},
{0,0,10},
{0,0,0}
voidaction(inti,char*&
a,char&
how,int&
num,char&
A,int&
b,int&
k)//action函数[i,a]
{
intj;
//,r;
chars1,s2,s3;
charv;
switch(*a)
{
case'
i'
:
//case'
d'
j=0;
break;
+'
j=1;
*'
j=2;
('
j=3;
)'
j=4;
#'
j=5;
default:
j=-1;
}
if(j!
=-1)
how=sym[i][j];
num=snum[i][j];
if(how=='
)
switch(num)
{
case1:
A='
E'
b=3;
cout<
<
"
按E->
E1+T规约"
endl;
s1=symbol2.top();
symbol2.pop();
s2=symbol2.top();
s3=symbol2.top();
symbol2.push(k+48);
cout<
t"
k<
="
(v=(isdigit(s3))?
'
t'
'
)<
s3<
s2;
cout<
(v=(isdigit(s1))?
s1<
k++;
break;
case2:
b=1;
T规约"
case3:
T'
按T->
T1*F规约"
s1=symbol2.top();
case4:
F规约"
case5:
F'
按F->
(E)规约"
case6:
id规约"
}
intgo(intt,charA)//goto[t,A]
switch(A)
returngo2[t][0];
returngo2[t][1];
returngo2[t][2];
voiderror(inti,intj,char*&
a)//error显示函数
error"
switch(j)
//期望输入id或左括号,但是碰到+,*,或$,就假设已经输入id了,转到状态5
//state.push(5);
//symbol.push('
);
//必须有这个,如果假设输入id的话,符号栈里必须有....
缺少运算对象digit"
//从输入中删除右括号
//a++;
不配对的右括号"
//期望碰到+,但是输入id或左括号,假设已经输入算符+,转到状态6
//state.push(6);
缺少运算符"
//缺少右括号,假设已经输入右括号,转到状态11
//state.push(11);
缺少右括号"
*号无效,应该输入+号!
//case6:
//a++;
intmain()
ints;
char*a;
charhow;
intnum;
intb;
charA;
intk=1;
charq;
while
(1)
cin>
>
sen;
a=sen;
state.push(0);
//先输入0状态
while(*a!
='
\0'
b=0;
num=0;
how='
;
A='
s=state.top();
q=*a;
if(isalpha(*a))
{
*a='
}
action(s,a,how,num,A,b,k);
)//移进
移进"
symbol.push(*a);
state.push(num);
if(q!
&
q!
{
symbol2.push(q);
}
a++;
elseif(how=='
)//规约
for(inti=0;
i<
b;
i++)
if(!
state.empty())
state.pop();
symbol.empty())
symbol.pop();
intt=state.top();
symbol.push(A);
state.push(go(t,A));
)//接受
cout<
成功接受"
else
error(s,num,a);
//错误显示
输入有误,重新输入!
break;
}
return0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中间 代码 生成 程序 地址