Welcome![Sign In][Sign Up]
Location:
Search - lr ll

Search list

[ELanguageLL(1)_LR(0)_Demo.rar

Description: 包括一个LR(1)的语法分析程序和一个LL(1)的语法分析程序的例子
Platform: | Size: 239282 | Author: | Hits:

[ELanguage编译原理及实践

Description:

目      录
译者序
前言
第1章   概论 1
1.1   为什么要用编译器 2
1.2   与编译器相关的程序 3
1.3   翻译步骤 5
1.4   编译器中的主要数据结构 8
1.5   编译器结构中的其他问题 10
1.6   自举与移植 12
1.7   TINY样本语言与编译器 14
1.7.1   TINY语言 15
1.7.2   TINY编译器 15
1.7.3   TM机 17
1.8   C-Minus:编译器项目的一种语言 18
练习 19
注意与参考 20
第2章   词法分析 21
2.1   扫描处理 21
2.2   正则表达式 23
2.2.1   正则表达式的定义 23
2.2.2   正则表达式的扩展 27
2.2.3   程序设计语言记号的正则表达式 29
2.3   有穷自动机 32
2.3.1   确定性有穷自动机的定义 32
2.3.2   先行、回溯和非确定性自动机 36
2.3.3   用代码实现有穷自动机 41
2.4   从正则表达式到DFA 45
2.4.1   从正则表达式到NFA 45
2.4.2   从NFA到DFA 48
2.4.3   利用子集构造模拟NFA 50
2.4.4   将DFA中的状态数最小化 51
2.5   TINY扫描程序的实现 52
2.5.1   为样本语言TINY实现一个扫描
程序 53
2.5.2   保留字与标识符 56
2.5.3   为标识符分配空间 57
2.6   利用Lex 自动生成扫描程序 57
2.6.1   正则表达式的Lex 约定 58
2.6.2   Lex输入文件的格式 59
2.6.3   使用Lex的TINY扫描程序 64
练习 65
编程练习 67
注意与参考 67
第3章   上下文无关文法及分析 69
3.1   分析过程 69
3.2   上下文无关文法 70
3.2.1   与正则表达式比较 70
3.2.2   上下文无关文法规则的说明 71
3.2.3   推导及由文法定义的语言 72
3.3   分析树与抽象语法树 77
3.3.1   分析树 77
3.3.2   抽象语法树 79
3.4   二义性 83
3.4.1   二义性文法 83
3.4.2   优先权和结合性 85
3.4.3   悬挂else问题 87
3.4.4   无关紧要的二义性 89
3.5   扩展的表示法:EBNF和语法图 89
3.5.1   EBNF表示法 89
3.5.2   语法图 91
3.6   上下文无关语言的形式特性 93
3.6.1   上下文无关语言的形式定义 93
3.6.2   文法规则和等式 94
3.6.3   乔姆斯基层次和作为上下文无关
规则的语法局限 95
3.7   TINY语言的语法 97
3.7.1   TINY的上下文无关文法 97
3.7.2   TINY编译器的语法树结构 98
练习 101
注意与参考 104
第4章   自顶向下的分析 105
4.1   使用递归下降分析算法进行自顶向下
的分析 105
4.1.1   递归下降分析的基本方法 105
4.1.2   重复和选择:使用EBNF 107
4.1.3   其他决定问题 112
4.2   LL(1)分析 113
4.2.1   LL(1)分析的基本方法 113
4.2.2   LL(1)分析与算法 114
4.2.3   消除左递归和提取左因子 117
4.2.4   在LL(1)分析中构造语法树 124
4.3   First集合和Follow集合 125
4.3.1   First 集合 125
4.3.2   Follow 集合 130
4.3.3   构造LL(1)分析表 134
4.3.4   再向前:LL(k)分析程序 135
4.4   TINY语言的递归下降分析程序 136
4.5   自顶向下分析程序中的错误校正 137
4.5.1   在递归下降分析程序中的错误
校正 138
4.5.2   在LL(1)分析程序中的错误校正 140
4.5.3   在TINY分析程序中的错误校正 141
练习 143
编程练习 146
注意与参考 148
第5章   自底向上的分析 150
5.1   自底向上分析概览 151
5.2   LR(0)项的有穷自动机与LR(0)分析 153
5.2.1   LR(0)项 153
5.2.2   项目的有穷自动机 154
5.2.3   LR(0)分析算法 157
5.3   SLR(1)分析 160
5.3.1   SLR(1)分析算法 160
5.3.2   用于分析冲突的消除二义性
规则 163
5.3.3   SLR(1)分析能力的局限性 164
5.3.4   SLR(k)文法 165
5.4   一般的LR(1)和LALR(1)分析 166
5.4.1   LR(1)项的有穷自动机 166
5.4.2   LR(1)分析算法 169
5.4.3   LALR(1)分析 171
5.5   Yacc:一个LALR(1)分析程序的
生成器 173
5.5.1   Yacc基础 173
5.5.2   Yacc选项 176
5.5.3   分析冲突与消除二义性的规则 180
5.5.4   描述Yacc分析程序的执行 183
5.5.5   Yacc中的任意值类型 184
5.5.6   Yacc中嵌入的动作 185
5.6   使用Yacc生成TINY分析程序 186
5.7   自底向上分析程序中的错误校正 188
5.7.1   自底向上分析中的错误检测 188
5.7.2   应急方式错误校正 188
5.7.3   Yacc中的错误校正 189
5.7.4   TINY中的错误校正 192
练习 192
编程练习 195
注意与参考 197
第6章   语义分析 198
6.1   属性和属性文法 199
6.1.1   属性文法 200
6.1.2   属性文法的简化和扩充 206
6.2   属性计算算法 207
6.2.1   相关图和赋值顺序 208
6.2.2   合成和继承属性 212
6.2.3   作为参数和返回值的属性 219
6.2.4   使用扩展数据结构存储属性值 221
6.2.5   语法分析时属性的计算 223
6.2.6   语法中属性计算的相关性 226
6.3   符号表 227
6.3.1   符号表的结构 228
6.3.2   说明 230
6.3.3   作用域规则和块结构 232
6.3.4   同层说明的相互作用 236
6.3.5   使用符号表的属性文法的一个
扩充例子 237
6.4   数据类型和类型检查 241
6.4.1   类型表达式和类型构造器 242
6.4.2   类型名、类型说明和递归类型 246
6.4.3   类型等价 248
6.4.4   类型推论和类型检查 253
6.4.5   类型检查的其他主题 255
6.5   TINY语言的语义分析 257
6.5.1   TINY的符号表 258
6.5.2   TINY语义分析程序 259
练习 260
编程练习 264
注意与参考 264
第7章   运行时环境 266
7.1   程序执行时的存储器组织 266
7.2   完全静态运行时环境 269
7.3   基于栈的运行时环境 271
7.3.1   没有局部过程的基于栈的环境 271
7.3.2  带有局部过程的基于栈的环境 281
7.3.3   带有过程参数的基于栈的环境 284
7.4   动态存储器 286
7.4.1   完全动态运行时环境 286
7.4.2   面向对象的语言中的动态存储器 287
7.4.3   堆管理 289
7.4.4   堆的自动管理 292
7.5   参数传递机制 292
7.5.1   值传递 293
7.5.2   引用传递 294
7.5.3   值结果传递 295
7.5.4   名字传递 295
7.6   TINY语言的运行时环境 296
练习 297
编程练习 303
注意与参考 304
第8章   代码生成 305
8.1   中间代码和用于代码生成的数据
结构 305
8.1.1   三地址码 306
8.1.2   用于实现三地址码的数据结构 308
8.1.3   P-代码 310
8.2   基本的代码生成技术 312
8.2.1   作为合成属性的中间代码或目标
代码 312
8.2.2   实际的代码生成 314
8.2.3   从中间代码生成目标代码 317
8.3   数据结构引用的代码生成 319
8.3.1   地址计算 319
8.3.2   数组引用 320
8.3.3   栈记录结构和指针引用 325
8.4   控制语句和逻辑表达式的代码生成 328
8.4.1   if 和while 语句的代码生成 328
8.4.2   标号的生成和回填 330
8.4.3   逻辑表达式的代码生成 330
8.4.4   if 和while 语句的代码生成过程
样例 331
8.5   过程和函数调用的代码生成 334
8.5.1   过程和函数的中间代码 334
8.5.2   函数定义和调用的代码生成过程 336
8.6   商用编译器中的代码生成:两个案
例研究 339
8.6.1   对于80×86的Borland 3.0版C编
译器 339
8.6.2   Sun SparcStation的Sun 2.0 C编
译器 343
8.7   TM:简单的目标机器 346
8.7.1   Tiny Machine的基本结构 347
8.7.2   TM模拟器 349
8.8   TINY语言的代码生成器 351
8.8.1   TINY代码生成器的TM接口 351
8.8.2   TINY代码生成器 352
8.8.3   用TINY编译器产生和使用TM
代码文件 354
8.8.4   TINY编译器生成的TM代码文
件示例 355
8.9   代码优化技术考察 357
8.9.1   代码优化的主要来源 358
8.9.2   优化分类 360
8.9.3   优化的数据结构和实现技术 362
8.10   TINY代码生成器的简单优化 366
8.10.1   将临时变量放入寄存器 366
8.10.2   在寄存器中保存变量 367
8.10.3   优化测试表达式 367
练习 368
编程练习 371
注意与参考 372
附录A   编译器设计方案 373
附录B   小型编译器列表 381
附录C   Tiny Machine模拟器列表 417


Platform: | Size: 7612048 | Author: wesong | Hits:

[Other resourceCWB

Description: 编译工作台 是本人编写的用于编译原理教学的工具,它是一个自由软件,现在已经发布(主页为http://download.enet.com.cn/html/030792005091701.html,上有软件介绍和截图)。 软件的源代码在压缩包的src目录中。WB.zip是主程序,其编译后生成WB.exe;LLDemo.zip是LL动态演示程序,其编译后生成Demo.exe,将其改名成LLDemo.exe;LRDemo.zip是LR动态演示程序,其编译后生成Demo.exe,将其改名成LRDemo.exe。将这3个exe文件和help目录中的所有文件拷贝到同一目录即可。 另外,sample目录中有例子文件,CWB_SETUP.exe是安装程序。-compiler worktable is my preparation for teaching the principles of compiler tools, it is a free software, has now released (for http://download.enet.com.cn/html/030792005091701.html Home, a software presentations and screenshots). The software source code in the compressed src directory. Yes WB.zip main program, compiled WB.exe generation; LL LLDemo.zip is dynamic demo program, compiled generation Demo.exe, to be renamed as LLDemo.exe; LRDemo.zip LR is dynamic demo program, compiled Demo.exe generation, its name into LRDemo.exe. These three exe files and help directory of all files are copied to the same directory can be. In addition, the sample directory is an example, CWB_SETUP.exe installation procedures.
Platform: | Size: 1185585 | Author: 尹涛 | Hits:

[ELanguagejellrap

Description: 形式文法分析JAVA工具包 本JAVA Applets程序提供对LL(1),LL(2)和LR(1)文法分析处理,用户可以输入任何满足条件的形式文法,通帮过系统的提示和帮助构造出相应文法的分析表,以及动态显示分析过程.本JAVA包能够很好地帮助学生理解语法分析器的制作过程和语法分析器的工作原理. -form grammar analysis of the Java tool kit for Java Applets procedures for LL (1) LL (2) and LR (1) grammar analysis, users can import to meet any conditions in the form of grammar. Qualcomm helped the prompts and help construct the corresponding grammar analysis table, dynamic display and analysis process. the Java packages are well suited to help students understand syntax analyzer, the production process and Pragmatic France analyzer works.
Platform: | Size: 165594 | Author: 欧滨 | Hits:

[Internet-NetworkParser2

Description: 形式文法分析JAVA工具包本JAVA Applets程序提供对LL(1),LL(2)和LR(1)文法分析处理,用户可以输入任何满足条件的形式文法,通帮过系统 -form grammar analysis of the Java tool kit for Java Applet procedures for LL (1) LL (2) and LR (1) grammar analysis, users can import to meet any conditions in the form of grammar. Link helped System
Platform: | Size: 2062 | Author: ericdeng | Hits:

[ELanguageLL(1)_LR(0)_Demo

Description: 包括一个LR(1)的语法分析程序和一个LL(1)的语法分析程序的例子- Including LR (1) grammar analysis program and LL (1) grammar analysis program example
Platform: | Size: 239616 | Author: 杨军 | Hits:

[ELanguage语法fx

Description: 编译原理,语法分析 ll(1),lr (0),slr(1)-compiler theory, syntax analysis ll (1), lr (1), lr (0), slr (1), etc.
Platform: | Size: 2048 | Author: Dick | Hits:

[ELanguagejellrap

Description: 形式文法分析JAVA工具包 本JAVA Applets程序提供对LL(1),LL(2)和LR(1)文法分析处理,用户可以输入任何满足条件的形式文法,通帮过系统的提示和帮助构造出相应文法的分析表,以及动态显示分析过程.本JAVA包能够很好地帮助学生理解语法分析器的制作过程和语法分析器的工作原理. -form grammar analysis of the Java tool kit for Java Applets procedures for LL (1) LL (2) and LR (1) grammar analysis, users can import to meet any conditions in the form of grammar. Qualcomm helped the prompts and help construct the corresponding grammar analysis table, dynamic display and analysis process. the Java packages are well suited to help students understand syntax analyzer, the production process and Pragmatic France analyzer works.
Platform: | Size: 164864 | Author: 欧滨 | Hits:

[Internet-NetworkParser2

Description: 形式文法分析JAVA工具包本JAVA Applets程序提供对LL(1),LL(2)和LR(1)文法分析处理,用户可以输入任何满足条件的形式文法,通帮过系统 -form grammar analysis of the Java tool kit for Java Applet procedures for LL (1) LL (2) and LR (1) grammar analysis, users can import to meet any conditions in the form of grammar. Link helped System
Platform: | Size: 2048 | Author: ericdeng | Hits:

[Software Engineeringyufafenxikejianzongshu

Description: 每种程序设计语言都有描述程序语法结构的规则。例如,Pascal程序由程序块(又叫分程序)构成,程序块由语句组成,语句由表达式组成,表达式由记号组成等等。这些规则可以用上下文无关文法或BNF范式(Backus-Naur Form)描述。 编译器常用的文法分析方法有自上而下和自下而上两种。正如它们的名字所示,自上而下分析器建立分析树是从根结点到叶结点,而自下而上分析器恰好反过来。它们的共同点是从左向右地扫描输入,每次一个符号。 最有效的自上而下和自下而上的分析法都只能处理上下文无关文法的子类。这些子类足以描述程序设计语言的大多数语法结构,其中LL文法的分析器通常用手工实现,而LR文法的分析器通常利用自动工具构造。 本章致力于编译器采用的典型语法分析方法。我们首先提出有关上下文无关文法的基本概念,然后介绍适合于手工实现的预测分析技术,最后给出自动工具用的LR分析算法。由于程序员准备的代码经常会出现一些语法错误,因此我们还扩展所介绍的分析方法,使之能从常见的错误中恢复过来。 3.1 上下文无关文法 ..... 3.4 自下而上分析 3.6 二义文法的应用-each programming language has described procedures grammatical structure of rules. For example, Pascal procedures block (also known as sub-procedures), with procedures block composed by the statement, statement by the composition of expression, etc. from the component mark. These rules can be used context-free grammar or paradigm BNF (Backus- Naur Form) Description. Compiler grammar analysis of the commonly used methods are both top-down and bottom-up. As their name implies, top-down analysis of the establishment of analyzers from the root node of the tree to the leaf nodes, and the bottom-up analyzer exactly the contrary. The common denominator is to scan from left to right input, each a symbol. The most effective top-down and bottom-up analysis can only deal with
Platform: | Size: 134144 | Author: 李爱春 | Hits:

[ELanguagegi-1.2

Description: 用java实现的通用解释器,包括slr,lr(0),lr(1),lr(k),ll等等,还可在在源码api上开发其他功能-with java achieve definitive interpreter, including slr, lr (0), lr (1), lr (k), ll, etc., but also in the OSS api on the development of other functions
Platform: | Size: 415744 | Author: digg | Hits:

[Documents2

Description: 编译原理课程设计条件语句的翻译 (LL(1)法,输出四元式) -err
Platform: | Size: 92160 | Author: ddcw | Hits:

[OS programTetris0.9

Description: 七、 First集和Follow集生成算法模拟 10 八、 LL(1)分析过程模拟 11 九、 FirstVT集和LastVT集生成算法模拟 12 十、 算符优先分析表生成模拟 12 十一、 算符优先分析过程模拟 13 十二、 LR分析过程模拟 13 -7, First Set and Follow simulation algorithm to generate 10 sets of eight, LL (1) Analysis of Process Simulation 11 9, FirstVT sets and set LastVT simulation algorithm to generate 12 10, operator priority analysis table generated simulation 12 11, operator priority analysis Simulation of 13 12, LR analysis process simulation 13
Platform: | Size: 215040 | Author: 啊啊啊啊 | Hits:

[ELanguageww

Description: 多个程序,C++编写的。自己在做编译课设时搜集参考用的,呵呵,都放上来了,有各种语法写的,LL(1),LR的,递归下降的,还有语义分析部分,有四元式,逆波兰式等等,而且每个都能调试运行。(不好的,我可不拿出来现眼)-Number of procedures, C++ prepared. They are doing when compiling the collection of class-based reference, huh, huh, are放上来, and a variety of written grammar, LL (1), LR, and recursive decline, there are some semantic analysis, and quaternion type, Reverse Polish-style, etc., and each able to run debug. (Not good, I do not现眼out) ... ...
Platform: | Size: 7874560 | Author: wangyao | Hits:

[Other20064350132

Description: 通过设计,编制,调试一个语法及语义分析程序,加深对语法及语义分析原理的理解。 IF 〈布尔表达式〉 THEN 〈赋值语句〉 ELSE 〈赋值语句〉 其中 (1)、可以选择递归下降法、LL(1)、算符优先分析法、LR法完成以上任务,中间代码选用四元式。 (2)、 写出符合分析方法要求的文法,给出分析方法的思想,完成分析程序设计。 (3)、 编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。 目 录 一.系统需求分析 二.概念模型设计 三.逻辑模型设计 四.物理模型设计 五.实验结果分析 六.心得体会 七.源代码-By designing, developing, debugging a syntax and semantic analysis procedures, better understanding of the syntax and semantic analysis to understand the principle. IF <Boolean expression> THEN <assignment> ELSE <assignment statement> Which (1), recursive descent method to choose, LL (1), priority analysis operator, LR Law on the above tasks, choice of intermediate code quaternion type. (2), write in line with the requirements of analysis grammar, the idea of analytical methods are given to complete the analysis of program design. (3), a good analysis of the preparation process, the design of a number of use cases, and through the test analysis program designed
Platform: | Size: 488448 | Author: aden | Hits:

[ELanguageCompiler-design-in-c

Description: C语言实现的小编译器,挺有意思的,希望对大家有帮助。-C language compiler to achieve a small, very interesting, would like to help everyone.
Platform: | Size: 696320 | Author: Shellbird | Hits:

[ELanguageSyntaxAnalysisL-R

Description: 实现编译原理的LL(1)和LR(0) (1)语法分析LL(1) (2)语法分析LR(0) (3)输出分析过程如First、Follow集、预测分析表 (4)输出预测分析过程、LR(0)自动机 (5)对输入字符串的验证-Principle to achieve compile LL (1) and LR (0) (1) parsing LL (1) (2) parsing LR (0) (3) the output of the process, such as First, Follow sets, predictive analysis, (4) output prediction analysis, LR (0) automata (5) validation of the input string
Platform: | Size: 75776 | Author: | Hits:

[ELanguageLL-LR-analysis

Description: 进行LL分析和LR分析的实验报告,含源码和结果显示。-LL LR analysis for the experimental analysis and reporting, including source code and results.
Platform: | Size: 143360 | Author: huang | Hits:

[ELanguageLL--LR

Description: 编译原理,构造LL分析表,LR分析器,含报告文档-Compiler theory, structural analysis table LL, LR parser, the document containing the report
Platform: | Size: 132096 | Author: huang | Hits:

[ELanguagell-slr

Description: lr ,slr 语法分析,编译原理中的小程序,可以来体验一下-lr ,slr
Platform: | Size: 283648 | Author: hyq | Hits:
« 12 3 »

CodeBus www.codebus.net