资源简介
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语言实现的
- C语言数据结构课程设计之统计C程序单
- 职工信息管理系统C 链表
- C语言实现凯撒和维吉尼亚加解密
- 基于C语言绘制学校校徽
- C语言标准库函数大全
- DES/3DES算法C语言实现
- C语言内存分配详解
- 学生成绩管理系统 (C语言版)课程设
- 设计并实现TINYC语言的扫描程序TINYC
- DES和3DES加密算法,C语言,适用于单片
- 51单片机DS18B20温度计C语言程序附详解
- Linux下C语言操作静态ARP表,包括增加
- 各种加密算法C语言版
- 《C语言最新C11标准》PDF
- 郭天祥51单片机C语言教程配套光盘
- 新概念51单片机C语言教程第2版郭天祥
- SM4(ECB、CBC、CTR、CFB、OFB)加密算法
- 1628驱动程序
- C程序设计语言(第2版·新版)
- C语言实现LZW编码
- 模拟进程管理c语言至少要有:创建新
- 《测试驱动的嵌入式C语言开发》源码
- C语言考研真题汇编
- C语言实现51单片机和ADC0809芯片的AD模
- 树莓派智能小车开发C语言源码
- 两输入单输出模糊控制c语言程序
- C语言实战——基于51单片机的RFID射频
- 黑客帝国C语言
- C语言程序扑克发牌
评论
共有 条评论