📜  解析器

📅  最后修改于: 2020-12-06 06:43:03             🧑  作者: Mango

解析器

解析器是一种编译器,用于将数据分解为来自词法分析阶段的较小元素。

解析器以令牌序列的形式获取输入,并以解析树的形式生成输出。

解析有两种类型:自上而下的解析和自下而上的解析。

自上而下的削皮

  • 自上而下的解析称为递归解析或预测解析。
  • 自下而上的解析用于为输入字符串构造一个解析树。
  • 在自上而下的解析中,解析从起始符号开始,然后将其转换为输入符号。

输入字符串“ acdb”的解析树表示如下:

自底向上解析

  • 自下而上的解析也称为移位减少解析。
  • 自下而上的解析用于为输入字符串构造一个解析树。
  • 在自下而上的解析中,解析从输入符号开始,然后通过反向找出最右边的字符串派生,来构造解析树直至起始符号。

生产

E → T
T → T * F
T → id
F → T
F → id

输入字符串“ id * id”的语法分析树表示如下:


自下而上的解析分为各种解析。这些如下:

  • Shift-Reduce解析
  • 运算符优先级解析
  • 表驱动的LR解析
  • LR(1)
  • 单反相机(1)
  • CLR(1)
  • LALR(1)