语法分析包括词法分析和句法分析。
句法分析有中心词分析法和层次分析法,
此外还有语义分析和语用分析。
语义分析包括语义指向分析、语义特征分析和语义成分分析。
⑵ 编译的语法分析
编译程序的语法分析器以单词符号作为输入,分析单词符号串是否形成符合语法规则的语法单位,如表达式、赋值、循环等,最后看是否构成一个符合要求的程序,按该语言使用的语法规则分析检查每条语句是否有正确的逻辑结构,程序是最终的一个语法单位。编译程序的语法规则可用上下文无关文法来刻画。
语法分析的方法分为两种:自上而下分析法和自下而上分析法。自上而下就是从文法的开始符号出发,向下推导,推出句子。而自下而上分析法采用的是移进归约法,基本思想是:用一个寄存符号的先进后出栈,把输入符号一个一个地移进栈里,当栈顶形成某个产生式的一个候选式时,即把栈顶的这一部分归约成该产生式的左邻符号。
⑶ 语法分析最常用的两类方法
LL分析法和LR分析法。
1、自上而下语法分析方法(LL分析法)
给定文法G和源程序串r。从G的开始符号S出发,通过反复使用产生式对句型中的非终结符进行替换(推导),逐步推导出r 。 是一种产生的方法,面向目标的方法。分析的主旨为选择产生式的合适的侯选式进行推导,逐步使推导结果与r匹配。
2、自下而上语法分析方法(LR分析法)
从给定的输入串r开始,不断寻找子串与文法G中某个产生式P的候选式进行匹配,并用P的左部代替(归约)之,逐步归约到开始符号S。是一种辨认的方法,基于目标的方法。分析的主旨为寻找合适的子串与P的侯选式进行匹配,直到归约到G的S为止 。
(3)语法分析方法的分类基本思想扩展阅读
LALR分析器可以对上下无关文法进行语法分析。LALR即“Look-AheadLR”。其中,Look-Ahead为“向前看”,L代表对输入进行从左到右的检查,R代表反向构造出最右推导序列。
LALR分析器可以根据一种程序设计语言的正式语法的产生式而对一段文本程序输入进行语法分析,从而在语法层面上判断输入程序是否合法。
实际应用中的LALR分析器并不是由人手工写成的,而是由类似于yacc和GNU Bison之类的LALR语法分析器生成工具构成。由机器自动生成的代码相比较于程序员手工的代码,拥有更好的运行效率而且减少了程序员的工作量。
⑷ 简述自下而上语法分析的基本思想,基本过程和基本操作。
【答案】:自下而上语法分析的基本思想是从待分析的终结符号串出发,反向使用产生式规则,将产生式规则右部的符号串归约为左部的非终结符。通过一系列这样的归约,最终能归约出文法的起始符号,则证明待分析的终结符号串是合法的句子。
其分析过程是用堆栈来实现的。开始时堆栈中压入“#”这个特殊的符号,同时也在输入串的末尾加上“#”。分析过程有4种基本动作:
· 移进:当前堆栈栈顶还没有出现可归约串,采取移进动作。所谓移进,是把缓冲区指针当前指向的符号压入堆栈,缓冲区指针后移。
· 归约:当前栈顶已经出现可归约串,采取归约动作,即把栈顶的可归约串弹出,把归约出的文法非终结符压入堆栈。
· 接受:如果归约出了文法起始符号,并且缓冲区的指针已经移到了输入串的末尾,此时意味着分析成功,应该结束分析过程。
· 出错:发现待分析的符号串有语法错误,此时应该调用出错处理程序。