いくつかの簡単なルールを書こうとすると、このあいまいさが生じます
rule: field1 field2; //ambiguity between nsf1 and nsf2 even if I use lookahead k=4
field1: nsf1 | whatever1...;
field2: nsf2 | whatever2...;
nsf1: 'N' 'S' 'F' '1'; //meaning: no such field 1
nsf2: 'N' 'S' 'F' '2'; //meaning: no such field 2
あいまいさは理解できますが、先読みがこれを解決しない理由がわかりません。
私は簡単な解決策を持っていますが、それは好きではありません:
ルール:(nsf1(nsf2 |whatever2))| (whatever1(nsf2 | what2));
誰かがもっとエレガントな解決策を持っていますか?
どうもありがとう、クリス