资源简介
设计内容及要求:设计一个语法制导翻译器,将算术表达式翻译成四元式。要求:
先确定一个定义算术表达式的文法,为其设计一个语法分析程序,为每条产生式配备一个语义子程序,按照一遍扫描的语法制导翻译方法,实现翻译程序。对用户输入的任意一个正确的算术表达式,程序将其转换成四元式输出(可按一定格式输出到指定文件中)。
代码片段和文件信息
#include
#include
#include
char w;
int j=1;
struct TOKEN
{
char t;
int i;
} ;
struct TOKEN word sem[10];
int i_sem;
struct QT
{
char w;
struct TOKEN word1;
struct TOKEN word2;
struct TOKEN temp;
} ;
char exp[50];
int i=0;
struct QT qt[30];
int q=0;
int D();
int E();
int T();
int F();
void next();
void newt();
void quat(char);
int main()
{
printf(“please input your expression: “);
scanf(“ %s“exp);
next();
D();
if (w==‘\0‘)
{
printf(“\n“);
for (i=0;i {
printf(“ (%d) “i+1);
if(qt[i].w!=‘=‘){
printf(“ ( %c“qt[i].w);
if (qt[i].word1.t!=‘t‘)
printf(“ %c“qt[i].word1.t);
else
printf(“ %c%d“qt[i].word1.tqt[i].word1.i);
if (qt[i].word2.t!=‘t‘)
printf(“ %c“qt[i].word2.t);
else
printf(“ %c%d“qt[i].word2.tqt[i].word2.i);
printf(“ %c%d )\n“qt[i].temp.tqt[i].temp.i);
}
else
{
printf(“ ( %c“qt[i].w);
printf(“ %c%d “qt[i-1].temp.tqt[i-1].temp.i);
printf(“ _“);
printf(“ %c)“qt[
相关资源
- 北邮-编译原理-词法分析
- 现代编译原理-C语言描述
- 编译原理实验报告+代码+使用说明
- 编译原理课程设计-C语言子集编译器
- 赋值语句翻译c语言实现四元式
- 编译原理用C++消除左递归
- 编译原理简易C编译器
- 实现语法分析器-编译原理
- 编译原理 LR分析器 c++代码
- 设计并实现TINYC语言的扫描程序TINYC
- LL(1)文法分析全过程(FIRST/FLLOW/S
- 编译原理 LR0项目集规范族的构造 L
- 山东大学编译原理实验源代码c++版
- 简单函数绘图语言的解释器
- Lex和Yacc从入门到精通.pdf
- 简易词法分析器——基于C语言
- LL(1)文法的实现-mfc-编译原理学习
- 词法分析代码内有报告
- 编译原理LL1文法的mfc实现含消除左递
- 编译原理词法分析实验
- pl/0语言的编译器
- C++实现编译原理自动机、LL1文法、及
- 编译原理语义分析程序 c++实现
- 编译原理 课程设计 DAG 报告+源码C++版
- 编译原理课程设计----语法分析器(
- 编译原理简单的编译器源码
- C语言实现一个编译器-编译原理南开大
- 编译原理课程实验报告词法分析器及
- 编译原理与技术李文生:LR分析法C+
- C语言简化编译器前端 编译原理 LR1
评论
共有 条评论