【发布时间】:2012-09-05 23:17:48
【问题描述】:
我有几个这样的字符串:
name[arg,arg,arg]
name[arg,arg]
name[arg]
name
我想用 scala 组合解析器解析它,这是我设法得到的最好的:
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。有办法解决吗?
【问题讨论】:
-
我认为如果你翻转它可能会起作用...我认为 name 被第一条规则所吸引,然后你输入失败?
-
@TonyK。 - 哇,愚蠢的我。你是对的,翻转它有效。您可以将其发布为答案,我会接受。
标签: parsing scala parser-combinators