#include #include #include #include #include #define de(x) cout<<#x<<"="< state_stack; stack sign_stack; char G[300][300]; //存文法 int length[300]; //文法的长度 int number=0; //文法的个数 bool isV[300]; //buffer of input 判断文法中是否出现这个字符 char Vn[300]; //非终结符 int size_vn=0; char Vt[300]; //终结符 int size_vt=0; bool first[300][300]; //first集 char buffer[300]; int size=0; struct T //转换表 项目集转换 { int begin; int next; char ch; }; struct project //项目集 { int num; int now; //小数点位置
2023-05-08 22:21:51 16KB 编译原理 语法分析 c++
1
YACC源程序—语法规则部分 语法规则部分是整个YACC源程序的主体,它是由一组产生式及相应的语义动作组成。规则部分包括修改的BNF格式的文法规则,以及将在识别出识别出相关的文法规则时被执行的C代码中的动作(即根据LALR(1)分析算法,在归约中使用)。文法规则中使用的元符号惯例如下: 通常,竖线|被用作替换(也可以分别写出替换项),而用来分隔文法规则的左右两边的箭头符号-〉在YACC中用冒号表示,最后,必须用分号来结束每个文法规则。
2022-06-21 09:17:43 892KB 编译原理 YACC
1
PL/0的语言的词法分析器将要完成以下工作: (1) 跳过分隔符(如空格,回车,制表符); (2) 识别诸如begin,end,if,while等保留字; (3) 识别非保留字的一般标识符,此标识符值(字符序列)赋给全局量id,而全局量sym赋值为SYM_IDENTIFIER。 (4) 识别数字序列,当前值赋给全局量NUM,sym则置为SYM_NUMBER; (5) 识别:=,<=,>=之类的特殊符号,全局量sym则分别被赋值为SYM_BECOMES,SYM_LEQ,SYM_GEQ等。 相关过程(函数)有getsym(),getch(),其中getch()为获取单个字符的过程,除此之外,它还完成: (1) 识别且跳过行结束符; (2) 将输入源文件复写到输出文件; (3) 产生一份程序列表,输出相应行号或指令计数器的值。
2022-06-11 13:23:38 257KB 编译原理
1
词法分析程序的自动生成器LEX相关知识介绍。
2022-05-19 09:20:41 901KB 编译原理 LEX
1
编译原理实践教程(课件)编译原理实践教程(课件)编译原理实践教程(课件)编译原理实践教程(课件)编译原理实践教程(课件)编译原理实践教程(课件)编译原理实践教程(课件)
2022-02-21 19:58:49 246KB 编译原理
1
pdf介绍编译原理,非扫描图片,编译原理入门知识
2021-11-17 15:41:09 11.09MB 编译原理 实践 汇编
1
编译原理实践及应用》习题的参考答案,部分习题参考答案。
2021-11-14 23:01:52 1.41MB 编译原理
1
PARSING TECHNIQUES ,轮子哥推荐的编译原理书籍,英文版本,带书签,本来想设置一个0积分下载,可惜没有这个选项。。。很棒的一本书,仅供交流,切勿商用!
2021-10-01 16:25:20 3.85MB 编译原理实践
1
内含(何**班) 三次实验的代码(java)和报告(报告已经删去个人总结部分) 代码说明可见报告 实验一(词法分析):以某大小写不敏感语言源程序作为词法分析对象,至少能分析样板程序。 实验二(语法分析):对所描述的文法,构造SLR(1)分析表,编制语法分析程序,要求将错误信息输出到错误文件中,并输出分析句子的过程(显示栈的内容,采取的动作); 实验三(语义分析):基于实验二给出的文法,给出SDD或SDT,编制语义分析程序,要求将错误信息输出到错误文件中,并输出输入程序对应的三地址码;
本资源使用C++实现了词法分析器,内容包括C++源代码与exe文件、input.txt和程序运行说明文档。该资源的文字版信息请访问博客《编译原理实践:C++实现词法分析器(学习笔记)》(https://blog.csdn.net/weixin_40589192/article/details/106927940)。
2021-05-12 21:03:38 194KB 编译原理 C++ 词法分析器
1