* 语法分析是把单词流翻译成抽象语法树

  有两种构造抽象语法树的方法：从根结点到叶子结点构造(**自顶向下方法**)，从叶子结点到根结点构造(**自底向上方法)**。语法分析总是从左到右依次扫描单词流，这就是LL或LR文法里第一个字母L的含义。LL文法第二个L的意思是最左推导，LR文法第二个R的意思是最右推导。 

* 产生式、推导和归约

  **产生式**是非终结符号的某种构造方法。**推导**是将产生式的左部替换为产生式的右部。**归约**是将产生式的右部替换为产生式的左部。**最左推导**总是选择每个句型的最左非终结符进行推导。**最右推导**总是选择每个句型最右的非终结符号进行推导。

* 自顶向下的语法分析

  * 两个问题：一选择哪个终结符是不确定的，二选择哪个产生式是不确定的。可以通过最左推导的方法消除第一个不确定性。
  * 消除左递归和提取左公因子
  * LL(1)分析的1代表向前查看1个单词，为什么要向前看？因为要消除第二种不确定性。
  * LL(1)文法要求对于任意非终结符，其所有推导结果均不能相同。LL(1)文法是使LL(1)分析消除不确定性的文法。
  * 怎么样才能使所有推导结果都不相同呢？预测集合不相交即可。
  * first集是所有可能符号串的第一个终结符的集合。first集合的计算方法。
  * follow集合是方法符号后面跟的可能的终结符的集合(不包括空字符)。follow集合的计算方法。
  * LL(1)分析之递归下降
  * LL(1)分析之表驱动
  * 错误处理

* 自底向上的语法分析

  * 两个问题：一选择哪个产生式是不确定的，二匹配哪个位置上的子串是不确定的。
  * 移进归约分析，两种类型的冲突，表驱动方法
  * LR分析