Welcome![Sign In][Sign Up]
Location:
Search - EBNF

Search list

[ELanguagewhale-0.3.2-src.zip

Description: Complete support for EBNF notation; Object-oriented parser design; C++ output; Deterministic bottom-up "shift-reduce" parsing; SLR(1), LALR(1) and LR(1) table construction methods; Automatic parse tree creation; Possibility to output parse tree in XML format; Verbose conflict diagnostics; Generation of tree traverse procedures
Platform: | Size: 220189 | 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:

[ELanguagecifafenxiqi(new)

Description: 词法分析器制作与应用 设计思想 (1)程序主体结构部分: 说明部分 %% 规则部分 %% 辅助程序部分 (2)主体结构的说明 在这里说明部分告诉我们使用的LETTER,DIGIT, IDENT(标识符,通常定义为字母开头的字母数字串)和STR(字符串常量,通常定义为双引号括起来的一串字符)是什么意思.这部分也可以包含一些初始化代码.例如用#include来使用标准的头文件和前向说明(forward ,references).这些代码应该再标记\"%{\"和\"%}\"之间 规则部分> 可以包括任何你想用来分析的代码 我们这里包括了忽略所有注释中字符的功能,传送ID名称和字符串常量内容到主调函数和main函数的功能. (3)实现原理 程序中先判断这个句语句中每个单元为关键字、常数、运算符、界符,对与不同的单词符号给出不同编码形式的编码,用以区分之。 PL/0语言的EBNF表示 <常量定义>::=<标识符>=<无符号整数> <标识符>::=<字母>={<字母>|<数字>} <加法运算符>::=+|- <乘法运算符>::=*|/ <关系运算符>::==|#|<|<=|>|>= <字母>::=a|b|…|X|Y|Z <数字>::=0|1|2|…|8|9-lexical analyzer production and application design (1) procedure main structural elements : narrative%%%% Rules of Procedure supporting part (2) the main structure of the narrative here to tell us so The LETTER, DIGIT, IDENT (identifier, usually defined as the beginning of the alphabet alphanumeric strings) and STR (string constants, usually defined as double quotes name of the string of characters) what it meant. This part also contains some initialization code. cases # include use as to the use of standard documents and the first to the (forward, references). these codes should labeled "% (" and ")%" between some of the rules
Platform: | Size: 4846 | Author: 黄启龙 | Hits:

[ELanguagegrammatica-0[1].4.tar

Description: Grammatica是一个C#和Java的语法分析程序生成器(编译器的编译器)。它可以用LL(k)语法创建可读的和带有注释的源代码。它也支持创建一个运行时语法分析器,带不生成源代码。语法产生式用EBNF描述,使用规则表达式的符号-Grammatica is a C# and Java syntax analysis program generator (compiler compiler). It can be used LL (k) to create readable syntax and Notes with the source code. It also supported the creation of a run-time syntax analyzer and did not generate the source code. Grammar production with EBNF description, the use of symbolic expression rules
Platform: | Size: 494767 | Author: 侯为 | Hits:

[ELanguage递归下降分析器

Description: 目的】 使用递归子程序法设计一个语法分析程序,理解自顶向下分析方法的原理,掌握手工编写语法分析程序的方法。 【要求】 1、使用递归下降分析算法分析表达式文法: exp ::= exp addop term | term addop ::= + | - term ::= term mulop factor | factor mulop ::= * | / factor ::= (exp) | number 其中number可以是多位的十进制数字串(整数即可),因此这里还需要一个小的词法分析器来得到number的值。 2、该词法分析器以子程序形式出现,当需要进行词法分析时进行调用; 3、能够识别正确和错误的表达式; 4、在进行语法分析的过程中,计算输入表达式的值。 【方法与参考】 首先将上述文法改写成EBNF形式,根据递归下降分析算法基本思想编写程序。 【实验环境和工具】 本实验不限定现所使用的开发工具以及运行环境。
Platform: | Size: 130560 | Author: luomiao.cn@163.com | Hits:

[ELanguagewhale-0.3.2-src

Description: Complete support for EBNF notation; Object-oriented parser design; C++ output; Deterministic bottom-up "shift-reduce" parsing; SLR(1), LALR(1) and LR(1) table construction methods; Automatic parse tree creation; Possibility to output parse tree in XML format; Verbose conflict diagnostics; Generation of tree traverse procedures
Platform: | Size: 220160 | Author: none | Hits:

[ELanguagegrammatica-0[1].4.tar

Description: Grammatica是一个C#和Java的语法分析程序生成器(编译器的编译器)。它可以用LL(k)语法创建可读的和带有注释的源代码。它也支持创建一个运行时语法分析器,带不生成源代码。语法产生式用EBNF描述,使用规则表达式的符号-Grammatica is a C# and Java syntax analysis program generator (compiler compiler). It can be used LL (k) to create readable syntax and Notes with the source code. It also supported the creation of a run-time syntax analyzer and did not generate the source code. Grammar production with EBNF description, the use of symbolic expression rules
Platform: | Size: 494592 | Author: 侯为 | Hits:

[ELanguagecifafenxiqi(new)

Description: 词法分析器制作与应用 设计思想 (1)程序主体结构部分: 说明部分 %% 规则部分 %% 辅助程序部分 (2)主体结构的说明 在这里说明部分告诉我们使用的LETTER,DIGIT, IDENT(标识符,通常定义为字母开头的字母数字串)和STR(字符串常量,通常定义为双引号括起来的一串字符)是什么意思.这部分也可以包含一些初始化代码.例如用#include来使用标准的头文件和前向说明(forward ,references).这些代码应该再标记"%{"和"%}"之间 规则部分> 可以包括任何你想用来分析的代码 我们这里包括了忽略所有注释中字符的功能,传送ID名称和字符串常量内容到主调函数和main函数的功能. (3)实现原理 程序中先判断这个句语句中每个单元为关键字、常数、运算符、界符,对与不同的单词符号给出不同编码形式的编码,用以区分之。 PL/0语言的EBNF表示 <常量定义>::=<标识符>=<无符号整数> <标识符>::=<字母>={<字母>|<数字>} <加法运算符>::=+|- <乘法运算符>::=*|/ <关系运算符>::==|#|<|<=|>|>= <字母>::=a|b|…|X|Y|Z <数字>::=0|1|2|…|8|9-lexical analyzer production and application design (1) procedure main structural elements : narrative%%%% Rules of Procedure supporting part (2) the main structure of the narrative here to tell us so The LETTER, DIGIT, IDENT (identifier, usually defined as the beginning of the alphabet alphanumeric strings) and STR (string constants, usually defined as double quotes name of the string of characters) what it meant. This part also contains some initialization code. cases# include use as to the use of standard documents and the first to the (forward, references). these codes should labeled "% (" and ")%" between some of the rules
Platform: | Size: 4096 | Author: 黄启龙 | Hits:

[ELanguage1111

Description: 的语法非常容易使用EBNF进行重写,所以很适合使用递归下降的方法来分析-The syntax is very easy to use EBNF to rewrite, so it is suitable for the decline in the use of recursive methods to analyze
Platform: | Size: 4096 | Author: nihao | Hits:

[ELanguagetiny-parse

Description: Syntax of TINY+ An EBNF grammar for TINY+ is as follows (Strings in bold are terminals): 1. program -> declarations stmt-sequence 2. declarations -> decl declarations |² 3. decl -> type-specifi er varlist 4. type-specifi er -> int | bool | string 5. varlist -> identifi er { , identifi er } 6. stmt-sequence -> statement { statement } 7. statement -> if-stmt | repeat-stmt | assign-stmt | read-stmt | write-stmt | while-stmt 8. while-stmt -> while bool-exp do stmt-sequence end 9. if-stmt -> if bool-exp then stmt-sequence [else stmt-sequence] end 10. repeat-stmt -> repeat stmt-sequence until bool-exp 11. assign-stmt -> identifi er := exp 12. read-stmt -> read identifi er 13. write-stmt -> write exp 14. exp -> arithmetic-exp | bool-exp | string-exp 15. arithmetic-exp -> term { addop term } 16. addop -> + | --Syntax of TINY+ An EBNF grammar for TINY+ is as follows (Strings in bold are terminals): 1. program-> declarations stmt-sequence 2. declarations-> decl declarations |² 3. decl-> type-specifi er varlist 4. type-specifi er-> int | bool | string 5. varlist-> identifi er { , identifi er } 6. stmt-sequence-> statement { statement } 7. statement-> if-stmt | repeat-stmt | assign-stmt | read-stmt | write-stmt | while-stmt 8. while-stmt-> while bool-exp do stmt-sequence end 9. if-stmt-> if bool-exp then stmt-sequence [else stmt-sequence] end 10. repeat-stmt-> repeat stmt-sequence until bool-exp 11. assign-stmt-> identifi er := exp 12. read-stmt-> read identifi er 13. write-stmt-> write exp 14. exp-> arithmetic-exp | bool-exp | string-exp 15. arithmetic-exp-> term { addop term } 16. addop->+ |-
Platform: | Size: 1269760 | Author: gavinfeng | Hits:

[VHDL-FPGA-Verilogb

Description: 递归下降分析器的设计 首先将文法改写成EBNF形式,根据递归下降分析法基本思想编写程序。 -The design of recursive descent parser rewrite first EBNF grammar forms, according to the basic idea recursive descent analysis programming.
Platform: | Size: 55296 | Author: 卜丽娜 | Hits:

[Windows DevelopMDA

Description: 根据MDA的思想,给出了用于统一描述数据模型的数据词典的逻辑结构,以数据词典的方式在元模型层上对数据模型进行统一描述,在数据词典的基础上分析了异构数据模型之间的数据映射关系。采用EBNF范式对描述映射关系的语法进行形式化定义和描述,同时给出映射关系的相关语义说明。在研究的基础上实现了数据映射功能,并投入实际应用,文中给出数据映射的应用实例。-This article present a kind of Data Mapping techenology based MDA,descript the Mapping Relation conformably and normally based the united discription of Data Model. At the same time on the MetaModel level of Data Dictionary and based Data Dictionary this article analyse the Mapping Relation between heterogeneous Data Models.It define and Formalize the syntax of the Mapping Relation and provide EBNF to discribe the syntax of the Mapping Relation,present the semantic explaination and graphic symbols of modeling elements of Mapping Relation that can be used to visible modeling.Then on the base of the research of Mapping Relation,this article show how to accomplish the Mapping Relation and present a example of application of Mapping Relation.
Platform: | Size: 630784 | Author: 陈中 | Hits:

[JSP/Javafirst.pl

Description: 能根据 EBNF 生成first集的perl脚本-EBNF first set according to the perl script generated
Platform: | Size: 1024 | Author: hanyang | Hits:

[ELanguagecifa

Description: 词法分析器c语言实现的源代码,实验语言问ebnf- Lexical analyzer lexical analyzer c source code language implementation of the source code, and the experimental language ebnf asked
Platform: | Size: 2048 | Author: blue | Hits:

CodeBus www.codebus.net