解析器(parser)

Aki 发布于 2023-08-29 392 次阅读


所谓解析器(Parser),一般是指把某种格式的文本(字符串)转换成某种数据结构的过程。最常见的解析器(Parser),是把程序文本转换成编译器内部的一种叫做抽象语法树(AST)的数据结构,此时也叫做语法分析器(Parser)。

编译器、解释器中的解析器一般包含:

  • 扫描器(scanner,也叫tokenizer或者lexical analyzer,词法分析器)。扫描器的输入一般是文本,经过词法分析,输出是将文本切割为单词的流。
  • 语法分析器(parser,也叫syntax analyzer)。语法分析器的输入是单词的流,经过语法分析,输出是语法树或者精简过的AST。

综合来看,解析器主要作用是进行词法分析和语法分析,提取出句子的结构。其输入一般是程序的源码,输出一般是语法树(syntax tree)或抽象语法树(abstract syntax tree,AST)。

生成解析树、

有两种方式,自顶向下和自底向上生成!!!

parser分类、

除了运算符优先级解析器能够处理有歧义的CFG,其他所有的parser都不能够处理!!!

有回溯的自顶向下的解析器可以处理不确定的CFG,没有的不能处理,只能使用确定的,不包含左递归的CFG!!!