资源简介
plo编译器 c语言 含测试实例 以及实验报告 适合初学者下载

代码片段和文件信息
// Grammar.cpp: implementation of the Grammar class.
//
//////////////////////////////////////////////////////////////////////
#include
#include
#include
#include
#include “Word.h“
#include “Table.h“
#include “pcode.h“
#include “Grammar.h“
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
#define $program 1
#define $const 2
#define $var 3
#define $procedure 4
#define $begin 5
#define $if 6
#define $while 7
#define $call 8
#define $read 9
#define $write 10
#define $end 11
#define $then 12
#define $else 13
#define $do 14
#define $odd 15
#define $lop 16 // → =|<>|<|<=|>|>=
#define $aop 17 // → +|-
#define $mop 18 // → *|/
#define $id 19 // → l{l|d}
#define $integer 20 // → d{d}
#define $ 21 // ;
#define $equal 22 // :=
#define $and 23 //
#define $leftbrack 24 //(
#define $rightbrack 25 //)
//using namespace std;
Grammar::Grammar(Simpsc *p)
{
pl=p;
}
bool Grammar::Analysis(Word *Token)
{
lev=-1;
i=0;
if(!ProceProg(Token))
{
cout<<“出现语法错误,分析中断,请检查程序“< return false;
}
else
cout<<“分析成功,该程序无语法错误“< return true;
}
char *Grammar::ReturnName(Word *Token)
{
// char name[30];
// strcpy(namethis->Token[i].ReturnCont());
// return name;
return Token[i].ReturnCont();
}
void Grammar::ConstVar(Word *Token)
{
Table *tb=pl->ChaTable;
tb->Enter(constantToken);
}
void Grammar::ConstDecla(Word *Token)
{
char con[16];
int num;
Table *tb=pl->ChaTable;
strcpy(conToken[i].ReturnCont());
num=atoi(con);
tb->GetVal(num);
}
void Grammar::VarDecla(Word *Token)
{
Table *tb=pl->ChaTable;
tb->Enter(variableToken);
dx[lev]++;
}
bool Grammar::ProceFactor(Word *Token) //→||()
{
int pnum;
char con[16];
Table *tb=pl->ChaTable;
pcode *cd=pl->CodeList;
if(Token[i].ReturnWType()==$id)
{
p=tb->Position(Token[i].ReturnCont());
if(p==0)
{
Token[i].ReturnXY(bxexy);
cout<<“未申明的标识符!!第“< return false;
}
else
{
switch(tb->table[p].kind)
{
case constant:
cd->Gen(LIT0tb->table[p].val);
break;
case variable:
cd->Gen(LODlev-tb->table[p].leveltb->table[p].adr);
break;
case procedure:
Token[i].ReturnXY(bxexy);
cout<<“错误的标识符,函数名不可用于表达式:第“< return false;
break;
}
}
i++;
}
else if(Token[i].ReturnWType()==$integer)
{
strcpy(conToken[i].ReturnCont());
num=atoi(con);
cd->Gen(LIT0num);
i++;
}
else if(Token[i].ReturnWType()==$leftbrack)
{
i++;
if(!ProceExp(Token))
return false;
if(Token[i].ReturnWType()==$rightbrack)
i++;
else
{
Token[i].ReturnXY(bxexy);
cout<
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2008-07-22 10:21 compile\
文件 5027 2008-01-17 18:32 compile\compile.dsp
文件 539 2008-01-03 14:37 compile\compile.dsw
文件 74752 2008-01-18 13:40 compile\compile.ncb
文件 53760 2008-01-18 13:40 compile\compile.opt
文件 1569 2008-01-18 12:47 compile\compile.plg
目录 0 2008-01-11 19:05 compile\Debug\
文件 342 2008-01-18 10:49 compile\fibo.cod
文件 148 2008-01-17 19:13 compile\fibo.txt
文件 292 2008-01-17 22:22 compile\gcd.cod
文件 129 2008-01-17 22:23 compile\gcd.txt
文件 9934 2008-01-15 16:09 compile\GramAny.h
文件 14347 2008-01-17 22:56 compile\Grammar.cpp
文件 1022 2008-01-18 10:59 compile\Grammar.h
文件 669 2008-01-17 22:15 compile\main.cpp
文件 160 2008-01-18 10:55 compile\PascalText.txt
文件 4557 2008-01-18 09:11 compile\pcode.cpp
文件 869 2008-01-17 20:11 compile\pcode.h
文件 826 2008-01-18 13:37 compile\PL0语言的BNF描述.txt
文件 1917 2008-01-17 23:01 compile\Simpsc.cpp
文件 1085 2008-01-18 12:47 compile\Simpsc.h
文件 284 2008-01-18 09:05 compile\t1.cod
文件 107 2008-01-17 22:23 compile\t1.txt
文件 270 2008-01-18 13:38 compile\t2.cod
文件 147 2008-01-17 22:30 compile\t2.txt
文件 1145 2008-01-17 21:42 compile\Table.cpp
文件 741 2008-01-18 08:43 compile\Table.h
文件 2352 2008-01-18 12:54 compile\TokenFile.dat
文件 811 2008-01-17 21:13 compile\Word.cpp
文件 842 2008-01-17 21:09 compile\Word.h
文件 3867 2008-01-17 17:41 compile\WordAny.cpp
............此处省略2个文件信息
相关资源
- 操作系统c语言模拟文件管理系统844
- C语言开发实战宝典
- C++中头文件与源文件的作用详解
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- 个人日常财务管理系统(C语言)
- c语言电子商务系统
- 小甲鱼C语言课件 源代码
- 将图片转换为C语言数组的程序
- C语言实现的一个内存泄漏检测程序
- DES加密算法C语言实现
- LINUX下命令行界面的C语言细胞游戏
- 用单片机控制蜂鸣器播放旋律程序(
- 学校超市选址问题(数据结构C语言版
- 电子时钟 有C语言程序,PROTEUS仿真图
- 尚观培训linux许巍老师关于c语言的课
评论
共有 条评论