LL(1)语法分析器的设计与实现
作者:万能超
指导老师:张玉州
摘要:语法分析是编译器的核心部分。词法分析只是将字符形式的源程序中的各个单词识别出来,形成单词的机内表示形式,但是这些单词串如何构成更大的语法成分—语句,那就要语法分析来完成。语法分析的主要任务是“组词成句”,即在词法分析识别出单词串的基础上,根据语言的语法产生式,识别出各种类型的句子,如“语句”、“程序”等,并给出这些句子的语法结构。
关键词:侯选式、匹配、非终结符、终结符、FIRST集、FOLLOW集
1引言
LL(1)文法是一类可以进行确定的自上而下语法分析的文法。而自上而下分析法的基本思想是从文法的开始符号S出发采用最左推导,试图一步一步地推出输入符号串α。换句话说,也就是以文法的开始符号S为语法树的根部,试图自上而下地为输入符号串(构造一棵语法树。如果能够构造这样一棵语法树:它的叶子结点从左到右排列恰好就是输入串α,则输入串α就是文法的句子,而这个语法树就是句子α的语法结构。如果不存在这样的一棵语法树,则输入符号出串α就不是这个文法的句子。)这种分析过程实质是一种试探过程,是反复使用不同产生式匹配输入符号串的过程。
若有文法
S->cAd
A->ab|a
输入串w=cad。为了自上而下地为这个串建立分析树,首先建立只有标记S单个结点树,输入指针指向w的第一个符号c。然后用S的第一个产生式来扩展该树,得到的树如图所示:
S S S
c A d
c A d c A d
(a)
a b a
(b)