Antlr字符串模板中的条件

时间:2009-10-09 16:55:24

标签: antlr stringtemplate

我们正在使用Antlr StringTemplates来控制实体名称的输出方式。

基本的Stringtemplate是

  

$ FirstName $ $ Initial $ $ LastName $,   $ Suffix $,$ Degree $

我想在该模板中添加一些智能,以便只在必要时输出逗号,即第一个逗号仅在有后缀或度时输出,第二个逗号仅在有后缀时输出。

我尝试了以下模板字符串,它不起作用。我想我误解了

$ FirstName $ $ Initial $ $ LastName $ < if(Suffix | Degree)>,< endif>,$ Suffix $ <如果(后缀)GT;,< ENDIF> $ $度

如果它有助于我们使用此C#处理模板

StringTemplate stringtemplate = new Antlr.StringTemplate.StringTemplate(template.Data);

foreach (Pair<string, string> pair in dictionary)
{
    if (pair.First != null && pair.Second != null)
    {
        stringtemplate.SetAttribute(pair.First, pair.Second);
    }
}

return stringtemplate.ToString();

2 个答案:

答案 0 :(得分:1)

使用$ FirstName $ $ Initial $ $ LastName $ $ if(Suffix)$,$ Suffix $ $ endif $ $ if(Degree)$,$ Degree $ $ endif $

<磷>氮

答案 1 :(得分:1)

只需使用字符串模板中的分隔符,如: $ FirstName; separator =“,”$ $ Initial; separator =“,”$

这可能不是确切的答案,但您可以尝试使用分隔符将First Name与Initial分开,只有在您有第二个值时才会插入逗号。假设您正在迭代一组首字母和首字母,那么只有在您有首字母时才会出现逗号。