计算机编译原理实验,计算机编译原理实验生成四元式序列.doc

文档介绍:

西北师范大学计算机科学与工程学院学生实验报告

学号

专业

计算机科学与技术

姓名

课程名称

计算机编译原理

班级

实验名称

生成四元式序列

课程类型

专业课

实验目的:

编程实现生成四元式的语法分析程序,掌握的结合语法分析实现翻译方案的思路和方法。

实验内容:

实验输入:输入任意的赋值语句表达式;

实验输出:相应的四元式序列。

测试实例:

输入表达式

1.a = ( ( b + c ) * d – e / f ) * 2

2.q =( ( x * x + w ) - (y / y - e ) ) * r

实验代码:

#include

#include

#define MAX 100

void SET_Mul_Div(int i,int m);

void SET_Add_Sub(int j,int m);

void print();

int m=0;

int count=0;

char tempvar='A';

int temp;

char string[MAX]; //用于存放表达式

int main()

{

int p[MAX];

char ch;

int c=-1,q=0;

printf("请输入赋值语句:\n");

while((ch = getchar())!='\n')

{

string[m++]=ch;

if(ch=='='||ch=='+'||ch=='-'||ch=='*'||ch=='/')

count++;

else if(ch=='(')

{

p[++c]=m-1;

}

else if(ch==')')

{

q=m-1;

SET_Mul_Div(p[c],q); //从左括号处理到又括号

SET_Add_Sub(p[c],q);

temp=(int)tempvar-1;

tempvar=(char)temp;

string[p[c]]=string[m-1]=tempvar;

c--;

temp=(int)tempvar+1;

tempvar=(char)temp;

}

}

/********调用生成四元式的函数********/

print();

/*********判断是否成功**********/

if(count==0)

printf("essful!\n");

else

printf("Wrong!");

printf("\n");

system("pause");

}

void SET_Mul_Div(int i,int m) //处理乘除运算

{

for(i++;i<=m-1;i++)

{

if(string[i]=='*'||string[i]=='/')

{

printf("(%c %c %c %c)\n",string[i],string[i-1],string[i+1],

tempvar);

string[i-1]=string[i]=string[i+1]=tempv

内容来自淘豆网www.taodocs.com转载请标明出处.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值