Nous utilisons Antlr StringTemplates pour contrôler la façon dont le nom d'une entité est généré.Conditionnels dans les gabarits de chaîne Antlr
Le StringTemplate de base est
$ FirstName $ $ initial lastname $ de $ $, $ Suffixe $, $ Degree
$
Je veux ajouter quelques smarts à ce modèle afin que la les virgules ne sont sorties que lorsque cela est nécessaire, c'est-à-dire que la première virgule n'est sortie que lorsqu'il y a un Suffixe ou un Degré et que la deuxième virgule n'est sortie que s'il y a un suffixe.
J'ai essayé le bit de chaîne de modèle suivant cela ne fonctionne pas. Je suppose que je l'ai mal compris
$ FirstName $ $ initial LastName $ $ $ < si (Suffixe | Degree) >, <endif>, Suffixe $ < $ si (Suffixe) >, <endif> $ Degré
$Si elle aide nous traitons les modèles utilisant cette 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();
Damnit Je savais que j'étais proche! –