资源简介
编译原理课程设计代码 赋值语句的递归下降翻译程序设计编译原理课程设计代码 赋值语句的递归下降翻译程序设计编译原理课程设计代码 赋值语句的递归下降翻译程序设计

代码片段和文件信息
#include
#include
#include
#include
using namespace std;
char prog[80]token[8];
char ch;
int synpq=0k=0kk=0mnsum;
char temp[5];
string rwtab[6]={“begin““if““then““while““do““end“};
void scaner();
string expression();
string factor();
string lrparser();
string statement();
string term();
string yucu();
int str2int( string str);
string int2str( int num);
string newtemp()
{
sprintf(temp“T%d“++k);
return (string)temp;
}
int main(int argcchar ** argv)
{
if(argc<3)
{
cout<<“\t\t本软件在dos环境下使用!\n 使用方法:tzcompile 源文件名 中间代码文件名\n“< exit(1);
}
p=0;
q=0k=0kk=0;
string result=““;
ifstream fin(argv[1]);
ofstream fout(argv[2]);
q=0;
cout< cout<<“开始读取文件“< do
{
ch=fin.get();
prog[p++]=ch;
}while(ch!=‘#‘);
cout<<“文件的内容为:“< cout< p=0;
q=0;
result=lrparser();
cout<<“文件的逆波兰式为:\n“< fout< fin.close();
fout.close();
cout<<“press any key to continue...“;
cin.get();
}
void scaner()
{
for(n=0;n<8;n++) token[n]=NULL;
ch=prog[p++];
while(ch==‘ ‘ || ch==‘\n‘|| ch==‘\t‘)ch=prog[p++];
if((ch>=‘A‘ && ch<=‘Z‘) || (ch>=‘a‘ && ch<=‘z‘))//ch 是字母字符
{
m=0;
do
{
token[m++]=ch;/*ch->token;*/
ch=prog[p++];
}while((ch>=‘A‘ && ch<=‘Z‘) || (ch>=‘a‘ && ch<=‘z‘) || (ch>=‘0‘ && ch<=‘9‘));/*ch为字母字符或数字字符*/
token[m++]=‘\0‘;
p--;//回退一个字符;
syn=10;
for(n=0;n<6;n++)
if(token==rwtab[n])
{
syn=n+1;
break;
}
}
else
{
if(ch>=‘0‘ && ch<=‘9‘/*ch是数字字符*/)
{
sum=0;
m=0;
while(ch>=‘0‘ && ch<=‘9‘/*ch是数字字符*/)
{
sum=sum*10+ch-‘0‘;
ch=prog[p++];
}
p--;//回退一个字符;
syn=11;
}
else
{
switch(ch)
{
case ‘<‘:
m=0;
token[m++]=ch;
ch=prog[p++];
if(ch==‘>‘)
{
syn=21;
token[m++]=ch;
}
else if(ch==‘=‘)
{
syn=22;
token[m++]=ch;
}
else
{
syn=20;
p--;//回退一个字符
}
break;
case ‘>‘:
m=0;
token[m++]=ch;//ch->token;
ch=prog[p++];
if(ch==‘=‘)
{
syn=24;//将>=的种别码->syn;
token[m++]=ch;//ch->token;
}
else
{
syn=23;//将>的种别码->syn;
p--;//回退一个字符
}
break;
case ‘:‘:
m=0;
token[m++]=ch;//ch->token;
//cout<<“when read :ch= “< ch=prog[p++];
if(ch==‘=‘)
{
token[m++]=ch;
//cout<<“when read =token= “< syn=18;//将:=的种别码->syn;
}
else
{
syn=17;//将>的种别码->syn;
p--;//回退一个字符
}
break;
case ‘+‘:
syn=13;
token[0]=ch;
break;
case ‘-‘:
syn=14;
token[0]=ch;
break;
case ‘*‘:
syn=15;
token[0]=ch;
break;
case ‘/‘:
syn=16;
token[0]=ch;
break;
case ‘=‘:
syn=25;
token[0]=ch;
break;
case ‘;‘:
syn=26;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 54 2009-06-19 01:55 代码-飞\test\run.bat
文件 573440 2009-06-19 01:38 代码-飞\test\tzcompile.exe
文件 593920 2009-06-19 01:15 代码-飞\test\tzvm.exe
文件 73 2009-06-19 12:11 代码-飞\test\out.txt
文件 0 2009-06-19 12:12 代码-飞\test\result.txt
文件 76 2009-06-19 01:45 代码-飞\test\code2.txt
文件 36 2009-06-19 01:46 代码-飞\test\code0.txt
文件 65 2009-06-19 02:00 代码-飞\test\code3.txt
文件 40 2009-06-19 01:46 代码-飞\test\code1.txt
文件 3428 2009-06-19 01:15 代码-飞\tzvm.cpp
文件 6055 2009-06-19 01:38 代码-飞\tzcompile.cpp
----------- --------- ---------- ----- ----
1177187 11
- 上一篇:嵌入式系统设计大学教程-电子课件.rar
- 下一篇:电信BOSS系统介绍
相关资源
- FTP课程设计(服务端+客户端)
- 编译原理实验工具及参考源码(lex&
- 类pascal语言编译器(编译原理实验)
- 高频电子线路课程设计报告收音机
- 直流稳压电源的课程设计、安装及调
- EDA课程设计_密码锁
- 单片机课程设计 篮球计分器
- 数据结构课程设计 6 1 彩票系统
- 端口扫描课程设计详细的报告
- 步进电机课程设计(个人设计)
- 校园网络规划与设计课程设计
- 编译原理课程设计:词法语法编译器
-
simuli
nk 课程设计 qpsk - 武汉理工大学 单片机课程设计 16*16点
- 数据库VFP课程设计
- 分页系统模拟实验 操作系统 课程设
- 中科院 编译原理 习题及解答
- 编译原理四元式和逆波兰式
- 模拟段页式虚拟存储管理中地址转换
- 硬件课程设计—流水灯(quartus软件
- 超市收银系统eclipse access大学课程设计
- 航空订票系统_数据结构课程设计
- c 课程设计 职工信息管理系统
- 汇编语言,课程设计,红绿灯
- 机床液压系统课程设计卧式钻床动力
- 课程设计蔬菜大棚自动控制系统,包
- 密码学课程设计:DES加密解密算法的
- 操作系统课程设计完整版
- 磁盘调度算法的模拟实现及对比
- 《编译原理》清华大学版中的pl0扩充
评论
共有 条评论