文字列として与えられた再帰構造 (バイナリ ツリーなど) をトラバースするために、Perl にはどのようなメソッドがあるのだろうか。
より具体的には:
ここにツリーがあります。簡単にするために、構文解析ツリーと非常に短いものです。派手なタブやスペースのない文字列だと想像してください。
tree(Sentence,
tree(NounPhrase,
leaf(Determiner, "a"),
leaf(Noun, "man", "singular")
),
tree(VerbPhrase,
leaf(Verb, "walks", "present", "3rd person")
)
)
ルートの 2 つの直接の子ノードにアクセスしたいのですが、単純に正規表現でこれを行うことはできません。
m/tree \( \w+ , (group1) , (group2) \) /x
group1 と group2 を正しくキャプチャしたいと思います。つまり、group1 と group2 の開き括弧と閉じ括弧の数は偶数です。
それは非常に複雑な作業のように思えますが、それに対する一般的/最も簡単な解決策は何ですか?
たとえば、プロローグはこのタスクを簡単に消化します。