我们可以说我们有这样的语法。
Model:
greeting+=Greeting*;
Greeting:
'Hello' name=ID '!';
我想检查文本中的文字是否是有效文本。 所有有效单词都保存在一个数组中。 此外,数组应填充给定文件中的单词。
所以可以在运行时检查这个,也可以用这个词作为建议。
由于
答案 0 :(得分:0)
为此,您可以使用验证器 有关它的简单视频教程可以找到here
在您的情况下,验证器中的函数可能如下所示:
public static val INVALID_NAME = "greeting_InvalidName"
@Check
def nameIsValid(Greeting grt) {
val name = grt.getName() //or just grt.Name
val validNames = NewArrayList
//add all valid names to this list
if (!validNames.contains(name)) {
val errorMsg = "Name is not valid"
error(errorMsg, GreetingsPackage.eINSTANCE.Greeting_name, INVALID_NAME)
}
}
您可能需要更换" GreetingsPackage"如果您的DSL没有被命名为Greetings
传递给error-method的静态String用于识别错误。当你想要实现Quickfixes时,这很重要,这是你要求的第二件事,因为它们可以为程序员提供一些如何实际解决这个特定问题的想法。
因为我没有自己实施快速修正的经验,所以我可以给你this作为参考。