我想要一个允许我以这种方式编写MIME媒体类型的Xtext语法:
mediaType application/atom+xml
specURL "http://www.rfc-editor.org/rfc/rfc4287.txt",
这不是问题,但以下是:
mediaType application/*
specURL "http://www.iana.org/assignments/media-types/application",
您可以通过定义多行注释的/*
字符来猜测前方的麻烦。它的终端在Xtext提供的默认终端中定义,更具体地说,在ML_COMMENT终端中定义:
terminal ML_COMMENT : '/*' -> '*/';
我通过将默认终端复制到我自己的新终端来定制它,其中ML_COMMENT终端以这种方式定义:
terminal ML_COMMENT : '"""' -> '"""';
这产生了一种更多的Python方式来进行多行注释。它在生成的DSL中工作正常。但是,当我尝试为/*
定义媒体类型时,application/*
字符仍会出现问题,如上所示。我收到不匹配输入'/ *'期待'}'的错误消息(}
字符将指定媒体类型列表的结尾)。
更令人不安的是,当我输入一个(假设过时的)*/
组合字符时,Xtext编辑器的内容辅助仍会自动填充结束/*
多行注释字符。当我覆盖多行评论终端时,我想知道为什么自动完成仍然与较旧的ML_COMMENT定义调情。我是否需要覆盖其他内容?
以下是媒体类型语法的一些片段:
MediaType returns restapi::MediaType:
{restapi::MediaType}
'mediaType' name=MediaTypeQualifier ('specURL' specURL=EString)?;
MediaTypeQualifier:
MediaTypeFragment ('/' MediaTypeFragment)?(';' MediaTypeFragment'='MediaTypeFragment)*;
MediaTypeFragment:
(ID ( ('-'|'+'|'.') ID )* ) | '*'
我在Eclipse 4.2.2中使用Xtext版本2.3.1。有没有人有覆盖多行评论终端的经验?有没有我错过的东西?
答案 0 :(得分:0)
很难从你提供的语法片段中看出来,但在我看来你的语法中仍然有一个关键词/*
。