资源简介
编译原理实验,实现了一个词法分析器生成Token序列。中间代码、四元式生成。含有实验报告。
代码片段和文件信息
#include
#include
#include
#include
#include
using namespace std;
void printMenu();//打印菜单这个函数的声明
/******************************************实验一所用函数*********************************************************/
char keywords[30][12]={“program““begin““end““var““while““do““repeat“
“until““for““to““if““then““else““;“ “:“ “(“ “)“ ““
“:=“ “+“ “-“ “*“ “/“ “>“ “>=“ “==“ “<“ “<=“};
int num_key=28;
int aut[11][8]={ 0 0 0 0 0 0 0 0
0 2 0 0 0 8 915
0 2 3 511 0 011
0 4 0 0 0 0 0 0
0 4 0 511 0 011
0 7 0 0 6 0 0 0
0 7 0 0 0 0 0 0
0 7 0 011 0 011
0 8 0 0 0 8 012
0 0 0 0 0 01014
0 0 0 0 0 0 013};
char ID[50][12];
int C[20];
int num_ID=0num_C=0;
struct token
{ int code;
int value;
}; //Token结构
struct token tok[100]; //Token数组
int i_token=0num_token=0; //Token计数器和Token个数
char strTOKEN[15]; //当前单词
int i_str; //当前单词指针
int npmet; //尾数值,指数值,小数位数,指数符号,类型
double num; //常数值
char w[50]; //源程序缓冲区
int i; //源程序缓冲区指针当前字符为w[i]
struct map //当前字符到状态转换矩阵列标记的映射
{
char str[50];
int col;
};
struct map col1[4]={{“0123456789“1}{“.“2}{“Ee“3}{“+-“4}}; //数字
struct map col2[2]={{“abcdefghijklmnopqrstuvwxyz“5}{“0123456789“1}}; //关键字或标识符
struct map col3[1]={{“;:()+-*/=><“6}}; //界符
struct map *ptr;
int num_map;
void act(int s);
int find(int schar ch);
int InsertConst(double num);
int Reserve(char *str);
int InsertID(char *str);
//实验一中函数的实现
void act(int s)
{
int code;
switch (s)
{
case 1:n=0;m=0;p=0;t=0;e=1;num=0;i_str=0;
strTOKEN[i_str]=‘\0‘; //其它变量初始化
break;
case 2:n=10*n+w[i]-48;
break;
case 3:t=1;
break;
case 4:n=10*n+w[i]-48; m++;
break;
case 5:t=1;
break;
case 6:if (w[i]==‘-‘) e=-1;
break;
case 7:p=10*p+w[i]-48;
break;
case 8:strTOKEN[i_str++]=w[i]; //将ch中的符号拼接到strTOKEN的尾部;
break;
case 9:strTOKEN[i_str++]=w[i]; //将ch中的符号拼接到strTOKEN的尾部;
break;
case 10:strTOKEN[i_str++]=w[i]; //将ch中的符号拼接到strTOKEN的尾部;
break;
case 11:num=n*pow(10.0e*p-m); //计算常数值
tok[i_token].code=2; tok[i_token++].value=InsertConst(num); //生成常数Token
num_token++;
break;
case 12:strTOKEN[i_str]=‘\0‘;
code=Reserve(strTOKEN); //查关键字表
if (code)
{
tok[i_token].code=code; tok[i_token++].value=0;
} //生成关键字Token
else
{ tok[i_token].co
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 134 2011-10-30 15:42 编译原理实验\readme.txt
文件 88064 2011-10-28 14:42 编译原理实验\SimpleComplier\Debug\SimpleComplier.exe
文件 604764 2011-10-28 14:42 编译原理实验\SimpleComplier\Debug\SimpleComplier.ilk
文件 887808 2011-10-28 14:42 编译原理实验\SimpleComplier\Debug\SimpleComplier.pdb
文件 73 2011-10-28 13:05 编译原理实验\SimpleComplier\SimpleComplier\code.txt
文件 9844 2011-10-28 14:42 编译原理实验\SimpleComplier\SimpleComplier\Debug\BuildLog.htm
文件 67 2011-10-28 14:42 编译原理实验\SimpleComplier\SimpleComplier\Debug\mt.dep
文件 663 2011-10-28 12:56 编译原理实验\SimpleComplier\SimpleComplier\Debug\SimpleComplier.exe.em
文件 728 2011-10-28 12:56 编译原理实验\SimpleComplier\SimpleComplier\Debug\SimpleComplier.exe.em
文件 621 2011-10-28 14:42 编译原理实验\SimpleComplier\SimpleComplier\Debug\SimpleComplier.exe.intermediate.manifest
文件 227033 2011-10-28 14:42 编译原理实验\SimpleComplier\SimpleComplier\Debug\simpleComplier.obj
文件 199680 2011-10-28 14:42 编译原理实验\SimpleComplier\SimpleComplier\Debug\vc90.idb
文件 241664 2011-10-28 14:42 编译原理实验\SimpleComplier\SimpleComplier\Debug\vc90.pdb
文件 10006 2011-10-28 14:42 编译原理实验\SimpleComplier\SimpleComplier\simpleComplier.cpp
文件 4000 2011-10-28 13:06 编译原理实验\SimpleComplier\SimpleComplier\SimpleComplier.vcproj
文件 1427 2011-10-28 15:53 编译原理实验\SimpleComplier\SimpleComplier\SimpleComplier.vcproj.NEU-C631077854A.wanyao.user
文件 2313216 2011-10-28 15:53 编译原理实验\SimpleComplier\SimpleComplier.ncb
文件 908 2011-10-28 12:55 编译原理实验\SimpleComplier\SimpleComplier.sln
..A..H. 13824 2011-10-28 15:53 编译原理实验\SimpleComplier\SimpleComplier.suo
文件 243712 2011-11-01 15:30 编译原理实验\编译实验报告最终版.doc
目录 0 2011-10-30 15:39 编译原理实验\SimpleComplier\SimpleComplier\Debug
目录 0 2011-10-30 15:39 编译原理实验\SimpleComplier\Debug
目录 0 2011-10-30 15:39 编译原理实验\SimpleComplier\SimpleComplier
目录 0 2011-10-30 15:39 编译原理实验\SimpleComplier
目录 0 2011-11-01 15:30 编译原理实验
----------- --------- ---------- ----- ----
4848236 25
- 上一篇:天融信病毒过滤网关用户手册
- 下一篇:东北大学软件学院计算机网络复习资料
相关资源
- 编译原理课程设计--编译器
- 编译课设-词法分析,语法分析.zip
- 网络ns2仿真实验分析(RED、丢包率、
- 简易编译器,实现词法分析,语法分
- Fisher线性判别分析实验报告
- 实验室设备管理系统+软件工程
- tiny词法分析,语法分析,语义分析,
- 编译原理 算符优先分析程序
- 大数据实验室建设方案
- FSK传输实验 通信原理实验报告
- 湘潭大学人工智能实验采用遗传算法
- 基于ARM处理器的烟雾报警控制系统实
- 编译原理-非递归预测实验-C代码实现
- 编译原理实验
- 编译原理自顶向下语法分析源代码+实
- 学生选课系统实验报告
- 编译原理布尔表达式计算器
- LR语法分析器
- 实验室设备管理系统-文档输出集合
- 太原理工大学系统分析与设计实验报
- 0-1背包问题动态规划报告.doc
- 时间序列的分析——模型的识别与预
- 算法分析与设计实验报告代码及截图
- 数据结构排序实验报告
- 编译原理语法制导翻译器 课程设计
- 数据结构实验报告 一元多项式运算
- 编译原理——语法分析器
- RSA算法实验报告验报告验报告
- 编译原理实验指导书
- 第四次上机—自下而上的语法分析
评论
共有 条评论