[stringtemplate-interest] Bug in group map parsing??

Nate misc at n4te.com
Fri Dec 22 15:18:05 PST 2006


"default" is a reserved words for maps I believe. I ran into this 
problem a couple weeks ago. IMO, the parser should know what context 
"default" is being used in and allow it if not in a map.

-Nate


Caleb Lyness wrote:
> Hello all,
>
> Can I use my wiki login to login on Jira and reports bugs?
> And here are the bugs I have come across:
>
> 1) The string "default" cannot be used as the string in the map
> 2) If default is the only element in the map, parsing fails:
> *
> Group definition:*
>
> group testGroup;
> map ::= [
>      default: "default"
> ]
>
> t1() ::= "$map.(1)$"
>
> fails as follows:
>
> template group parse error
> line 3:6: expecting STRING, found 'default'
>     at antlr.Parser.match(Parser.java:211)
>     at 
> org.antlr.stringtemplate.language.GroupParser.keyValuePair(GroupParser.java:529)
>     at 
> org.antlr.stringtemplate.language.GroupParser.map(GroupParser.java:474)
>     at 
> org.antlr.stringtemplate.language.GroupParser.mapdef(GroupParser.java:369)
>     at 
> org.antlr.stringtemplate.language.GroupParser.group(GroupParser.java:189)
>     at 
> org.antlr.stringtemplate.StringTemplateGroup.parseGroup(StringTemplateGroup.java:769)
>     at 
> org.antlr.stringtemplate.StringTemplateGroup.<init>(StringTemplateGroup.java:271)
>     at 
> org.antlr.stringtemplate.StringTemplateGroup.<init>(StringTemplateGroup.java:249)
>     at t.main(t.java:22)
>
> *Group definition:*
>
> group testGroup;
> map ::= [
>      "str": "value",
>      default: "default"
> ]
>
> t1() ::= "$map.(1)$"
>
> fails as follows:
>
> template group parse error
> line 4:15: unexpected token: default
>     at 
> org.antlr.stringtemplate.language.GroupParser.keyValue(GroupParser.java:580)
>     at 
> org.antlr.stringtemplate.language.GroupParser.map(GroupParser.java:495)
>     at 
> org.antlr.stringtemplate.language.GroupParser.mapdef(GroupParser.java:369)
>     at 
> org.antlr.stringtemplate.language.GroupParser.group(GroupParser.java:189)
>     at 
> org.antlr.stringtemplate.StringTemplateGroup.parseGroup(StringTemplateGroup.java:769)
>     at 
> org.antlr.stringtemplate.StringTemplateGroup.<init>(StringTemplateGroup.java:271)
>     at 
> org.antlr.stringtemplate.StringTemplateGroup.<init>(StringTemplateGroup.java:249)
>     at t.main(t.java:22)
>
> *This group definition works:*
>
> group testGroup;
> map ::= [
>      "str": "value",
>      default: "defaul"
> ]
>
> t1() ::= "$map.(1)$"
>
> *Code to reproduce results:*
>
>         String templateGroupDef = "group testGroup; \n"
>            + "map ::= [\n"
>            + "     \"str\": \"value\",\n"
>            + "     default: \"defaul\"\n"           
>            + "]\n\n"
>           
>            + "t1() ::= \"$map.(1)$\"\n";       
>    
>         StringTemplateGroup group = new StringTemplateGroup(
>                 new StringReader(templateGroupDef),
>                 DefaultTemplateLexer.class);
>        
>         System.out.println(templateGroupDef);
>        
>         StringTemplate tmpl = group.getInstanceOf("t1");
>         System.out.println(tmpl.toString());
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> stringtemplate-interest mailing list
> stringtemplate-interest at antlr.org
> http://www.antlr.org:8080/mailman/listinfo/stringtemplate-interest
>   



More information about the stringtemplate-interest mailing list