0

fastparse、parboiled2、scala-combinators を試しました。LEXERを定義するとき、それらはすべてこの問題を抱えています:

LET_KEYWORD ::= "let"
IDENTIFIER  ::= "[a-zA-Z]+".r

入力に対してそれらを実行すると"leto"、生成され[LET_KEYWORD,IDENTIFIER(o)]ます。

これらのライブラリのいくつかは、次のような動作をすることを期待しています:

入力が の場合"let"、最初に定義されたルールがより関連性が高いため、それを選択することであいまいさを解決します。入力が"leto"存在する場合、あいまいさはなく、 のみが生成されIDENTIFIER(leto)ます。それはここで説明されている動作です、ANTLR

4

2 に答える 2