使用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。
答案 0 :(得分:-1)
我之前已经建立了代数符号解析器。
坦率地说,语法很简单(如你所示,没有检查细节)。
更重要的是,我不记得是否需要回溯,这是使用PEG的重点。所以你不需要这种复杂的机制。
事实上,“解析”这很简单,构建一个真正的解析器似乎有点过分;你可以建立一个FSA来识别它而不会有太多麻烦。