[antlr-interest] Inherit grammar and specify base scanner class
at the same time
Stanimir Stamenkov
stanio at myrealbox.com
Wed Jan 25 01:05:27 PST 2006
/Stanimir Stamenkov/:
> I've first tried
> specifying the scanner class on the super grammar as:
>
> class SuperLexer extends Lexer("name.stanio.MyScanner");
>
> but the generated "MyLexer" was direct subclass of |antlr.CharScanner|
I can't manage to make it whatever I'm trying. :-1 I run:
antlr superlexer.g
antlr -glib superlexer.g mylexer.g
The generated "SuperLexer.java" extends |name.stanio.MyScanner| but
"MyLexer.java" extends |antlr.CharScanner|, and if I specify:
class MyLexer extends SuperLexer("name.stanio.MyScanner");
the ANTLR tool reports an error. Could someone point me if it is a
FAQ or well documented feature as I haven't been able to find more
info on it.
--
Stanimir
-------------- next part --------------
/*
*
*/
class SuperLexer extends Lexer("name.stanio.MyScanner");
WS : ( ' ' | '\t' | '\f' | '\r' | '\n' )+;
-------------- next part --------------
/*
*
*/
header
{
package name.stanio;
}
class MyLexer extends SuperLexer; //("name.stanio.MyScanner");
COMMENT : "//" (~('\n'|'\r'))* ('\n'|'\r'('\n')?) { myFancyMethod(); };
-------------- next part --------------
package name.stanio;
import antlr.CharScanner;
import antlr.LexerSharedInputState;
public abstract class MyScanner extends CharScanner {
public MyScanner(LexerSharedInputState inputState) {
super(inputState);
}
protected void myFancyMethod() {
System.out.println("Say \"Hi\"!");
}
}
More information about the antlr-interest
mailing list