在任何并发性应用程序中,异步事件处理都至关重要。无论事件的来源是什么(不同的计算任务、I/O 操作或与外部系统的交互),您的代码都必须跟踪事件,协调为响应它们而执行的操作。应用程序可以采用两种基本方法之一来实现异步事件处理: 阻塞:一个等待事件的协调线程。 非阻塞:事件向应用程序生成某种形式的通知, ...
分类:
其他好文 时间:
2018-11-06 21:25:42
阅读次数:
197
1950与1960年代 有三个现代编程语言于1950年代被设计出来,这三者所衍生的语言直到今日仍旧广泛地被采用: Fortran (1955),名称取自"FORmula TRANslator"(公式翻译器),由约翰·巴科斯等人所发明; LISP,名称取自"LISt Processor"(列举处理器) ...
分类:
其他好文 时间:
2018-11-05 12:53:26
阅读次数:
282
1. 解析引擎 解析过程分为词法解析和语法解析。 解析引擎在 parsing 包下,包含两大组件: 词法解析器用于将SQL拆解为不可再分的原子符号,称为Token。并根据不同数据库方言所提供的字典,将其归类为关键字,表达式,字面量和操作符。 再使用语法解析器将SQL转换为抽象语法树。例如: 解析成的 ...
分类:
数据库 时间:
2018-10-22 01:17:15
阅读次数:
397
不同 + 编译型语言: + 编译型程序所生成的指令时二进制形式的机器码和操作数, 就是所谓的二进制流, 二进制程序是CPU可以直接识别执行的 + 解释性语言: + 脚本语言的解释器是二进制形式的, 可以被CPU直接识别的, 但是脚本解释器的输入是脚本语言字符串, CPU执行脚本语言解释器, 而脚本语 ...
分类:
编程语言 时间:
2018-10-12 01:20:07
阅读次数:
228
上一章我们得到了Token序列,而语法分析就是根据Token序列构造抽象语法树的过程,抽象语法树是一种用来描述程序代码语法 结构的树形表示方式,这种结构化的表示方式将为后面语义分析、代码生成阶段提供极大的便利。语法树的每一个节点都代表了程序代码中的一个语法结构,如包、类型、修饰符、运算符、接口、返回 ...
分类:
其他好文 时间:
2018-09-25 10:14:13
阅读次数:
572
什么是AST 树是一种重要的数据结构,由根结点和若干颗子树构成的。 根据结构的不同又可以划分为二叉树,trie树,红黑树等等。今天研究的对象是AST,抽象语法树,它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。通过操作这棵树,可以精准的定位到声明、赋值、运算语句,从而实 ...
分类:
Web程序 时间:
2018-07-31 21:47:21
阅读次数:
335
个人总结:读完这篇文章需要15分钟,文章介绍了抽象语法树与js引擎解析这些语法树的过程,提到了懒解析——即转换为AST的过程中不直接进入函数体解析,当这个函数体需要执行的时候才进行相应转换。(因为有的函数体只是声明了,并没有实际被调用) 解析,语法抽象树及最小化解析时间的 5 条小技巧 这是 Jav ...
分类:
编程语言 时间:
2018-07-29 12:59:57
阅读次数:
202
承接Python设计模式(3):结构型 13. Interpreter(解释器) 意图:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 适用性: 当有一个语言需要解释执行, 并且你可将该语言中的句子表示为一个抽象语法树时,可使用解释器模式。而当存在以 ...
分类:
编程语言 时间:
2018-07-12 19:54:22
阅读次数:
202
阅读下面这篇文章,需要20分钟: 一起了解下 JS 引擎是如何运作的吧! JS 的运作机制可以分为 AST 分析、引擎执行两个步骤: JS 源码通过 parser(分析器)转化为 AST(抽象语法树),再经过 interperter(解释器)解析为 bytecode(字节码)。 为了提高运行效率,o ...
分类:
Web程序 时间:
2018-06-25 13:04:30
阅读次数:
254
clang Clang是LLVM的前端,可以用来编译C,C++,ObjectiveC等语言。传统的编译器通常分为三个部分,前端(frontEnd),优化器(Optimizer)和后端(backEnd)。在编译过程中,前端主要负责词法和语法分析,将源代码转化为抽象语法树;优化器则是在前端的基础上,对得 ...
分类:
其他好文 时间:
2018-05-25 19:36:27
阅读次数:
179