02-01 将会为教学用语言COOL编写编译器,把COOL编译成MIPS汇编语言。会分为五个部分讲解,首先是写一个COOL程序,程序本身会是一个解释器。之后是词法分析、语法分析、语义分析、代码生成。这些部分都是分离的。即在我们自己实现语法分析时,我们将自己完成的部分嵌入到一个参考编译器中。参考编译器 ...
分类:
其他好文 时间:
2016-05-22 00:38:52
阅读次数:
205
js支持词法作用域,即除了极少的例外,对变量的引用会被绑定到声明变量最近的作用域中。 js不支持块级作用域,即变量定义的作用域并不是离其最近的封闭语句或代码块,而是包含它们的函数。 不了解这个会产生一些微妙的bug。 这里的for循环里声明了一个局部变量player,但由于js中变量是函数级作用域, ...
分类:
编程语言 时间:
2016-05-20 09:54:48
阅读次数:
173
(一) 首要概念要理清: 1. 在lua中,函数是一种"第一类值",他们具有特定的词法域."第一类值"表示在lua中函数与其他传统类型的值(例如数字和字符串)具有相同的权利. 2. 函数可以存储到变量中(无论全局变量还是局部变量)或table中,可以作为实参传递给其他函数,还是作为其他函数的返回值; ...
分类:
其他好文 时间:
2016-05-19 14:41:50
阅读次数:
215
词法分析 词法分析将源代码的字符流转化为标记(token)集合,单个字符是程序编写过程的最小元素,而标记则是编译过程的最小元素,关键字、变量名、字面量、运算符都可以成为编辑,如“int a+b=2”这句代码中包含了6个标记,分别是int、a、=、b、+、2,虽然关键字int由三个字符构成,但是它只是 ...
分类:
编程语言 时间:
2016-05-18 12:34:02
阅读次数:
136
本文所有Demo的运行环境为nodeJS, 参考:让nodeJS支持ES6的词法 babel的安装和使用 ; 函数的默认值: 如果有参数 ,那就用参数, 如果没有参数, 那就用默认的参数; ajax的请求经常要做这些判断, ES6规定了新的表达式, 让判断参数的逻辑更加简单; 如果调用函数的时候不想 ...
分类:
其他好文 时间:
2016-05-18 01:45:25
阅读次数:
371
这里收集了sicily的陈炬桦老师编译原理实验课程的题目,曝上代码以供参考。 (如果这里的代码对您的思路有些许启发的话,请您点击一下推荐,给予作者写作的鼓励,不胜感谢!) 1-词法分析 题目1000:View Code AC代码:View Code 题目1001:View Code AC代码:Vie ...
分类:
其他好文 时间:
2016-05-17 16:09:23
阅读次数:
3107
这两天都没更, 主要是马上要连着要考三门(16, 18, 20), 都没时间学编译器了, 等过了这段时间应该能有很多时间来搞这个, 之后我准备先把之前写的那个词法分析器生成器改造一下, 弄个最简版的正则引擎出来玩玩, 不过这些都是后话了, 今天似乎也没什么时间, 也就把这单元的作业写了一下... 代 ...
分类:
其他好文 时间:
2016-05-14 20:05:21
阅读次数:
173
boa服务器make错误 boa服务器make错误 boa服务器make错误 编译一个linux下的c系统,包含词法和语法分析模块,Linux上用bison和flex。yacc是一个文法分析器的生成器,bison即是yacc的GNU版本.Lex和YACC是用于构造词法分析机和语法解释器的工具,利用L ...
分类:
其他好文 时间:
2016-05-13 10:08:09
阅读次数:
169
前期编译java源代码——>JVM字节码(class文件)
大致的编译过程:
解析与填充符号表——>注解处理——>分析与字节码生成
具体就是词法分析、语法分析、构建语法树等过程,此阶段几乎不会对代码做出优化,撑死就是做一些冗余处理,比如 int a = 3 + 1; 改成 int a = 4;等。
值得一说的是解语法糖的过程,java有大量的语法糖,泛型、自动装/拆箱、变长参数、foreac...
分类:
其他好文 时间:
2016-05-13 00:33:08
阅读次数:
150