码迷,mamicode.com
首页 >  
搜索关键字:抽象语法树    ( 120个结果
atitit.自己动手开发编译器and解释器(2) ------语法分析,语义分析,代码生成--attilax总结
atitit.自己动手开发编译器and解释器(2) ------语法分析,语义分析,代码生成--attilax总结   1. 建立AST 抽象语法树 Abstract Syntax Tree,AST) 1 2. 建立AST 语法树----递归下降(recursive descent)法 2 3. 语法分析概念 2 3.1. 上下文无关语言,非终结符(nonterminal symbol)...
分类:其他好文   时间:2014-12-01 22:31:25    阅读次数:430
用python演示一个简单的AST(抽象语法树)
如果对'a + 3 * b'进行解释,当中a=2,b=5代码非常easy,就不再进行具体的解释了。Num = lambda env, n: nVar = lambda env, x: env[x]Add = lambda env, a, b:_eval(env, a) + _eval(env, b)...
分类:编程语言   时间:2014-10-06 15:02:30    阅读次数:196
用python演示一个简单的AST(抽象语法树)
假设对'a + 3 * b'进行解释,其中a=2,b=5 代码很简单,就不再进行详细的解释了。 Num = lambda env, n: n Var = lambda env, x: env[x] Add = lambda env, a, b:_eval(env, a) + _eval(env, b) Mul = lambda env, a, b:_eval(env, a) * _eval(e...
分类:编程语言   时间:2014-10-04 12:29:06    阅读次数:519
解释器模式分析、结构图及基本代码
定义:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 适用地:当有一个语言需要解释执行,并且你可将该语言中的句子表示为一个抽象语法树时,可使用解释器模式。如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。像正则表达式、浏览器应...
分类:其他好文   时间:2014-07-27 11:25:22    阅读次数:198
Interpreter - 解释器模式
定义 给定一个语言, 定于它的文法,并定义一个解释器,这个解释器使用改表示来解释语言中的句子。 类型 行为型模式 案例 像非常熟知的正则表达式就是描述字符串模式的一种标准语言,它为每一个模式都构造了一个特定的算法。 AbstractExpression - 一个抽象的解释操作,这个接口为抽象语法树中所有的节点所共享...
分类:其他好文   时间:2014-07-16 14:32:56    阅读次数:288
抽象语法树(Abstract Syntax Tree)
抽象语法树(Abstract Syntax Tree)   抽象语法树(AST)表示组成程序的结构,可以让程序员更容易使用,F# 适宜这种开发的一个原因就是它的联合类型。这种类型非常适合表示语言,因为它可以用来表示相关而结构不相同的项目。下面就是抽象语法树的例子:   type Ast =     | Ident of string     | Val of System.Double...
分类:其他好文   时间:2014-06-20 11:33:28    阅读次数:200
为算术语言(Arithmetic-Language)实现编译器和解释器
为算术语言(Arithmetic-Language)实现编译器和解释器   到目前,我们更注重的是语言本身的设计,即前端,没有涉及语言的编译器或解释器的实现,即后端。在这一节,我们将关注后端的实现,由抽象语法树(Abstract Syntax Tree,AST)定义的一种简单的算术语言。第一小节所展示的抽象语法树是基于联合类型的。 在下一章“解析文本”,我们还要回到这个示例,来构建这种语言的...
分类:其他好文   时间:2014-06-20 10:48:39    阅读次数:203
解释抽象语法树
解释抽象语法树   创建了抽象语法树之后,有两个选择:解释或编译。解释,简单地说,就是遍历树,同时执行操作;编译,就是改变成其他形式,对于机器执行来说可能更简单,通常可能更快。这一小节先讨论如何解释结果,下面一小节再讨论编译的内容,最后,再讨论何时应该用解释,何时应该用编译的问题。 下面的例子是一个很小解释器,解释抽象语法树的主要工作由函数interpret 完成,它遍历树,并同时执行需要的...
分类:其他好文   时间:2014-06-20 09:58:50    阅读次数:240
编译抽象语法树
编译抽象语法树   对大多数开发人员来说,编译就意谓着产生本地代码,给人感觉就是一个字,难。但是,并不一定要产生本地代码,对于 DSL,通常产生其他更加通用的编程语言。.NET 框架提供几个把抽象语法树编译成程序的功能。 技术的选择取决于几个因素。例如,如果语言针对的是开发人员,那么,生成文本文件就足够了,内容可以是 F#,也可以是其他语言,或者是编译过的程序集,能在程序中使用;然而,如果针...
分类:其他好文   时间:2014-06-08 14:43:58    阅读次数:213
Javacript中(function(){})() 与 (function(){}()) 区别 {转}
首先,如果从AST(抽象语法树)的角度来看,两者的AST是一模一样的,最终结果都是一次函数调用。因此,就解析器产生的结果论而言,两者是没有区别的。其次 ,从作用上看,前文已经说了,两者的作用都是创建一个函数并调用之。那么为什么要创建一个函数并立即调用呢,我想大多数是因为javascript的代码默认...
分类:编程语言   时间:2014-05-07 10:44:18    阅读次数:396
120条   上一页 1 ... 10 11 12
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!