编译原理
沐雨金鳞
大行不顾细谨
展开
-
FIRST集与FOLLOW集
First集怎样理解FIRST集呢?顾名思义就是一段文法所有可能的出现的开始符号的集。 求FIRST集的步骤如下:若X->a..,则将终结符a加入FIRST(X)中;若X->e ,则将终结符e加入FIRST(X)中(e表示空集);若 X->BCD…E,则将First(B)所有元素(除了空集)加入 First(X),然后检测First(B),若First(B)中不存...转载 2018-04-26 17:33:44 · 776 阅读 · 1 评论 -
LL(1)文法分析器简单实现
文法: E->E+T | T T->T*F | F F->(E)|i123消除左递归: E->TH H->+TH|e(空) T->FY Y->*FY|e F->(E)|i12345非终结符集:...转载 2018-04-26 17:36:25 · 3852 阅读 · 0 评论 -
编译原理:LL(1)文法 语法分析器(预测分析表法)
设计要求:对于任意输入的一个LL(1)文法,构造其预测分析表,并对指定输入串分析其是否为该文法的句子。思路:首先实现集合FIRST(X)构造算法和集合FOLLOW(A)构造算法,再根据FIRST和FOLLOW集合构造出预测分析表,并对指定的句子打印出分析栈的分析过程,判断是否为该文法的句子。//文法 E->TK K->+TK K->$ T->FM M-&...转载 2018-04-28 20:14:38 · 19727 阅读 · 0 评论 -
【编译原理】语法分析(一)
词法分析器把源程序转换成了一个词素序列,它让我们知道了一个符号序列’i’、’f’是一个关键词”if”,而一个符号序列’1’、’2’、’3’、’4’是一个常量”1234”等等。但是,词法分析器的工作也到此为止了,它不能说明几个词素之间的关系。例如,对于词素串”int”、”x”、”=”、”1”、”;”,词法分析器不知道它是一个语句;对于词素串”int”、”x”、”=...转载 2018-05-07 20:02:24 · 1993 阅读 · 0 评论 -
【编译原理】语法分析(二)
在第一篇文章中,我们介绍了如何用上下文无关文法描述一种语言的语法,和如何使用推导和规约构造一棵语法分析树,以及如何对文法进行转换使之能够更适用于语法分析。在本篇文章中,我们将介绍如何使用自顶向下的方法进行语法分析,进一步的,我们将介绍一种更高效的预测分析方法。文法&约定为了下文需要和减少重复,我们先给出在下文中用到的一个表达式文法和一些符号约定。...转载 2018-05-07 20:04:35 · 3137 阅读 · 0 评论 -
【编译原理】语法分析(三)
常用的语法分析方法包括自顶向下和自底向上的方法,在上一篇文章中已经介绍了自顶向下的语法分析方法,本文将介绍自底向上的语法分析方法。文法&约定按照惯例,我们给出一个贯穿全文的表达式文法G: E→E+T|T T→T*F|F F→(E)|id123以及使用的符号约定:大写字母:表示非终结符号,如A、B、C等;小写字...转载 2018-05-07 20:05:25 · 1486 阅读 · 0 评论 -
【编译原理】语法分析(四)
本文是语法分析的第四篇文章,第一篇文章介绍了基本的文法、推导和归约的概念,第二篇文章介绍了自顶向下的语法分析和LL(1)方法,第三篇文章介绍了自底向上的语法分析和SLR方法。本文将承接第三篇文章,介绍比SLR更为强大的LR方法。PS:阅读本文需要掌握前三篇文章的知识,建议读者先阅读前三篇文章。文法&约定...转载 2018-05-07 20:07:36 · 1113 阅读 · 1 评论