语法分析器原理简介
语法分析器原理简介 上下文无关语法(CFG) 为描述程序设计语言语法,传统的解决方案是使用上下文无关语法(Context Free Grammar, CFG)。对于语言L,其CFG定义了表示L语言中有效语句的符号串的集合。语句即是从语法规则G中推导出的一个字符串。 上下文无关语法G是一组规则,描述了语句是如何形成的。可以冲G导出的语句称为G定义的语言,记作 L ( G ) L(G) L ( G ) 。上下文无关语法定义语言的集合称为上下文无关语言的集合。 几个重要的概念: 产生式:CFG中的每个规则都称为一个产生式 非终结符:语法产生式中使用的语法变量 终结符:出现在语句中的单词。单词包含了一个词素(Lexeme)及范畴(Syntactic Category)。在语法中,单词通过其语法范畴表示。 推导:一系列重写步骤,从语法的起始符号开始,结束于语言中的一个语句。 在原型符号串中,我们选择一个非终结符 α \alpha α ,并选择一个语法规则 α → β \alpha \rightarrow \beta α → β ,然后将原型符号串中的 α \alpha α 重写为 β \beta β 。我们会重复这个重写过程,直至原型符号串不包含非终结符为止,此时它完全有单词(或称终结符)组成,已经变为语言中的一个语句。 在推导过程中的每一个点上,该符号串都是终结符和非终结符的一个集合