ANTLRWorks 1.4.3 を ANTLR 3.4 と共に使用して、文法ファイルから Java ベースのパーサーとレクサーを生成しています。生成されたファイルには次の.java
ような文字列が含まれています
C:\\Users\\[path to the eclipse project]\\src\\some\\package\\name\\MyGrammar.g
この絶対パスは次のように使用されます。
- 文字列を返します (例:
getGrammarFileName()
lexer および parser のメソッド)。 - 両方のファイル全体で、コメントとして何度も。
次の欠点があります。
- 開発環境で別のパスを持つ他の誰かがこれらのファイルを再生成すると、文法ファイルに変更が加えられていなくても、多くの変更が導入されます。
- 誰も、特にオープン ソース プロジェクトでは、文法ファイルを正確にどこに保存しているかを知る必要はありません。たとえば、どうですか
C:\\Users\\simon\\customerA\\crap_software\\[rest of the path to grammar file]
ANTLRWorks または ANTLR s.th でこれを制御する方法はありますか。少なくとも相対パスのみが使用されますか?