[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