私は最近、最初のプログラミング言語を設計し始めました。すでにJavaに慣れ親しんでいるので、自分の言語用のAST APIをJavaで構築し始めました。私はJavaバイトコードにコンパイルすることを計画しており、それは機能しており、実装したASTの現在の部分で作業しています。私はパーサージェネレーター、特にJavaCCに遭遇する前に、いくつかの異なる構文解析メソッド(すべて失敗した)を試しました。私はJavaCCとEBNFの基本的な研究を行ってきましたが、JavaCCが自分の言語を解析しながら完全なカスタムAST API(コンストラクタ引数などを含む)をサポートできるかどうか疑問に思っていました。私は深く研究し、JavaCCに関するチュートリアルを見たり読んだりする前に、これをここで尋ねたいと思っていました。私が見たことから、JavaCCはASTをサポートすることができますが、制約が何であるかはわかりません。さらに、JavaCCには独自のAST APIがあることはわかっていますが、私がすでに開発しているAPIに固執したいと思います。JavaCCのカスタムAST?
2
A
答えて
4
もちろんです。たとえば、あなたは、ASTの詳細の一部からパーサを隔離するために有用であることができ、この
CommandNode whileCommand() : {
ExpressionNode e ;
CommandNode doPart ;
} {
<WHILE> e = expression() <DO>
doPart = sequence() <ENDWHILE>
{ return new WhileCommand(e, doPart) ; }
}
Builderパターンのような非終端記号を書くことができます。
関連する問題
- 1. 打ち鳴らす:カスタムAST
- 2. Javaccパッケージの問題
- 3. なぜJavaCCショーエラー
- 4. javaCC "java.lang.ArrayIndexOutOfBoundsException:-1"例外
- 5. JAVACCのANTLR構文述語
- 6. javacc specialTokenの絶対オフセット
- 7. 使用方法javaccトークン
- 8. JavaCC - シグナルEOL Mac端末
- 9. CSSのAST・アナライザ
- 10. ASTインタープリタ?
- 11. 算術式のJavaCCのパーサーの例
- 12. バックスラッシュは、トークンJavaCCの中の文字
- 13. JavaCCの利点とANTLRの相違
- 14. ASTのツリー構造
- 15. JSexのApex AST BLOB
- 16. ASTへのHaskellパーサ
- 17. プログラム全体のAST
- 18. javacc parseException ...先読みの問題?
- 19. javaccのjava1.8.jjはありますか?
- 20. Scala ASTをソースコード
- 21. クランAST - isNullPointerConstant()
- 22. AST木セマンティック・アナライザ
- 23. コンバートASTノード
- 24. 汎用ASTビルダー
- 25. ASTビルダーfor Java?
- 26. ASTツリーを別のASTツリーに変換する
- 27. antlrはCのastを生成し、astを解析します
- 28. JavaCCで文字列を解析する
- 29. JavaCC:警告が多すぎます
- 30. JavaCCでデッドコードが生成される
恐ろしく!ありがとう。先読みはどうですか?私が注釈ノードに到着したと言うと、注釈ノードは次のフィールド/メソッドノードのパラメータですが、それは可能ですか? –
新しい質問をあなたが理解しているかどうか分かりません。私はとにかくそれに答えることを試みるでしょう:意味論的な行為は先読みの間に実行されないので、あなたはあなたのツリービルディングとの相互作用なしにあなたが望むすべての先読みを使うことができます。それが答えることができない場合は、新しい質問として投稿してもらえますか? –
私は、より良い質問は "グローバル変数はありますか"と思っています。それで、JavaCCはグローバル変数をサポートしますか? –