shift reduce 解析器如何知道何时减少?

时间:2021-03-28 11:00:08

标签: c# parsing shift-reduce

我正在用 C# 编写一个 shift reduce 解析器。我看了一些解释它的文章,但没有一篇详细介绍。有人能指出我对移位减少解析器的详细解释的方向,比如它如何知道何时减少?

1 个答案:

答案 0 :(得分:0)

解析器是一个状态机。每个状态都有一个动作表,它将下一个输入符号(“令牌”)映射到一个动作(移位、减少产生、错误或接受)。对于移位操作,有一个转换表将输入符号映射到下一个状态。这两个表通常组合在一起,因为动作表条目中有一个状态编号的空间。

由于可能的标记数量相对较少,因此标记通常表示为小整数,动作表是一个二维数组,由当前状态和输入标记索引。如果空间是一个问题,可以压缩表。