语法分析(摆烂版)

继续上文的词法分析中出现的语法分析,依据于词法分析中的 Token,来进行语法分析。那么,什么是语法分析?

什么是语法分析?

计算机科学语言学中,语法分析(英语:syntactic analysis,也叫 parsing)是根据某种给定的形式文法对由单词序列(如英语单词序列)构成的输入文本进行分析并确定其语法结构的一种过程。 —— 来源 wiki

通常是作为编译器或者解释器的组件出现的,它的作用是进行语法检查、并构建由输入的单词组成的数据结构(一般是语法分析树、抽象语法树等层次化的数据结构)。语法分析器通常使用一个独立的词法分析器从输入字符流中分离出一个个的“单词”,并将单词流作为其输入。实际开发中,语法分析器可以手工编写,也可以使用工具(半)自动生成。

分析器

分为两种:自顶向下和自底向上

推导方式

  • 自顶向下:根据形式语法规则,在语法分析树的自顶向下展开中搜索输入符号串可能的最左推导。单词按从左到右的顺序依次使用。
  • 自底向上:语法分析器从现有的输入符号串开始,尝试将其根据给定的形式语法规则进行改写,最终改写为语法的起始符号。

语法分析是如何实现的?