1.语法分析器的功能
语法分析是编译过程的核心部分。
它的任务是在词法分析识别出单词符号串的基础上,分析并判定程序的语法结构是否符合语法规则。
语法分析的工作
基本思想
对任何一个输入串,试图用一切可能的办法,从文法的开始符号(根节点)出发,根据文法自上而下地为输入串建立一棵语法树,即为输入串寻找一个最左推导。
思想本质:是一种试探过程,是反复使用不同产生式谋求匹配输入串的过程。
终结符排列顺序不同,消除递归之后的文法的形式也可能不同
当表达能力相同
消除回溯的要求
对文法的任何非终结符,当要它去匹配输入串时,能够根据该非终结符所面临的输入符号准确地指派它的一个候选式去匹配,并且此候选式匹配后得到的工作结果应该是确信无疑的,即:
(1)若该候选式匹配成功,那么该匹配不是虚假匹配
(2)若该候选式无法完成最终的匹配任务,则其他任何候选式肯定也无法完成
错误恢复的方法
跳过输入串中的一些符号,直到遇到同步符号。遇到同步符号时,将符号栈顶的非终结符出栈
将FOLLOW(A)设为同步符号
将FIRST(A)加入到同步符号
如果非终结符产生空串,可以自动匹配,以推迟检测到错误的时间。
如果栈顶是终结符,当出错时,直接将栈顶出栈