在
计算机科学和
语言学中,语法分析(
英:Syntactic analysis,也叫Parsing)是根据某种给定的
形式文法对由单词序列(如英语单词序列)构成的输入文本进行分析并确定其语法结构的一种过程。
在计算机科学和语言学中,语法分析(英:Syntacticanalysis,也叫Parsing)是根据某种给定的形式文法对由单词序列(如英语单词序列)构成的
输入文本进行分析并确定其语法结构的一种过程。
语法分析器(Parser)通常是作为
编译器或
解释器的组件出现的,它的作用是进行语法检查、并构建由输入的单词组成的数据结构(一般是语法分析树、
抽象语法树等层次化的数据结构)。语法分析器通常使用一个独立的
词法分析器从输入字符流中分离出一个个的“单词”,并将单词流作为其输入。实际开发中,语法分析器可以手工编写,也可以使用工具(半)自动生成。
语法分析器的任务主要是确定是否可以以及如何从语法的起始符号推导出输入符号串(
输入文本),主要可以通过两种方式完成:
语法分析是
编译过程的核心部分,其基本任务是根据语言的语法规则进行语法分析,如果不存在语法错误即给出正确的语法结果,并为
语义分析和
代码生成做准备。
LALR分析器是一种规范LR分析方法的简化形式。它可以对上下无关文法进行语法分析。LALR即“Look-AheadLR”。其中,Look-Ahead为“向前看”,L代表对输入进行从左到右的检查,R代表反向构造出最右推导序列。 LALR分析器可以根据一种程序设计语言的正式语法的
产生式而对一段文本程序输入进行
语法分析,从而在语法层面上判断输入程序是否合法。 实际应用中的LALR分析器并不是由人手工写成的,而是由类似于
yacc和
GNU Bison之类的LALR语法分析器生成工具构成。由机器自动生成的代码相比较于程序员手工的代码,拥有更好的运行效率而且减少了程序员的工作量。