项目的完整代码在 "C2j Compiler" 写在前面 这个系列算作为我自己在学习写一个编译器的过程的一些记录,算法之类的都没有记录原理性的东西,想知道原理的在龙书里都写得非常清楚,但是我自己一开始是不怎么看得下来,到现在都还没有完整的看完,它像是一本给已经有基础的人写的书。 在parse包里一共 ...
分类:
其他好文 时间:
2019-08-17 10:42:09
阅读次数:
90
项目的完整代码在 "C2j Compiler" 通过上一篇对几个构造自动机的基础数据结构的描述,现在就可以正式来构造有限状态自动机 我们先用一个小一点的语法推导式来描述这个过程 初始化 状态0是状态机的初始状态,它包含着语法表达式中的起始表达式,也就是编号为0的表达式: 0: s . e 这里的点也 ...
分类:
其他好文 时间:
2019-08-17 10:35:25
阅读次数:
109
本来这次想好好写一下博客的...结果耐心有限,又想着烂尾总比断更好些。于是还是把后续代码贴上。不过后续代码是继续贴在BNF容器里面的...可能会显得有些臃肿。但目前管不了那么多了。先贴上来吧hhh。说不定哪天觉得羞耻又改了呢。参考资料建议参考《编译器设计》一书。 目前完成进度 : 目前已经完成了表驱 ...
分类:
编程语言 时间:
2019-08-10 13:35:53
阅读次数:
128
原文: http://106.13.73.98/__/12/ 目录 . 函数 1. 定义 2. arguments 参数 3. 全局变量与局部变量 4. 语法分析 . 内置对象和方法 1. 自定义对象 2. 类之继承 3. Date 4. JSON 5. RegExp 6. Math . 函数 1. ...
分类:
编程语言 时间:
2019-08-08 21:44:18
阅读次数:
119
1.1 编译原理 分词/词法分析(Tokenizing/Lexing) 将由字符组成的字符串分解成(对编程语言来说)有意义的代码块,这些代码块被称为词法单元(token)。 解析/语法分析(Parsing) 这个过程是将词法单元流(数组)转换成一个由元素逐级嵌套所组成的代表了程序语法结构的树。这个树 ...
分类:
编程语言 时间:
2019-08-08 00:09:15
阅读次数:
136
<!doctype html> 编译原理 编译原理概述 1、编译概念: 从高级语言->目标代码的过程(汇编语言or机器码) 2、编译器的结构: 分析部分/前端(front end)->与源语言相关 词法分析>>词法单元流 语法分析>>语法分析树parse tree 语义分析>>语法树 中间代码生成> ...
分类:
其他好文 时间:
2019-07-23 22:33:35
阅读次数:
155
1.概述 PHP(本文所述案例PHP版本均为7.1.3)作为一门动态脚本语言,其在zend虚拟机执行过程为:读入脚本程序字符串,经由词法分析器将其转换为单词符号,接着语法分析器从中发现语法结构后生成抽象语法树,再经静态编译器生成opcode,最后经解释器模拟机器指令来执行每一条opcode。 在上述 ...
分类:
Web程序 时间:
2019-07-23 13:39:54
阅读次数:
119
词法分析 和 语法分析 生成器: 迭代器:python内置的一种节省空间的工具 生成器的本质就是一个迭代器 迭代器和生成器的区别:迭代器python自带的,生成器程序员自己写的 写一个生成器 函数中将return 改成yield就是生成器 return 可以返回值 可以写多个但是只执行一次 yiel ...
分类:
其他好文 时间:
2019-07-19 18:40:00
阅读次数:
97
sql语句的执行步骤:1.语法分析2.语义分析3.视图转换4.表达式转换5.选择优化器6.选择连接方式7.选择连接顺序8.选择数据的搜索路径9.运行“执行计划”sql查询处理的步骤:(8)SELECT(9)DISTINCT(11)<TOP_specification><select_list>(1)FROM<left_table>(3)<join_type
分类:
数据库 时间:
2019-07-04 18:54:05
阅读次数:
168
四则运算的语法规则(语法规则是分层的) 1. x 表示 x 出现零次或多次 2. x | y 表示 x 或 y 将出现 3. ( ) 圆括号,用于语言构词的分组 以下规则从左往右看,表示左边的表达式还能继续往下细分成右边的表达式,一直细分到不可再分为止。 expression : addExpres ...
分类:
编程语言 时间:
2019-06-30 19:11:29
阅读次数:
163