Compiling Technique
文章平均质量分 66
键盘上的疯兔
乐于钻研问题背后的规律,并乐于编程证实。
展开
-
LR与SLR(FOLLOW集与搜索符)的区别
LR与SLR(FOLLOW集与搜索符)的区别语法分析中,SLR使用的是FOLLOW集,LR使用的是搜索符,这是它们功能强弱不一的根本原因。FOLLOW集的计算方法:1. 对于方法的开始符S,置#于FOLLOW(S)中;2. 若A->αBβ是一个产生式,则把FIRST(β)/{ε}加至FOLLOW(B)中;3. 若A->αB是一个产生式,则原创 2011-02-28 12:11:00 · 6552 阅读 · 0 评论 -
LEMON源码分析笔记——分割源码
LEMON源码分析笔记——分割源码五千多行代码集于一个文件,这不是什么明智之举。根据源码中的提示,可以编程一个分割程序。分割程序的工作是,识别出文件名,并把用它创建文件,写入相应内容。在处理过程序,记录头文件。在识别出源文件时,把在其前的头文件#include进去。理论上这样做是可行的。因为源文件所需的定义或声明一定在其前的头文件中包含了。而源文件之间没有什么瓜葛。但LEMON源代码并不是原创 2011-03-23 09:21:00 · 2490 阅读 · 0 评论 -
构建LALR(1)项目集族
构建LALR(1)项目集族 构造LALR(1)项目有两种思路。一种是:先构造LR(1)项目,再合并同心项目;另一种是:先构造LR(0)项目,再为为其配上搜索符。本文介绍第二种方法。 搜索符生成有两种方法。一是,自己生成。二是,上一项目集传播获得的。项目集之间传播搜索符遇到的问题是:若多个项目集可以直接转移到一个项目集I上,那么每当I接收到,这些项目集传播过来的新的搜索符时,原创 2011-03-01 11:06:00 · 8018 阅读 · 2 评论 -
LEMON源码分析——项目FOLLOW集求法
LEMON源码分析——项目FOLLOW集求法都知道FOLLOW集是针对非终结符的,而LEMON中的项目FOLLOW集是针对项目的,指的是项目产生式左部非终结符FOLLOW集。 知道了项目FOLLOW集,它的求法也自然清楚了。这里把项目分成两类,它们的FOLLOW集来源是不一样的:A. 号点不在最左的项目,FOLLOW集来源于生产式相同,点号在它前面的项目。B.原创 2011-04-06 20:30:00 · 1631 阅读 · 0 评论 -
LEMON源码分析笔记——压缩分析表
LEMON源码分析笔记——压缩分析表2011-4-1陕师大长安区小雨在几乎没有注释的情况下分析此段代码,是一件令人头疼的事!分析表本来是一个二维数组。为了节省空间,LEMON对分析表进行了巧妙的压缩。压缩过程一、 线性化二维表分析表的行标为状态,列标为文法符号的编号。假设有m个状态,与n个文法符号。则每个状态对应一个长度为n的一维数组,这里把它原创 2011-04-01 18:21:00 · 1624 阅读 · 2 评论 -
LEMON源码分析笔记——状态默认动作
LEMON源码分析笔记——状态默认动作2011-4-6陕师大阴为压缩分析表,将状态中使用最频的生产式所对应的动作,作为状态默认动作。状态默认动作保存在状态的iDflt域中。设置状态默认动作1. 对每个状态,找出使用最频的生产式,然后标识它对应的动作。标识的办法是:将第一个动作的先行符改为{default},而其它的只将其类型由REDUCE改成NOT_USED原创 2011-04-06 10:31:00 · 1454 阅读 · 0 评论 -
C注释正则式及其效率思考
C注释正则式及其效率思考2012-5-13 广州•天河 雨 下面给出C注释正则式与自动机相互转换的例子。两个例子都不考虑注释标识符在字符串常量中的情形(如:const char* start = "/*", *end = "*/";)。自动机转换成正则式: 识别C注释的自动机很容易画出来(^/*表示除'/'及'*'以外的所有字符): 图1TMS_LI的正则为原创 2012-05-13 11:02:37 · 2095 阅读 · 0 评论 -
自动机、正则式、正则文法和上下文无关文法
自动机、正则式、正则文法和上下文无关文法自动机概念[1]:自动机是有限状态机(FSM)的数学模型。FSM 是给定符号输入,依据(可表达为一个表格的)转移函数“跳转”过一系列状态的一种机器。包括:确定有限自动机DFA,非确定有限自动机NFA有限自动机的扩展:下推自动机(PDA) 线性有界自动机(LBA)图灵机 (Turing Machine)无限自动机百度百原创 2012-05-13 11:27:19 · 10945 阅读 · 2 评论 -
CSV解析器实现
CSV解析器实现 确切地说应该是TSV,即分隔符是Tab而不是Comma。除分隔符之外,CSV与TSV大同小异。 这里使用TSV主要原因是:Excel导出的CSV不是Unicode编码,这样会导致某些符号丢失,而导出TXT时,可以选择Unicode,但格式却是TSV。TSV语法可以用以下文法来描述:p0:P -> Tep1:T -> RT|εp2:R原创 2014-02-23 12:35:19 · 3341 阅读 · 0 评论