[antlr-interest] generated code not compilable.

Terence Parr parrt at jguru.com
Tue Oct 29 09:07:00 PST 2002


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/ 



More information about the antlr-interest mailing list