我正在尝试通过一些没有分隔符(如空格)的关键字来拆分输入。
object MyParser extends JavaTokenParsers {
def expr = (text | keyword).+
def text = ".+".r ^^ ("'"+_+"'")
def keyword = "ID".r ^^ ("["+_+"]")
}
val p = MyParser
p.parse(p.expr, "fooIDbar") match {
case p.Success(r, _) => r foreach print
case x => println(x.toString)
}
这输出如下。
>> 'hogeIDfuga'
但我真正想做的就是这样。
>> 'hoge'[ID]'fuga'
它似乎text
吞噬了所有的角色。我试图表达 [text
不包含keyword
],但我不能。如何在正则表达式或 Scala 解析器中表达它?或任何其他解决方案?