资源简介
编译原理实验,实现了一个词法分析器生成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
- 上一篇:天融信病毒过滤网关用户手册
- 下一篇:东北大学软件学院计算机网络复习资料
相关资源
- 实验三 消息中间件应用开发:Active
- 基于stm32f103ve的程序——跑马灯实验
- 周立功开发板ProASIC3实验-syn_FIFO代码
- 编译原理实验工具及参考源码(lex&
- dotnet 写字板 实验 源代码 不好请要不
- 类pascal语言编译器(编译原理实验)
- 数学建模实验报告(八个全)
- 数值分析所有实验代码
- 数字逻辑与数字系统实验报告
- 多媒体综合设计报告(附作品)
- ubuntu9.10 可加载内核模块和字符设备驱
- 编译原理课程设计:词法语法编译器
- 操作系统 LRU算法 实验报告 及 程序代
- 分页系统模拟实验 操作系统 课程设
- 中科院 编译原理 习题及解答
- 数据结构实验魔王语言
- 编译原理四元式和逆波兰式
- 迈克尔逊干涉仪的调整与使用实验报
- 8259A中断控制实验
- 操作系统实验——虚存管理实验
- 广工操作系统实验
- 广东工业大学操作系统实验四文件系
- 广东工业大学汇编实验二用表格形式
- 数值计算实验源代码
- 《编译原理》清华大学版中的pl0扩充
- PL/0功能扩充break功能
- 数据结构实验 基于栈的表达式求值
- 编译词法分析器识别关键字常数和符
- 利用启发式搜索解决八数码难题程序
- 武汉理工大学面向对象实验
评论
共有 条评论