1
我目前正在尝试为我们在公司中使用的内部语言编写基于Eclipse的编辑器。语言是形式的语句的集合:在Xtext中解析字符串
{action}: {arguments}
...在自己的行。 {arguments}的格式取决于正在执行的{action}的类型。脚本片段的示例可能如下所示:
banner: Some string with numbers and punctuation (23) in it!
# some comment
timeout: 42
我的问题是解析这样的片段。我有评论和超时声明的工作,但我似乎无法创建一个规则来覆盖横幅声明。我所有的尝试都导致Antlr“令牌定义不可达”警告,或编辑器无法匹配输入。我试过横幅声明以下规则:
Banner:
'banner:' name=ANY_OTHER*;
和
Banner:
'banner:' name=FF_STRING;
terminal FF_STRING : ('a'..'z'|'A'..'Z'|'0'..'9'|'.'|':'|' ')+;
...使我有ANTLR警告。我提出的一个黑客就是简单地创建一个与SL_COMMENT完全相同的终端,在开始时使用'banner:'而不是'#'。缺点是我没有语法着色,自动完成列表中也没有显示“横幅”。
欢迎任何建议。
感谢您的答复。这似乎工作,虽然我仍然得到antlr“决定可以匹配输入,如...”类型的警告,当我试图在我的价值规则中添加':'。我认为这是因为我将':'作为一个单独的关键字紧跟在“横幅”之后(即横幅和冒号之间可能有空格)。 – Exponent 2011-04-26 03:07:40