我目前正在尝试为我们在公司使用的内部语言编写一个基于 Eclipse 的编辑器。该语言是以下形式的语句的集合:
{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:”而不是“#”。缺点是我没有得到语法着色,“横幅”也没有出现在自动完成列表中。
欢迎任何建议。