[antlr-interest] Newbe bug: Why are these two code snippets not equivalent?

Gokulakannan Somasundaram gokul007 at gmail.com
Thu Jul 28 04:00:56 PDT 2011


The first rule matches empty and the second rule doesn't match anything. Is
that "//" intentional?

Gokul.

On Thu, Jul 28, 2011 at 4:28 PM, chris king <kingces95 at gmail.com> wrote:

> Hello antlr-interest! So I'm working on my C# pre-processor and I'm trying
> to implement the skipping #ifdefed code in the lexer when I ran across
> this.
> I expected
>
>
> PP_SKIPPED_CHARACTERS
>  : //{ false }? ( ~(F_NEW_LINE_CHARACTER | '#') F_INPUT_CHARACTER*
> F_NEW_LINE )*
>  ;
>
>
> to be equivalent to
>
>
> PP_SKIPPED_CHARACTERS
>  : { false }? ( ~(F_NEW_LINE_CHARACTER | '#') F_INPUT_CHARACTER* F_NEW_LINE
> )*
>  ;
>
> but I'm seeing different runtime behavior. So I guess I don't understand
> what the { false }? syntax is all about. I know there are probably other
> ways to implement the #ifdefed logic but could someone enlighten me as to
> why these two bits of code are not equivalent?
>
> Thanks,
> Chris
>
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe:
> http://www.antlr.org/mailman/options/antlr-interest/your-email-address
>


More information about the antlr-interest mailing list