[antlr-interest] Re: generated code not compilable.
praveen_c
praveen_c at yahoo.com
Tue Oct 29 18:14:27 PST 2002
Awesome!!! I love you guys for the prompt response. Thanks Ter and
Monty.
I'm glad that it was an easy one.
-Praveen.
--- In antlr-interest at y..., mzukowski at y... wrote:
> You need a newer version of antlr. I recommend downloading the
latest.
>
> Monty
>
> > -----Original Message-----
> > From: praveen_c [mailto:praveen_c at y...]
> > Sent: Tuesday, October 29, 2002 9:55 AM
> > To: antlr-interest at y...
> > Subject: [antlr-interest] Re: generated code not compilable.
> >
> >
> > Here is the nextToken() method that's generated. I numbered each
> > line. Line 14 is invalid, the word "true" must be surrounded by
().
> > Also line 23 gets an illegal start of the expression. Let me know
if
> > you need more info. There are a couple more identical things.
> >
> > 1 public Token nextToken() throws TokenStreamException {
> > 2 Token theRetToken=null;
> > 3 tryAgain:
> > 4 for (;;) {
> > 5 Token _token = null;
> > 6 int _ttype = Token.INVALID_TYPE;
> > 7 resetText();
> > 8 try { // for char stream error handling
> > 9 try { // for lexical error handling
> > 10 if ((LA(1)=='<') && (LA(2)=='@')) {
> > 11 mTAG(true);
> > 12 theRetToken=_returnToken;
> > 13 }
> > 14 else if true {
> > 15 mTEXT(true);
> > 16 theRetToken=_returnToken;
> > 17 }
> > 18 else {
> > 19 if (LA(1)==EOF_CHAR) {uponEOF
> > (); _returnToken = makeToken(Token.EOF_TYPE);}
> > 20 else {throw new
> > NoViableAltForCharException((char)LA(1), getFilename(), getLine
());}
> > 21 }
> > 22
> > 23 if ( _returnToken==null ) continue
> > tryAgain; // found SKIP token
> > 24 _ttype = _returnToken.getType();
> > 25 _returnToken.setType(_ttype);
> > 26 return _returnToken;
> > 27 }
> > 28 catch (RecognitionException e) {
> > 29 throw new
> > TokenStreamRecognitionException(e);
> > 30 }
> > 31 }
> > 32 catch (CharStreamException cse) {
> > 33 if ( cse instanceof CharStreamIOException ) {
> > 34 throw new TokenStreamIOException
> > (((CharStreamIOException)cse).io);
> > 35 }
> > 36 else {
> > 37 throw new TokenStreamException
> > (cse.getMessage());
> > 38 }
> > 39 }
> > 40 }
> > 41 }
> >
> >
> > --- In antlr-interest at y..., Terence Parr <parrt at j...> wrote:
> > > What is the compilation error and where?
> > >
> > > Terence
> > >
> > > On Tuesday, October 29, 2002, at 08:36 AM, praveen_c wrote:
> > >
> > > > For some reason when I use the charVocabulary option in the
> > following
> > > > grammar, I get code that CANNOT be compiled. When I remove
it, I
> > get
> > > > compilable code. Is there something wrong in the grammar?
> > > >
> > > > Any help would be greatly appreciated. Comments on the
grammar are
> > > > welcome.
> > > >
> > > > ---------------------------GRAMMAR FILE-----------------------
----
> > ----
> > > > header { package tom; }
> > > >
> > > > class SimpleParser extends Parser;
> > > >
> > > > template: (TEXT | TAG)+;
> > > >
> > > > class SimpleLexer extends Lexer;
> > > > options {
> > > > k=2;
> > > > testLiterals=false;
> > > > charVocabulary = '\3'..'\377' | '\u1000'..'\u1fff';
> > > > }
> > > >
> > > > {
> > > > public boolean isEndOfText() throws
antlr.CharStreamException
> > {
> > > > char char1 = LA(1);
> > > > if (char1 == '<') {
> > > > char char2 = LA(2);
> > > > if (char2 == '@') { // "<@"
> > > > return true;
> > > > } else if (char2 == '/') { // "</"
> > > > //ignore any white space
> > > > int i = forwardToNonWhiteSpace(3);
> > > >
> > > > if (
> > > > (LA(i++) == 'l') &&
> > > > (LA(i++) == 'o') &&
> > > > (LA(i++) == 'o') &&
> > > > (LA(i++) == 'p')
> > > > ) {
> > > >
> > > > //match whitespace.
> > > > i = forwardToNonWhiteSpace(i);
> > > >
> > > > if (LA(i++) == '>') { // "</loop>"
> > > > return true;
> > > > } else {
> > > > return false;
> > > > }
> > > > } else {
> > > > return false;
> > > > }
> > > > } else { // it began with '<' but doesn't have
> > anything
> > > > meaningful after that.
> > > > return false;
> > > > }
> > > > } else if (char1 == EOF_CHAR) { //End-of-file
reached,
> > can't
> > > > proceed further.
> > > > return true;
> > > > } else { //doesn't begin with '<', so it's a normal
char,
> > not
> > > > a special one.
> > > > return false;
> > > > }
> > > > }
> > > >
> > > > public int forwardToNonWhiteSpace(int i) throws
> > > > antlr.CharStreamException {
> > > > char c = LA(i);
> > > > while ( (c==' ') || (c == '\t') || (c == '\n') ) {
> > > > i++;
> > > > c = LA(i);
> > > > }
> > > > return i;
> > > > }
> > > > }
> > > >
> > > > protected
> > > > WS : ( ' ' | '\t' | '\n' )* ;
> > > >
> > > > TAG: (options
> > > > {
> > > > generateAmbigWarnings=false;
> > > > }:
> > > > "<@"
> > > > (
> > > > ("include") => INCLUDE { $setType
(INCLUDE); }
> > |
> > > > ("loop") => LOOP { $setType(LOOP); } |
> > > > TEXT
> > > > )
> > > > '>'
> > > > );
> > > >
> > > > protected
> > > > INCLUDE: "include" ;
> > > >
> > > > protected
> > > > LOOP: "loop" ;
> > > >
> > > > protected
> > > > END_LOOP: "</" LOOP '>';
> > > >
> > > > TEXT: (END_LOOP) => END_LOOP { $setType(END_LOOP); } |
> > > > (
> > > > options
> > > > {
> > > > generateAmbigWarnings=false;
> > > > }:
> > > > ( { !isEndOfText() }? . )*
> > > > );
> > > >
> > > >
> > > >
> > > >
> > > > Your use of Yahoo! Groups is subject to
> > > > http://docs.yahoo.com/info/terms/
> > > >
> > > >
> > > --
> > > Co-founder, http://www.jguru.com
> > > Creator, ANTLR Parser Generator: http://www.antlr.org
> > > Lecturer in Comp. Sci., University of San Francisco
> >
> >
> >
> >
> > Your use of Yahoo! Groups is subject to
> > http://docs.yahoo.com/info/terms/
> >
> >
Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
More information about the antlr-interest
mailing list