カスタム プロパティ ファイルを処理する Regex パーサーがあります。私のファイルには、次の構造があります。
...
[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 のプロパティの指定されていない順序を受け入れるようにパーサーを定義する方法はありますか?