[antlr-interest] Conditionally parsing comments in Java language?

Peggy Fieland madcapmaggie at yahoo.com
Tue Apr 26 09:59:45 PDT 2005


When I had a similar problem, I ended up calling the
parser a second time.

If you have enough information up front, you might be
able to use protected rules and semantic predicates.


--- Anton Safonov <anton.safonov at refactorit.com>
wrote:
> Hi, All!
> 
> Let's start with a slightly special Java example:
> 
> public void method() {
>    int type = 0;
> 
> /*#SomeName#*///<editor-fold>
> //-- type = 1;
> //-- callOtherMethod();
> /*$SomeName$*///</editor-fold>
> 
> /*#SomeName2#*///<editor-fold>
> //-- type = 2;
> /*$SomeName2$*///</editor-fold>
> 
> }
> 
> Now I try to change the original java.g (1.5) to
> detect such blocks, 
> "uncomment" lines inside it on the fly, so that it
> builds the tree for 
> the commented code as well.
> The problem is that the lexer has rules
> SL_COMMENT/ML_COMMENT which 
> detect that these are the comments and comment
> tokens are filtered and 
> never reach the parser to be able to use any
> predicates or whatever.
> 
> I cannot let lexer to parse every comment, since the
> most of them are 
> naturally not a Java code.
> But at the same time some of the comments must be
> split into tokens to 
> feed it to the parser.
> So, the possible solution so fer: let comments pass
> to the parser, 
> detect there that the comment can be parsed, kill
> leading "//--" and 
> feed the block back to lexer etc.  Sounds weird,
> especially trying to 
> keep the correct coordinates of the tokens/ASTs.
> 
> Any suggestions? May be there is a known canonical
> way to solve this?
> 
> Regards,
> Anton
> 
> 


More information about the antlr-interest mailing list