2016-07-31 69 views
0

使用PEG解析SAN格式移动的正确语法是什么?使用PEG解析国际象棋移动的语法

的解决方案,我想出是

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

然而,这似乎是错误的,因为它不解析NH4因为小时第一个可选的文件[A-H]匹配?解析器不会回溯。

应正确解析其他动作是: A4,A3A4,XA4,a8Q,xa8Q,NH 4,Nxh4,Ngxh4,Ng3h4,Ngh4,N3h4,Ng3h4,Ng3xh4,但(任选地)不-A4, N-二H4。

回答

-1

我以前已经构建了代数符号解析器。

坦率地说,语法很简单(就像你展示的那样,没有检查细节)。

更重要的是,我不记得任何需要回溯,这是使用PEG的一点。所以你不需要这种复杂的机制。事实上,“解析”这个非常简单,构建一个真正的解析器看起来像是矫枉过正;你可以建立一个FSA来识别它,而不会有太多麻烦。

+0

我有一个EPD解析器。移动解析只是其中的一小部分。 – Alexandru

+0

你可能有其他的麻烦,但你的问题只涉及解析动作。 –

+0

@亚历山大:是你的downvote?如果是这样,为什么? –