1、定义解释器模式(interpreter),给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语句中的句子。2、解决的问题 如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语句中的句子,这样就可以构造一个解释器,该解释器通过.....
分类:
其他好文 时间:
2015-07-02 09:59:14
阅读次数:
203
解释器模式:
给定一个语言,定义了它的文法的一种表示,并定义了一个解释器,这个解释器使用该表示来解释语言中的句子。
Given a language, define a representation for its grammar along with an interpreter that uses the representation to interpret sentences in th...
分类:
其他好文 时间:
2015-06-30 18:32:37
阅读次数:
110
书是龙书
编译器中常用的方法可以分为自顶向下和自底向上的。一个是从语法分析树的顶部开始向底部构造语法分析树,一个则是从叶子节点开始,逐渐向根结点构造,这两种分析方法中,语法分析器的输入总是照着从左向右。
二义性:如果一个文法可以为某个句子生成多棵语法分析树,那么他就是二义性的。
例如例子id + id * id
消除左递归
如果一个文法中有一个非终结符号A使得对某个串a...
分类:
其他好文 时间:
2015-06-29 22:21:11
阅读次数:
231
原理数据结构 1 // GO 2 private static Map,Integer> GO 3 = new HashMap,Integer>(); 4 5 // 规范族集 C 6 private static Map>> C 7 ...
分类:
编程语言 时间:
2015-06-25 22:55:38
阅读次数:
781
1.意图给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。2.别名无3.动机如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各种实例表述为一种简单语句中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。4.适用性以下情况使用Interpreter模式:
当有一种语言需要解释执行,并且你可以将该语言中的句子表示为一个...
分类:
其他好文 时间:
2015-06-25 21:17:48
阅读次数:
113
原理存储文法的数据结构 1 typedef struct P{ 2 char key; // 产生式左部 3 char * value [16]; // 产生式右部 4 int count; // 几组规则 5 }P; 6 typede...
分类:
编程语言 时间:
2015-06-25 21:12:45
阅读次数:
163
原理数据结构1 G = {'key':[v1,v2,v3],'key':[v1,v2,v3]};2 VN = [];3 Vt = [];4 FirstVT = {'key':[v1,v2,v3],'key':[v1,v2,v3]};也就是map里放list,同样将文法压缩,对于产生式相同的发到一个m...
分类:
编程语言 时间:
2015-06-25 20:59:33
阅读次数:
128
先来看一下西天取经团队成员的文法定义,以便对文法有个感性认识。算是对编译原理文法知识通俗趣味理解吧。
分类:
其他好文 时间:
2015-06-23 10:11:02
阅读次数:
116
(21)解释器模式
定义:给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子。
类型:行为类模式
类图:
解释器模式是一个比较少用的模式。
解释器模式的结构
l 抽象解释器:声明一个所有具体表达式都要实现的抽象接口(或者抽象类),接口中主要是一个interpret()方法,称为解释操作。具体解释任务由它的各个实现类来完成,具体的解释...
分类:
其他好文 时间:
2015-06-21 09:21:19
阅读次数:
130
该方案实现了一个分析C语言的词法分析+解析。注意:1.简单语法,部分秕。它可以在本文法的基础上进行扩展,此过程使用自上而下LL(1)语法。2.自己主动能达到求First 集和 Follow 集。3.处终结符外(有些硬编码的成分),终结符的文法能够自己定义,也就是说读者能够自己定义文法。4.为方便理解...
分类:
编程语言 时间:
2015-06-17 13:13:07
阅读次数:
452