郑州网站建设行情苏州seo关键词优化排名
零、序言
本实验中我们实现了PASCAL编译器,该编译器实现的功能包括:基本四则运算,赋值,函数定义,函数嵌套,if/for/while/repeat循环,数组,函数调用的功能。最终通过文件形式生成中间代码,并提供debug信息。
测试方法:在根目录下执行 make parser,随后执行./parser > 文件名,注意文件名需要以pascal为后缀
一、词法分析
1.1 TOKEN的数据结构
在介绍词法分析之前,我需要先介绍用于存储 Yacc 中 TOKEN 的数据结构
typedef struct tokenstruct{int tokenNo;int tokenType;int dataType;struct tokenstruct* next;struct tokenstruct* firstOperand;struct symtbr* symType;struct symtbr* symEntry;union { int intVal;double floatVal;char charVal;char stringVal[16];}val;
} *TOKEN;
-
tokenNo:对于每一种TOKEN我都进行了编号以存储TOKEN信息。例如,ID的编号为258,左括号LP的编号为263等等。在后续处理中通过tokenNo字段我可以得知这是什么TOKEN
</