资源简介
编译原理课程设计代码 赋值语句的递归下降翻译程序设计编译原理课程设计代码 赋值语句的递归下降翻译程序设计编译原理课程设计代码 赋值语句的递归下降翻译程序设计
代码片段和文件信息
#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系统介绍
相关资源
- 网络工程与组网课程设计
- vfp 课程设计-仓库管理系统
- 广工数据库课程设计全
- 电子技术课程设计报告—数字式电阻
- 数据结构课程设计——统计学生成绩
- 软件工程课程设计 WEB的网上书店系统
- 酒店管理系统 简单 很适合做课程设计
- 数字电子技术课程设计 医院病房呼叫
- 机械制造工艺学课程设计指导书及习
- 南阳理工学院Linux聊天室课程设计
- 药品管理信息系统信息管理系统课程
- 编译原理 词法语法分析器
- 软件测试课程设计报告_网上购物系统
- 软件工程课程设计-学生成绩管理系统
- 《编译原理》课后习题答案 清华大学
- 企业工资管理系统课程设计
- Web课程设计
- 数据库课程设计-运动会成绩管理系统
- 在线考试系统(课程设计)源码
- UML课程设计 用例图、顺序图等的画法
- 计算机网络课程设计 校园网规划
- yacc与lex安装
- 机械原理课程设计包装线生产设计
- 转载:二级斜齿圆柱减速器课程设计
- 两个密钥的三重DES实现系统-密码学课
- LR(0)文法分析演示程序
- Powerbuilder超市管理系统课程设计
- 模电发射机、接收机课程设计
- 山东科技大学软件设计与体系结构课
- web课程设计 个人网站制作
评论
共有 条评论