[antlr-interest] found more bugs in ANTLRv3.g + howto add separator when parallel iterating 2 lists in stringtemplate
Jens Boeykens
jens.boeykens at gmail.com
Tue Jul 8 07:00:54 PDT 2008
Still one more;)
In treeSpec there is functionality missing to support suffixes. E.g.
r: ^(a b)+;
will not parse. Fixed it with this:
*treeSpec
: '^(' element ( element )+ ')' ebnfSuffix? -> ^(TREE_BEGIN element+
ebnfSuffix?)
;
*Best regards,
Jens
2008/7/8 Jens Boeykens <jens.boeykens at gmail.com>:
> Another error in ANTLRv3.g:
>
> *rewrite_tree_element
> : rewrite_tree_atom
> | rewrite_tree_atom ebnfSuffix
> -> ^( ebnfSuffix ^(BLOCK["BLOCK"] ^(ALT["ALT"] rewrite_tree_atom
> EOA["EOA"]) EOB["EOB"]))
> | rewrite_tree
> ( ebnfSuffix
> -> ^(ebnfSuffix ^(BLOCK["BLOCK"] ^(ALT["ALT"] rewrite_tree
> EOA["EOA"]) EOB["EOB"]))
> | -> rewrite_tree
> )
> | rewrite_tree_ebnf
> ;*
>
>
> The 3rd alternative did not include the ebnfSuffix in the tree. It seems
> nothing needs to be changed in ANTLRv3Tree.g but I don't fully understand
> the transition of rewrite_tree_element from ANTLRv3.g to ANTLRv3Tree.g so I
> could be mistaken here.
>
> Jens
>
>
> 2008/7/8 Jens Boeykens <jens.boeykens at gmail.com>:
>
>> Another detail for rule rewrite_tree_atom that I am not sure if it is
>> correct:
>>
>> In ANTLRv3.g : ^(TOKEN_REF ARG_ACTION?)
>> In ANTLRv3Tree.g: ^(TOKEN_REF ARG_ACTION)
>>
>> The question mark dissapeared. I added it in my code, but not sure if
>> it is necessary...
>>
>> Another thing I did not understand very well (probably my own fault ;) ) :
>> There is a rule called "rewrite_template_block" which is defined, but no
>> other rule seems to be using it. Does this make the rule obsolete? I noticed
>> this because I have not yet encountered a testcase where the rule was used,
>> so I am not sure wether I should write more tests or the rule is indeed
>> obsolete.
>>
>> Kind regards
>>
>> 2008/7/8 Jens Boeykens <jens.boeykens at gmail.com>:
>>
>> Thanks it worked!!
>>>
>>> I've encounterd another issue with ANTLRv3.g but it's not a very
>>> important one. When you end your grammar with a single line comment like
>>>
>>> // this is my comment<eof>
>>>
>>> thus no '\n' at the end but directly end of file, the parser will
>>> complain it is looking for a '\n'.
>>>
>>> Jens
>>>
>>> 2008/7/7 Terence Parr <parrt at cs.usfca.edu>:
>>>
>>>
>>>> On Jul 7, 2008, at 2:23 PM, Jens Boeykens wrote:
>>>>
>>>>> block(blok, optionsSpec, alternative, rewrite, eob) ::= <<
>>>>>>> <alternative,rewrite: {alt,rw | <alt> <rw> | }>
>>>>>>> >>
>>>>>>>
>>>>>>> I have one '|' too many in my output:
>>>>>>> r: a -> int | b -> char |;
>>>>>>>
>>>>>>
>>>>>> Use <...; separator="|">
>>>>>>
>>>>>
>>>>> Sorry I can't find the exact syntax to use here. Remember I need 2
>>>>> lists here.
>>>>> <alternative,rewrite; separator=" | "> and <alternative rewrite;
>>>>> separator=" | "> give errors...
>>>>>
>>>>
>>>> Oh, sorry.
>>>>
>>>> <alternative,rewrite: {alt,rw | <alt> <rw>}; separator="|">
>>>>>>>
>>>>>>
>>>> Should work
>>>> Ter
>>>>
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20080708/38fb6dc4/attachment-0001.html
More information about the antlr-interest
mailing list