2009-10-09 74 views
1

我們使用Antlr StringTemplates來控制如何輸出實體的名稱。Antlr字符串模板中的條件

基本StringTemplate的是

$名字$ $初始$ $名字$, $後綴,$度$

我想一些聰明添加到模板,這樣的逗號僅在必要時輸出,即第一個逗號僅在存在後綴或度數時輸出,而第二個逗號僅在存在後綴時輸出。

我試過下面的模板字符串位它不起作用。我想我有誤解

$名字$ $初始$ $名字$ <如果(後綴|學位)>,<ENDIF>,$後綴$ <如果(後綴)>,<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(); 

回答

1

使用$名字$ $初始$ $名字$ $如果(後綴)$,$後綴$ $ ENDIF $ $如果(度)$模板, $學位$ $ ENDIF $

ň

+0

Damnit我知道我很接近! – 2009-10-12 07:42:48

1

只使用分離器,你字符串模板,如: $名字;分離器= 「 」$ $最初的;分離器=「,」 $

這可能不是是確切的答案,但您可以嘗試使用分隔符將名字與初始值分開,並且僅當您擁有第二個值時纔會插入逗號。假如你正在迭代一系列名字和首字母,那麼逗號只有在你有首字母后纔會出現。