2016-07-31 62 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?如果是這樣,爲什麼? –