I'm trying to split input by some keywords without delimiter like white-space.
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)
}
This outputs as below.
>> 'hogeIDfuga'
But I really want to do is like this.
>> 'hoge'[ID]'fuga'
It seems text engulfs all the characters. I tried to express [text does't contain keyword], but I could't. How to express it in regex or scala parser? or any other solutions?
 
     
    