私は小さな言語を書いており、私のツールとしてantlrv4を使用しています。 Antlrは、文法ファイル(.g4)をコンパイルするときに、レクサーファイルとパーサファイルを自動生成します。私はjavac btwを使用しています。私は自分の言語にセミコロンがないようにしたい、そして、これをやりたいのは、行内の最後のトークンとして識別子または ")"がある場合、レクサーは自動的にセミコロン( "go"そうです)。どのように私はこのような何かにアプローチするだろうか?私が理解していないレクサーファイルや、レキシングプロセスにどのように関係しているのか、ATN(私は増強された移行ネットワークだと思います)やdfa(私は決定論的な有限オートマトンだと思います)のようなものがあります。どんな助けもありがとうございます。 (私はまだ文法ファイルに取り組んでいるので、完全には完成していません)。ANTLR v4自動生成レクサーを変更しますか?
0
A
答えて
0
ここでのいくつかの点:ATNとDFAはパーサーとレクサーの内部構造であり、解析動作を変更するために触れるものではありません。また、レクサーにセミコロンを挿入させたいのは、なぜ私には分かりません。あなたが正確に何をしたいのですか(言わないでください:パーサーでセミコロンをオプションにするには、根本的な理由を意味します)。
あなたは末尾にセミコロンなしでコマンドを受け入れるようにしたい場合は、そのをオプションにすることができます
assignment: simpleAssignment | complexAssignment SEMI?;
パーサは関係なく、最後のセミコロンがあるか否かをあなたに割り当てルールの内容を提供します。それはあなたが欲しいものですか?
関連する問題
- 1. レクサーでANTLRトークンが自動生成される
- 2. antlrはレクサーを生成しますが、パーサーは生成しません。
- 3. ANTLR生成パーサの変数を動的に更新する
- 4. 自動生成メイン・メソッドのEclipseテンプレートを変更しますか?
- 5. ANTLR 4つのレクサー・トークン
- 6. レクサーここからパーサー使用ANTLR 4
- 7. Antlr v4: 'mismatched input'
- 8. Alembicは列の変更を自動生成できますか?
- 9. FactoryGirlは自動生成ファイルの名前を変更します
- 10. レクサーとパーサー間でANTLRの動的スコープを共有できますか?
- 11. PhpStormで自動変数生成を変更するには?
- 12. ANTLR v4のC文法
- 13. Odooで自動生成されたフォームビューのタイトルを変更します
- 14. WPFデータグリッドで自動生成された列の種類を変更します
- 15. ANTLR v4をサポートするDSLForgeエディタ
- 16. ANTLR解析で正しいレクサー部分が見つかりません
- 17. レクサーのモードを追加するときのAntlrエラー
- 18. ANTLR v4でトークン化する方法
- 19. flowplayerプレイリストトラック自動変更でエラーが発生しています
- 20. antlr 4レクサーまたはパーサーとして読み込めません。
- 21. antlrはCのastを生成し、astを解析します
- 22. テキスト変数に自動生成HTMLを出力して返しますか?
- 23. Rails、自動生成リンクの変更方法
- 24. Hibernateの自動生成シリアル番号の変更方法は?
- 25. Objective-Cメソッドヘッダーを実装から自動生成しますか?
- 26. Antlr解析ツリーを生成する
- 27. ANTLR V4 + Java8文法 - >のOutOfMemoryException
- 28. Antlr v4の優れたCSS文法
- 29. ANTLRのレクサー否定 - なぜ二重否定は働かないのですか?
- 30. ANTLRは最終的なパーサークラスを生成できますか?
私はセミコロンを望んでいません。なぜなら、主にパーサーのためのものだと思いますから?私は何を提案したかを考え、構文解析の文法ではオプションにしましたが、セミコロンも行や文の終わりを示します。たとえば、私はprint p5abcを持っていて、次の行にprint 10を持っているとします。次の行のprint 10は、最初の行の文字列の一部ではないことをパーサーがどのように知っていますか?すなわち、文字列isnt p5abcprint10?自動的にセミコロンを追加することで、セミコロンの機能を維持しながら、プログラムからの使用を省略できます。私はそれが理にかなったことを願う:( – vaish