LL(K)语法分析技术是建立在预测分析的技术之上的。我们先来了解预测分析技术。考虑以下文法: 当使用该文法对(1*2-3)+4和(1*2-3)进行分析,前者因该调用E->E+T,而后者应该调用E->T,怎么确定到底使用哪个产生式呢?这就要使用预测分析技术来构建预测分析语法分析器,LL(k)...
分类:
其他好文 时间:
2015-05-02 18:04:37
阅读次数:
549
当我们写好一份源代码,提交给编译器的时候,这是编译器对我们提交代码进行词法分析。这个整个编译过程的第一步。词法分析器将我们的提交的代码看作是一个文本,它工作的目的就是将这个文本中不符合我们所使用的语言(c++或者java)的单词(字符串)挑选出来,以及将符合语言的单词(字符串)进行分类。 对于...
分类:
其他好文 时间:
2015-04-30 23:07:07
阅读次数:
220
1 重逢ANTLR最早知道ANTLR是当年学习Apache Derby数据库源码时,在看到SQL解析那一层时,第一次看到编译原理在实际项目中的应用,惊叹之余也只能望而却步。之前也根据网上一些资料尝试了一下,看介绍说ANTLR v4更加易用了,于是又好奇地试用一下。以下入门介绍主要参考ANTLR作者写的《The Definitive ANTLR 4 Reference》。1.1 ANTLR全景当我们...
分类:
其他好文 时间:
2015-04-30 21:53:30
阅读次数:
1569
这次实验被“过来人”们定位非常easy,实验内容例如以下:-----------------------------------------------------------------------------------对例如以下工作进行展开描写叙述(1)给出语言的词法规则描写叙述· 标识符、k...
分类:
其他好文 时间:
2015-04-30 14:04:41
阅读次数:
271
设x的值为3,y=0,则表达式y=(++x)+(++x)后,y的值是( ),不同编译器会有不一样的答案。先写结果:
C++:
y=10;
java:
y=9;
matlab:
y=6;
为什么会有这样的结果呢,到底哪个是对的?其实没有对错之分。原因是各编译器处理式子的方式不一样,这个在编译原理中我们学过。就是所谓的前缀表达式,中缀表达式,后缀表达式。什么意思呢?拿刚才的例子来说...
分类:
其他好文 时间:
2015-04-28 23:01:06
阅读次数:
222
FLEX词法分析器一、Lex和Yacc介绍Lex是一种生成扫描器的工具。扫描器是一种识别文本中的词汇模式的程序。一种匹配的常规表达式可能会包含相关的动作。这一动作可能还包括返回一个标记。当Lex接收到文件或文本形式的输入时,它试图将文本与常规表达式进行匹配。它一次读入一个输入字符,直到找到一个匹配的...
分类:
其他好文 时间:
2015-04-25 13:29:13
阅读次数:
263
import hjzgg.analysistable.AnalysisTable;import hjzgg.first.First;import hjzgg.follow.Follow;import hjzgg.treenode.TreeNode;import java.awt.BorderLayo...
分类:
编程语言 时间:
2015-04-24 22:42:42
阅读次数:
236
import java.util.LinkedHashMap;import java.util.Map;import java.util.Set;import java.util.TreeMap;import java.util.TreeSet;public class First { pri...
分类:
编程语言 时间:
2015-04-24 22:42:14
阅读次数:
204
编译原理(简单词法分析器下载)http://files.cnblogs.com/files/hujunzheng/%E7%AE%80%E5%8D%95%E8%AF%AD%E6%B3%95%E5%88%86%E6%9E%90%E5%99%A8.zip
分类:
其他好文 时间:
2015-04-24 22:40:49
阅读次数:
145
import hjzgg.first.First;import hjzgg.follow.Follow;import hjzgg.tablenode.TableNode;import hjzgg.treenode.TreeNode;import java.util.ArrayList;import ...
分类:
编程语言 时间:
2015-04-24 22:39:34
阅读次数:
209