2012-06-26 83 views
1

我爲詞法分析器和解析器使用一個.g文件。我在語法文件以下行:antlr:在生成的Lexer源文件中缺少包聲明

@header { 
package foo.bar; 
} 

不過,我發現,包裝線只放入生成的解析器的源文件,並在文件FooLexer.java失蹤。任何人都知道如何處理這個問題?

+0

它在[documentation](http://www.antlr.org/wiki/display/ANTLR3/Grammars)中。 – buc

回答

7
@header { 
package foo.bar; 
} 

是短期的:

@parser::header { 
package foo.bar; 
} 

爲了把一個包聲明中的詞法分析器,這樣做:

@lexer::header { 
package foo.bar; 
} 

同樣爲@members { ... },這是短期的@parser::members { ... }。也有@lexer::members { ... }把變量/方法等放在詞法分析器中。

+0

+1是的,這是一個有據可查的功能。 – buc