小型编译程序高级语言到四元式的编译.doc

小型编译程序高级语言到四元式的编译.doc

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
小型编译程序:高级语言到四元式的编译 #include stdio.h /*如果使用TC的话,需要配置头文件路径*/ #include string.h #define ACC -2 /************************/ #define sy_if 0 #define sy_then 1 #define sy_else 2 #define sy_while 3 #define sy_begin 4 #define sy_do 5 #define sy_end 6 #define a 7 #define semicolon 8 #define e 9 #define jinghao 10 #define S 11 #define L 12 #define tempsy 15 #define EA 18 /*E and*/ #define E0 19 /E or*/ #define plus 34 #define times 36 #define becomes 38 #define op_and 39 #define op_or 40 #define op_not 41 #define rop 42 #define lparent 48 #define rparent 49 #define ident 56 #define intconst 57 /*********************************/ char ch=\0; /*从字符缓冲区读取当前字符*/ int count=0; /*词法分析结果缓冲区计数器*/ static char spelling[10]={}; /*存放识别的字*/ static char line[81]={}; /*一行字符缓冲区,最多80个字符*/ char *pline; /*字符缓冲区指针*/ static char ntab1[100][10]; /*变量名表,共100项,每项长度10*/ struct ntab { int tc; /*真值*/ int fc; /*假值*/ }ntab2[200]; /*在布尔表达式E中保存有关布尔变量的真、假值*/ int label=0; /*指向ntab2的指针*/ struct rwords{ /*存放临时变量的表的定义*/ char sp[10]; int sy; }; /*(保留字表)匹配表的结构,用来与输入缓冲区中的单词进行匹配*/ /*匹配表初始化,大小为10*/ struct rwords reswords[10]={{if,sy_if}, {do,sy_do}, {else,sy_else}, {while,sy_while}, {then,sy_then}, {begin,sy_begin}, {end,sy_end}, {and,op_and}, {or,op_or}, {not,op_not}}; struct aa{ int sy1; /*存放名字*/ int pos; /*存放名字所对应的地址*/ }buf[1000], /*词法分析结果缓冲区*/ n, /*读取二元式的当前字符*/ n1, /*当前表达式中的字符*/ E, /*非终结符*/ sstack[100], /*算术或布尔表达式加工处理使用的符号栈*/ ibuf[100], /*算术或布尔表达式使用的缓冲区*/ stack[1000]; /*语法分析加工处理使用的符号栈*/ struct aa oth; /*四元式中空白位置*/ struct fourexp{ char op[10]; struct aa arg1; struct aa arg2; int result; }fexp[200]; /*四元式的结构定义*/ int ssp=0; /*指向sstack栈指针*/ struct aa *pbuf=buf; /*指向词法分析缓冲区的指针*/ int nlength=0; /*词法分析中记录单词的长度*/ int lnum=0; /*源程序行数记数,源程序长度*/

文档评论(0)

xingyuxiaxiang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档