[antlr-interest] Re: Help with Java grammar
    Ric Klaren 
    klaren at cs.utwente.nl
       
    Tue Mar  9 06:26:38 PST 2004
    
    
  
On Tue, Mar 09, 2004 at 02:08:09PM -0000, cliftonccraig wrote:
> I just tried this:
> SL_COMMENT
> 	:	"//"
> 		(~('\n'|'\r'))* ('\n'|'\r'('\n')?)
> 		{
> //*CCC- Allow comments to flow through to the rewrite engine
> //		    $setType(Token.SKIP);
> 		    newline();
> 		}
> 		|
> 		"//" (~('\n'|'\r'))*
> 	;
How about this? 
SL_COMMENT
   :  "//" 
      ( ~('\n'|'\r') )*                         // not a newline part...
      ( ('\n'|'\r'('\n')? { newline(); } ) )?   // optional newline
   ;
If this gives trouble generate the lexer with -traceLexer and see where it
gets stuck. (or check with debugger)
There's a few dirty tricks you can do with EOF checks that work by checking
LA(i) for EOF in the init action of a closure rule, but I don't think these
should be necessary for this. (unless I'm missing the point somewhere)
> And I got an warning saying:
> D:\scm\tools\parsers\grammar\ANTLR\java.g:1235: warning:lexical
> nondeterminism between alts 1 and 2 of block upon
> D:\scm\tools\parsers\grammar\ANTLR\java.g:1235:     k==1:'/'
> D:\scm\tools\parsers\grammar\ANTLR\java.g:1235:     k==2:'/'
> D:\scm\tools\parsers\grammar\ANTLR\java.g:1235:    
> k==3:'\u0003'..'\t','\u000b','\u000c','\u000e'..'\uffff'
> D:\scm\tools\parsers\grammar\ANTLR\java.g:1235:    
> k==4:<end-of-token>,'\u0003'..'\t','\u000b','\u000c','\u000e'..'\uffff'
Don't worry too much about warnings like these ;) Read the source for what
antlr generated for the rule and it often becomes obvious if the
parser/lexer will do the right thing. (and it helps in getting a feel for
things)
Cheers,
Ric
-- 
-----+++++*****************************************************+++++++++-------
    ---- Ric Klaren ----- j.klaren at utwente.nl ----- +31 53 4893722  ----
-----+++++*****************************************************+++++++++-------
 Time what is time - I wish I knew how to tell You why - It hurts to know -
          Aren't we machines - Time what is time - Unlock the door
               - And see the truth - Then time is time again
                From: 'Time what is Time' by Blind Guardian
 
Yahoo! Groups Links
<*> To visit your group on the web, go to:
     http://groups.yahoo.com/group/antlr-interest/
<*> To unsubscribe from this group, send an email to:
     antlr-interest-unsubscribe at yahoogroups.com
<*> Your use of Yahoo! Groups is subject to:
     http://docs.yahoo.com/info/terms/
 
    
    
More information about the antlr-interest
mailing list