[antlr-interest] found more bugs in ANTLRv3.g + howto add separator when parallel iterating 2 lists in stringtemplate

Terence Parr parrt at cs.usfca.edu
Tue Jul 8 10:53:14 PDT 2008


Right...current parser doesn't handle but let's fix for v3 grammar.
Ter
On Jul 8, 2008, at 7:00 AM, Jens Boeykens wrote:

> 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
>
>
>
>



More information about the antlr-interest mailing list