0
我有DSL的一个简单方面,我可以定义一个关键字和一个值作为这样的:如何处理JavaCC中的文本块中的令牌?
mykey=\ This is my $REF{useful} multiline string where I terminate with a backslash but I support escaped \\ characters and I wish to handle the value part of this string as 3 blocks in this example. \
的三个标记(为值部分)我想在这个例子中是
- ValueLiteral ==这是我
- ValueReference == $ {REF有用}
- ValueLiteral ==多等....
我定义的规则来进行价值这样的:
void multiLineValue(): {} {
<BACKSLASH><EOL>
(
valuePartLiteralMulti() |
valuePartRef()
)*
<BACKSLASH>
}
这里是我的多字符串类型令牌定义:
TOKEN :
{
< MULTILINE_STRING:( ((~["\\"])
| ("\\"
(["\\", "'", "\"", "$", "n", "r", "t", "b", "f"]
| ["u", "U"]["+"]["0"-"9","a"-"f","A"-"F"]["0"-"9","a"-"f","A"-"F"]["0"-"9","a"-"f","A"-"F"]["0"-"9","a"-"f","A"-"F"]
)
)))+>
}
我的问题是,我的多行字符串令牌类型也会消耗'$ REF {'字符的字符序列。
我想修改这个多行字符串,以便它在遇到非转义的“$ REF {”(但会继续读取“\ $ REF {”序列)时停止使用字符。
任何援助将不胜感激。