我应该如何处理Xtext中的模板字符串?

问题描述:

我有以下输入:我应该如何处理Xtext中的模板字符串?

a: "a is {Foo foo}" 

foo哪里是Foo类型;业务层最终将为该变量提供一个值。处理输入之后,两个文件将生成:属性文件和一个Java类:

a=a is {0} 

public static I18nMessage a(Foo foo) { 
    return new I18nMessageBuilder().id("a").args(foo).build(); 
} 

的想法是,我分配给每个消息的ID,给了我一个包含方法(其中名称== Java类id)并且接受输入参数来完成消息。

我的问题:我应该如何处理我的Xtext文法中的文本字符串?我希望代码完成参数类型(Foo),但我不知道如何处理可以包含空格和任何有效的Unicode字符的字符串的其余部分。

对此提出建议?

+0

MWE2做类似的事情。您可能必须为此使用自定义词法分析器。 – 2012-04-02 09:27:30

我发现了一个更好的解决方案,其提供了一个非常简单的语法和解决了一些其他问题:

a(Foo foo): "a is " foo; 

因此,短信是一个字符串和参数列表。这样,代码完成非常简单,如果要添加格式化程序,则不需要转义序列:

a(Date d): "Date is " d("short");