PL0源代码C语言版Word版

上传人:m**** 文档编号:498135938 上传时间:2023-11-09 格式:DOC 页数:34 大小:109KB
返回 下载 相关 举报
PL0源代码C语言版Word版_第1页
第1页 / 共34页
PL0源代码C语言版Word版_第2页
第2页 / 共34页
PL0源代码C语言版Word版_第3页
第3页 / 共34页
PL0源代码C语言版Word版_第4页
第4页 / 共34页
PL0源代码C语言版Word版_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《PL0源代码C语言版Word版》由会员分享,可在线阅读,更多相关《PL0源代码C语言版Word版(34页珍藏版)》请在金锄头文库上搜索。

1、如果您需要使用本文档,请点击下载按钮下载! /*PL/0 编译系统C版本头文件 pl0.h*/# define norw 13 /a number of reserved word /*关键字个数*/ # define txmax 100 /length of identifier table /*名字表容量*/# define nmax 14 /max number of digits in numbers /*number的最大位数*/# define al 10 /length of identifier /*符号的最大长度*/# define amax 2047 /maximum ad

2、dress /*地址上界*/# define levmax 3 /max depth of block nesting /*最大允许过程嵌套声明层数0,lexmax*/# define cxmax 200 /size of code array /*最多的虚拟机代码数*/*符号*/enum symbol nul, ident, number, plus, minus, times, slash, oddsym, eql, neq, /slash斜线 lss, leq, gtr, geq, lparen, /leq :less than or equal to; gtr: great than;

3、lparen:left parenthesisrparen, comma, semicolon,period, becomes,/comma逗号 semicolon分号 period句号 becomes赋值号 beginsym, endsym, ifsym, thensym, whilesym,writesym, readsym, dosym, callsym, constsym,varsym, procsym,;#define symnum 32/*-*/enum object /object为三种标识符的类型 constant, variable, procedur,;/*-*/enum

4、fct /fct类型分别标识类PCODE的各条指令lit, opr, lod, sto, cal, inte, jmp, jpc, /书本P23 ;#define fctnum 8/*-*/struct instruction /指令 enum fct f; /功能码 int l; /层次差 int a; /P23;FILE * fas; /输出名字表 如果您需要使用本文档,请点击下载按钮下载!FILE * fa; /输出虚拟机代码 FILE * fa1; /输出源文件及其各行对应的首地址 FILE * fa2; /输出结果 bool tableswitch; /显示名字表与否 bool li

5、stswitch; /显示虚拟机代码与否 char ch; /获取字符的缓冲区,getch使用 enum symbol sym; /当前符号 char idal+1; /当前ident,多出一个字节用于存放0 int num; /当前number int cc,ll; /getch使用的计数器,cc表示当前字符(ch)的位置 int cx; /虚拟机代码指针,取值范围0,cxmax-1char line81; /读取行缓冲区 char aal+1; /临时符号,多出的一个字节用于存放0 struct instruction codecxmax; /存放虚拟机代码的数组 char wordnor

6、wal; /保留字enum symbol wsymnorw; /保留字对应的符号值 enum symbol ssym256; /单字符的符号值 char mnemonicfctnum5; /虚拟机代码指令名称 bool declbegsyssymnum; /表示声明开始的符号集合 ,declaring begin symbol setbool statbegsyssymnum; /表示语句开始的符号集 , statementbool facbegsyssymnum; /表示因子开始的符号集合 ,factor/*-*/struct tablestruct char nameal; /*名字*/

7、enum object kind; /*类型:const,var,array or procedure*/ int val; /*数值,仅const使用*/ int level; /*所处层,仅const不使用*/ int adr; /*地址,仅const不使用*/ int size; /*需要分配的数据区空间,仅procedure使用*/;struct tablestruct tabletxmax; /*名字表*/FILE * fin; /fin文本文件用于指向输入的源程序文件FILE* fout; /fout文本文件用于指向输出的文件char fnameal;int err; /*错误计数

8、器*/*当函数中会发生fatal error时,返回1告知调用它的函数,最终退出程序*/#define getsymdo if(-1=getsym()return -1如果您需要使用本文档,请点击下载按钮下载!#define getchdo if(-1=getch()return -1#define testdo(a,b,c) if(-1=test(a,b,c)return -1#define gendo(a,b,c) if(-1=gen(a,b,c)return -1#define expressiondo(a,b,c) if(-1=expression(a,b,c)return -1#de

9、fine factordo(a,b,c) if(-1=factor(a,b,c)return -1#define termdo(a,b,c) if(-1=term(a,b,c)return -1#define conditiondo(a,b,c) if(-1=condition(a,b,c)return -1#define statementdo(a,b,c) if(-1=statement(a,b,c)return -1#define constdeclarationdo(a,b,c) if(-1=constdeclaration(a,b,c)return -1#define vardecl

10、arationdo(a,b,c) if(-1=vardeclaration(a,b,c)return -1void error(int n);int getsym();int getch();void init();int gen(enum fct x,int y,int z);int test(bool*s1,bool*s2,int n);int inset(int e,bool*s);int addset(bool*sr,bool*s1,bool*s2,int n);int subset(bool*sr,bool*s1,bool*s2,int n);int mulset(bool*sr,b

11、ool*s1,bool*s2,int n);int block(int lev,int tx,bool* fsys);void interpret();int factor(bool* fsys,int* ptx,int lev);int term(bool*fsys,int*ptx,int lev);int condition(bool*fsys,int*ptx,int lev);int expression(bool*fsys,int*ptx,int lev);int statement(bool*fsys,int*ptx,int lev);void listcode(int cx0);i

12、nt vardeclaration(int* ptx,int lev, int* pdx);int constdeclaration(int* ptx,int lev, int* pdx);int position(char* idt,int tx);void enter(enum object k,int* ptx,int lev,int* pdx);int base(int l,int* s,int b);如果您需要使用本文档,请点击下载按钮下载!/A.2 C 版 本/*编译和运行环境:*1Visual C+6.0,VisualC+.NET and Visual C+.NET 2003*WinNT, Win 200, WinXP and Win2003

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号