本次实验实现了一个简易的C_Minus编译器的部分功能(词法分析,语法分析) 词法分析使用了lex和手写两种方式分别实现 语法分析使用了递归下降,LL(1),SLR(1),yacc四种方式分别实现 部分实验结果如下(全部实验结果请参照实验报告及相应的文件): 一种正确输入:
int x[10];
int minloc (int a[], int low, int high){
int i;
int x;
int k;
k = low;
x = a[low];
i = low + 1;
while(i < high){
if(a[i] < x){
x = a[i];
k = i;
}
i = i + 1;
}
return k;
}
void main(void){
output(minloc(x, 4, 9));
}
三种树输出格式如下:
一种错误的输入源程序如下:
int x[10];
int minloc (int a[], int low, int high){
int i;
int x;
int k;
k = low;
x = a[low;
i = low + 1;
while(i < high){
if(a[] < x){
x = a[i];
k = i;
}
i = i + 1;
}
return k;
}
void main(void){
output(minloc(x, 4, 9));
}
设计思路和方法详见编译原理课程设计报告: