资源描述
实验一 表达式翻译器
一、实验目的
构造一个中缀表达式到后缀表达式的翻译器,初步了解递归下降语法分析原理及语法制导翻译的过程。
二、实验内容
表达式文法及其翻译模式定义如下:
expr ® expr + term {print(‘+’)}
| expr - term {print(‘-’)}
| term
term ® term * factor {print(‘*’)}
| term / factor {print(‘/’)}
| factor
factor ® ( expr )
| id {print(id.lexeme)}
| num {print(num.value)}
三、实验指南
1、建议采用VC开发环境。
2、阅读教材2.5节,递归下降的语法分析。
3、一个手工编写的简单词法分析器代码示例:
int lineno = 1, tokenvalue = NONE;
int lexan()
{
int t;
while (1) {
t = getchar();
if (t == ' ' || t == '\t')
;
else if (t == '\n')
lineno++;
else if (isdigit(t)) {
tokenval = t – ‘0’;
while (isdigit(t)) {
tokenval = tokenval * 10 + t – ‘0’;
t = getchar();
}
ungetc(t, stdin);
return NUM;
}
else {
tokenval = NONE;
return t;
}
}
}
展开阅读全文