我一直在查看ANTLR v3文档(以及我对"The Definitive ANTLR reference"的可靠副本),我似乎无法找到一种在字符串文字中实现转义序列的简洁方法(我目前正在使用Java目标).我希望能够做到这样的事情:
fragment
ESCAPE_SEQUENCE
: '\\' '\'' { setText("'"); }
;
STRING
: '\'' (ESCAPE_SEQUENCE | ~('\'' | '\\'))* '\''
{
// strip the quotes from the resulting token
setText(getText().substring(1, getText().length() - 1));
}
;
Run Code Online (Sandbox Code Playgroud)
例如,我希望输入标记" 'Foo\'s House'"成为字符串" Foo's House".
不幸的是,片段中的setText(...)调用ESCAPE_SEQUENCE设置了整个STRING令牌的文本,这显然不是我想要的.
有没有办法实现这个语法而不添加一个方法来返回结果字符串并手动替换转义序列(例如,setText(escapeString(getText()))在STRING规则中的某些内容)?
一旦我在flex标签上设置了width或者percentWidth属性,有没有办法将宽度重置为默认值(即文本的宽度加上填充)?
我正在使用标签作为渲染器.在某些情况下,我希望它能自动调整大小,在其他情况下,我希望它是容器的百分比宽度.显然,我可以使用两个单独的标签,一个用于上述每种情况,但我很好奇是否可以将标签重置为默认行为.