语法用PEG解析国际象棋移动

时间:2016-07-31 13:41:18

标签: parsing peg

使用PEG以SAN格式解析移动的正确语法是什么?

我提出的解决方案是

MOVE <- [NBRQK]? [a-h]? [1-8]? [-x]? [a-h] [1-8] [NBRQ]?

然而,这似乎是错误的,因为它不解析Nh4,因为h匹配第一个可选文件[a-h]?并且解析器不会回溯。

应该正确解析的其他动作是: a4,a3a4,xa4,a8Q,xa8Q,Nh4,Nxh4,Ngxh4,Ng3h4,Ngh4,N3h4,Ng3-h4,Ng3xh4,但(可选)不是-a4,N-h4。

1 个答案:

答案 0 :(得分:-1)

我之前已经建立了代数符号解析器。

坦率地说,语法很简单(如你所示,没有检查细节)。

更重要的是,我不记得是否需要回溯,这是使用PEG的重点。所以你不需要这种复杂的机制。

事实上,“解析”这很简单,构建一个真正的解析器似乎有点过分;你可以建立一个FSA来识别它而不会有太多麻烦。

相关问题