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 {」序列)時停止使用字符。
任何援助將不勝感激。