这是我毕设的一部分,毕设做的是C语言编译器,这部分是编译器的词法分析和语法分析。开发平台Visual Stuido 2010。语法分析仅仅是分析语法对不对,如果对会输出“OK”,反之输出“ERROR”词法分析完会把单词和类型列出,类型是我自己定义的枚举值。还有就是我定义了源程序中定义和生命函数时,如果没有参数必须加上"void"参数,否则报错。例如 void main(void){}
2021-04-26 11:35:55 5.79MB C语言 词法分析 语法分析
1
用类c语言实现的ll_文法分析器,构造first,follow集,预测分析表等
2021-04-25 21:21:18 386KB c ll1 编译原理
1
c语法分析器,生成程序的语法树 分析单个文件,不支持预处理, 不解析预处理符号#
2021-04-25 16:43:47 99KB c 语法分析
1
该系统由java实现,能够对输入串进行词法和语法分析,用LL(1)文法对输入串进行语法分析,在Ecplise运行,编译原理课程设计。
2021-04-25 11:14:19 9KB java 语法分析器 LL(1)
1
C++实现LL(1)法分析器:构造First集、Follow集,分析语法是否符合LL(1),并构造预测分析表。
2021-04-24 21:28:26 507KB 编译原理 语法分析器
1
编译器的构造中,语法分析是一个非常关键也是较难的部分之一,虽然现在已经有非常成熟的语法分析器的生成器,但是真正大的编译器设计者还是会选择自己处理语法分析。其中,自顶向下的方法有递归下降分析,非递归预测分析等,但是前者递归无法满足程序嵌套的深入,很容易形成栈溢出;后者手工构造对于稍微大的文法无法显得捉襟见肘。 幸运的是:自底向上分析能够很好的解决上述问题。其中LR(0), LR(1)以及LALR(1)对程序设计语言语法分析提供了很好的解决方案。但是他们三者的性能如何,到底实际中适和使用哪种分析方法?很多书都提出LALR分析方法同时拥有了前两者的优点,所以是最提倡的。 据笔者所知,YACC(Yet Another Compiler- Compiler )语法分析器生成器所使用的方法正是LALR分析法。 资源中是LALR语法分析器分析表的自动构造算法的所有代码。 能够分析标准C语言文法等,采用和YACC类似的方式LALR高效版本产生分析表。 其中论文本文旨在用程序证明LALR语法分析方法的最优性以及LR(1)方法的不可行性。 作者此次正好利用编译原理论文的机会,和大家一起去实践的证明一下吧! 关键词:LR(0) ;LR(1);LALR(1);语法分析;规模;效率;论证 YACC
2021-04-23 20:49:00 1.12MB LR(0) SLR(1) LR(1) LALR(1)
1
用c语言写的LL(1)预测分析程序,分析字符串是否符合语法, 并输出分析过程。
2021-04-17 17:02:18 30KB 语法分析 c语言
1
笔者实现了一个类似于Lex & Yacc的编译器前端构造工具,该工具基于LALR(1)分析法,支持二义性文法,支持语法制导翻译,支持错误恢复机制,使用它我们可以构造指定词法文法的编译器前端,并且构造的分析器是线程安全的。里面还给出几个示例,构造四则表达式计算器,JSON解析器和C99标准C编译器前端。 编译原理课程的大杀器
2021-04-12 19:13:05 9.41MB 词法分析 语法分析 编译原理 Lex
1
基于《编译原理教程(第四版)》胡元义 第三章 语法分析 伪代码(P52-53)实现的递归下降分析器。 自顶向下的语法分析 实现方式:c语言 内容包括: (1) 文法 (2) 源代码 分析的字符串为i*(i+i)# 注意:c语言实现时,尽量贴合书本伪代码去写的。
1
ANTLR 接受 3类语法规范——语法分析器(parsers) ,词法分析器(lexers) ,和树分析器(tree-parsers)(也叫树遍历器 tree-walkers)。 由于 ANTLR 使用 LL(k) 分析所有的 3 种语法变型,并且语法说明相似,因而产生的 lexers 和语法分析程序也很类似。另外产生的识别程序可读性很好,你可以查看输出的内容来明白很多关于 ANTLR 的机理。 ANTLR 接受C语言风格的块注释和 C++风格的行注释。在语法类和规则中,Java 风格的文档注释也是可以接受的,在需要的时候,这些注释可以被传递给生成的输出文件。 ANTLR, 语言识别的另一个工具(ANother Tool for Language Recognition ),(前身是PCCTS)是一种语言工具,它提供了一个框架,可以通过包含 Java,C++,或C#动作(action)的语法描述来构造语言识别器,编译器和解析器。 计算机语言的解析已经变成了一种非常普遍的工作。 传统的计算机语言的编译器和工具(如 C 或Java)仍旧需要被构造,它们的数量与需要开发的那些成千上万的小语言的识别工具和解析工具相比是相形见拙。程序员为了解析数据格式,图形文件(如, PostScript,AutoCAD),文本文件(如,HTML,SGML等)而需要构造解析器。ANTLR 被设计出来处理所有这些转换工作。
2021-04-03 21:48:14 1.46MB antlr 语法分析 词法分析
1