我有一个处理自定义属性文件的正则表达式解析器。在我的文件中,我具有以下结构:
...
[NodeA]
propA=val1
propB=val2
propC=val3
[NodeB]
...
我定义了一个处理 NodeA 的解析器,如下所示:
lazy val parserA: Parser[String] = "propA" ~> "=" ~> mPropA
lazy val parserB: Parser[String] =
...
lazy val nodeA: Parser[NodeA] = "[" ~> "NodeA" ~> "]" ~> parserA ~> parserB ~> parserB ^^ {
case iPropA ~ iPropB ~ iPropC => new NodeA(iPropA, iPropB, iPropC)
}
就目前而言,这可以正常工作。问题是如果 NodeA 带有不同的属性顺序,在这种情况下我会得到一个解析错误。例如:
[NodeA]
propC=val3
propA=val1
propB=val2
有什么方法可以定义我的解析器,使其接受 NodeA 属性的未指定排序?