[antlr-interest] Re: C directive as a comment

Monty Zukowski monty at codetransform.com
Tue Oct 12 12:44:04 PDT 2004


You are going to have to merge the Comment and MY_DIRECTIVE rules 
because they share the same prefix.

Monty

On Oct 8, 2004, at 9:38 AM, m_barreteau wrote:

>
>
> --- In antlr-interest at yahoogroups.com, Monty Zukowski <monty at c...>
> wrote:
>> Sure, you can build something with ANTLR to do that.  A good
> starting
>> place would be my C grammar, see the link below.  You would have to
>> change the lexer to pass the comment into the parser and from
> there, in
>
>  I changed it into:
>
> KEYWORD : "_KEYWORD";
>
> MY_DIRECTIVE
>  }
>         :       "/*" KEYWORD
>                 (~( '*'| '\r' | '\n' ))+
>                                         { _ttype = MyParms; }
> // Is it the way to pass the content of the comment (I mean without
> prefix "/*  _KEYWORD" and suffix "*/") back to the parser? I don't
> think so.
>                 "*/"
>         ;
>
> protected
> MyParms:;
>
> Comment
>         :       "/*"
>                 ( { LA(2) != '/' }? '*'
>                 | { LA(2) != 'K' && LA(3) != 'E'}? '_'
> // Is there another way to consider a keyword whose length > k (k=3
> in your file)? Such comments (without the keyword) have to be ignored
> as usual.
>                 | "\r\n"                { deferredNewline(); }
>                 | ( '\r' | '\n' )       { deferredNewline();    }
>                 | ~( '*'| '\r' | '\n' )
>                 )*
>                 "*/"                    { _ttype = Token.SKIP;
>                                         }
>         ;
>
>  I also have some troubles about spaces even if using 'ignore' in the
> options part to parse for instance "/*   _KEYWORD A [2:4] [1:5]  */".
> How can I manage with that at the lexer level?
>
>> an action, send the contents of the comment to another lexer/parser
> to
>
> I suppose that this action is something like:
> { ## = #( #[NKeyword], ##); } but has the related rule to be
> detailed? (see next question)
>
>> grab what you need.
>
>  Is this other lexer/parser in charge of detailing the content of the
> directive? (e.g. ID (LBRACKET e1:primaryExpr COLON e2:primaryExpr
> RBRACKET)+)
>
>  Many thanks.
>
>> Monty Zukowski
>>
>> ANTLR & Java Consultant -- http://www.codetransform.com
>> ANSI C/GCC transformation toolkit --
>> http://www.codetransform.com/gcc.html
>> Embrace the Decay -- http://www.codetransform.com/EmbraceDecay.html
>>
>>
>> On Sep 13, 2004, at 8:54 AM, m_barreteau wrote:
>>
>>>
>>>  Hi!
>>>
>>>  I would like to recognise a directive (I mean an instruction that
>>> can be ignored by a C compiler if a given identifier is not set)
> that
>>> would be hidden inside a C comment. For instance:
>>>
>>> /* KEYWORD [parm1:parm2] */
>>>
>>>  Does ANTLR 2.7.2 is able to collect these parameters ?
>>>
>>>  Thanks.
>>>
>>>
>>>
>>>
>>>
>>>
>>> Yahoo! Groups Links
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>
>
>
>
>
>
> Yahoo! Groups Links
>
>
>
>
>
>
>
>
>



 
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