自顶向下的语法分析即是将输入词素从树的根节点开始,按照先根顺序开始创建语法树的各个结点,也是寻找输入串的最左推导的过程。
常见的递归下降就是自顶向下语法分析机制的一种,lcc就是使用这种机制,但是这个机制需要回溯(或者使用预测分析表,向前看k个输入词素,即LL(k)文法)。
FIRST集合和FOLLOW集合:
鉴于递归下降的语法分析在处理有多产生式的非终结符号时,难以确定究竟应该使用哪个产生式,
而FIRST和FOLLOW集合可以使我们依据下一个输入词素确定究竟使用哪个产生式。
FIRST(a)被定义为可从任意文法符号串a推导得到的串的首符号的集合。
对于非终结符号A,FOLLOW(A)被定义为可能在某些句型中紧跟在A右边的终结符号的集合。
LL(1)文法:
第一个L表示从左向右扫描输入,第二个L表示产生最最左推导,而1则表示在每一步中只需要向前看一个输入符号就可以决定下一步语法分析动作。