私は* slnファイル形式と同様の構成の形式を持っているので、一例として、次のことを取る:マルチレベルの「ノード」をテキストでどのように解析しますか?
DCOM Productions Configuration File, Format Version 1.0
BeginSection:Global
GlobalKeyA = AnswerOne
.: Stores the global configuration key
:: for the application. This key is used
:: to save the current state of the app.
:: as well as prevent lockups
GlobalKey3 = AnswerTwo
.: Secondary Key. See above setting
GlobalKeyC = AnswerThree
BeginSection: UpdateSystem
NestedKeyA = One
NestedKeyB = Two
NestedKeyC = { A set of multiline data
where we will show how
to write a multiline
paragraph }
NestedKeyD = System.Int32, 100
EndSection
EndSection
BeginSection:Application
InstallPath = C:\Program Files\DCOM Productions\BitFlex
EndSection
私はそうパラメータとしてテキストのセグメントを取るおそらく再帰関数が必要になることを知って、例えば、セクション全体を渡し、そのように再帰的に解析します。
私はこれを行う方法について私の頭を得ることができないようです。各セクションには潜在的に多くの子セクションがあります。これはXML文書のようなものです。私は実際にここでコードを要求しているわけではなく、このような文書を解析する方法についての方法論です。
私はどのセクションで作業しているかを判断するためにタブ(インデックスを指定)を使用することを考えていましたが、ドキュメントがタブ付き(書式設定)されていないと失敗します。どんな良い考え?
うん、開始とEndSectionの基本的エンドストップ・ノードを起動しているが、どのように私はEndSectionがBeginSectionどの属する区別でしょうか?最初のノードを取得することはできませんでした。なぜなら、最初のノードを解析するのではなく、入れ子ノードのEndSectionになる可能性があるからです。 –
1つのBeginSectionを解析するパーサを作成し、BeginSection内のBeginSectionに出会った場合は、新しいサブセクションの先頭で自身を呼び出します。結果をハッシュリファレンスとして渡します。ハッシュリファレンスは、呼び出し元関数のハッシュに追加することができます。 – Sorantis
洞察力に感謝します。私は今これについてどうやって行くのか分かっていると思うし、他に質問があればポストバックすると思う。ありがとう! –