このコードをどのようにトークン化する必要があるかについて、 Java 仕様に混乱しています。
ArrayList<ArrayList<Integer>> i;
仕様は次のように述べています。
結果が最終的に正しいプログラムを作成し、別の字句変換が作成される場合でも、各ステップで可能な限り長い翻訳が使用されます。
私が理解しているように、「最長一致」ルールを適用すると、トークンが次のようになります。
- 配列リスト
- <
- 配列リスト
- <
- 整数
- >>
- 私
- ;
これは解析されません。もちろん、このコードは問題なく解析されます。
この場合の正しい仕様は何ですか?
正しいレクサーはコンテキストフリーでなければならないということですか? 通常のレクサーでは不可能のようです。