语法分析是编译过程的一个逻辑阶段。语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语,如“程式”,“语句”,“表达式”等等.语法分析程式判断源程式在结构上是否正确.源程式的结构由上下文无关文法描述.语法分析程式可以用YACC等工具自动生成。
完成语法分析任务的程式称为语法分析器,或语法分析程式。按照源语言的语法规则,从词法分析的结果中识别出相应的语法範畴,进行语法检查。
基本介绍
- 中文名语法分析
- 领域程式编译
- 基础词法分析
- 方法LL分析法和LR分析法
方法
目前,已存在许多语法分析的方法。但就产生语法树的方向而言,可大致把他们分为自底向上和自顶向下两大类。目前比较流行LL分析法和LR分析法。
自上而下语法分析方法
给定文法G和源程式串r。从G的开始符号S出发,通过反覆使用产生式对句型中的非终结符进行替换(推导),逐步推导出r 。
是一种产生的方法,面向目标的方法。
分析的主旨是选择产生式的合适的侯选式进行推导,逐步使推导结果与r匹配.
自下而上语法分析方法
从给定的输入串r开始,不断寻找子串与文法G中某个产生式P的候选式进行匹配,并用P的左部代替(归约)之,逐步归约到开始符号S。
是一种辨认的方法,基于目标的方法。
分析的主旨是寻找合适的子串与P的侯选式进行匹配,直到归约到G的S为止 。
功能
按照源语言的语法规则,从词法分析的结果中识别出相应的语法範畴,进行语法检查。
给定文法G和字元串( ∈VT),检查、判定 ∈L(G)?即检查、判定是否是文法G所能产生的合法的句子,报告和处理语法错误。
构造元素
源程式串 (L1形式)
源语言的文法G
识别出的语法範畴的表示