我有幾串這樣的:如何解析此結構:「名稱[arg,arg]」與scala組合器分析器?
name[arg,arg,arg]
name[arg,arg]
name[arg]
name
我想與斯卡拉組合子解析器解析它,這是我設法獲得最佳:
object TaskDepParser extends JavaTokenParsers {
def name: Parser[String] = "[^\\[\\],]+".r
def expr: Parser[(String, Option[List[String]])] =
name ^^ { a => (a, None) } |
name ~ "[" ~ repsep(name, ",") ~ "]" ^^ { case name~_~args~_ => (name, Some(args)) }
}
它適用於name
,但未能在name[arg]
上工作 - 說string matching regex
\ z'預計但[' found
。可以修復它嗎?
我認爲它可能會工作,如果你翻轉它...我認爲名字被第一個規則吸了,然後你得到了輸入失敗? –
@TonyK。哇,愚蠢的我。你是對的,翻轉它的工作。你可以發佈這個答案,我會接受它。 – Rogach