有穷自动机是编译原理讲的,在词法分析中使用比较广泛。因为它仅仅能分析正则规则的语言,因此使用起来比较简单。现在我们使用它来实现printf...
分类:
其他好文 时间:
2015-04-10 11:26:41
阅读次数:
121
要使用ANTLR生成语言的词法分析器(Lexer)跟语法分析器(Parser),我们需要告诉ANTLR我们的语言的文法(Grammar)。ANTLR采用的是上下文无关文法(Context Free Grammar),使用类似BNF的符号集来描述。使用上下文无关文法的语言比较常用的Parser有两种,LL Parser和LR Parser,而ANTLR帮我们生成的是前者。...
分类:
其他好文 时间:
2015-04-09 08:53:29
阅读次数:
644
编译器的工作过程中可以分为几个阶段:预处理-》词法分析-》语法分析-》语义分析-》中间代码生成-》目标代码生成。其中,优化的机会一般存在于中间代码生成或目标代码生成这两个阶段。尤其是在中间代码生成阶段所做的优化,这类优化不具备设备相关性,在不同的硬件环境中都能通用。debug下,为了调试方便,保持原...
分类:
编程语言 时间:
2015-04-07 15:30:32
阅读次数:
377
本篇笔记是我对龙书第2.3-2.5节内容的理解,主要介绍编译器前端关于语法分析的众多基础概念。下篇笔记将根据本篇笔记的主要内容,实现一个针对简单表达式的后缀式语法翻译器Demo(原书中是java实例,我给出的将是逻辑一致的Python版本的实现)。
1. 语法分析(Syntax Analysis)
简单来说,语法分析的任务是分析输入的符号字符串(string of symbols, 通常是词法...
分类:
其他好文 时间:
2015-04-06 10:11:33
阅读次数:
129
能识别小数,科学记数法表示的数。
不多解释,代码先上:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
const int maxn = 1002;
const int n_key = 40...
分类:
其他好文 时间:
2015-04-06 07:40:39
阅读次数:
181
第六章: 再论函数 Lua 中的函数是带有词法定界(lexical scoping)的第一类值(first-class values)。第一类值指:在 Lua 中函数和其他值(数值、字符串)一样,函数可以被存放在变 量中,也可以存放在表中,可以作为函数的参数,还可以作为函数的返回值。词法定界指:被嵌...
分类:
其他好文 时间:
2015-04-04 22:34:13
阅读次数:
733
(1)作用域一个变量的作用域(scope)是程序源代码中定义的这个变量的区域。1. 在JS中使用的是词法作用域(lexical scope)不在任何函数内声明的变量(函数内省略var的也算全局)称作全局变量(global scope)在函数内声明的变量具有函数作用域(function scope),...
分类:
Web程序 时间:
2015-04-04 15:13:18
阅读次数:
205
标准C语言中包括一组三字符组,使C语言程序可以只用ISO
646-1083不变代码集编写,这是七比特ASCII代码集的子集,是许多非英语国家字符集公用的代码集。三字符组以两个连续问号开头,见上图。标准C语言还提供一些记号的重拼和定义一些运算符的宏替换的头文件,但与三字符组不同的是,这些替换无法在字符串型常量和字符型常量中识别。
源程序中三字符组的转换发生在词法分析(转换为记号)之前和识别字符...
分类:
编程语言 时间:
2015-04-04 09:24:13
阅读次数:
241
摘自《Linux程序设计》第四版,人民邮电出版社c语言程序的编译与调试>程序编译过程:词法分析-->语法分析-->中间代码生成-->代码优化-->目标代码生成gcc编译器:预处理(preprocessing)-->编译(compilation)-->汇编(assembly)-->连接(link)文件...
分类:
编程语言 时间:
2015-04-03 22:29:17
阅读次数:
202