0

以下のように、TCL構文の配列を持つTCLスクリプトから出力されたファイルがあります。

set data(item1) {
  xyz { 
     a { one two three 1 2 3}
     b { three one two 3 2 4}
   }
  lmn {
     z { "something" 1 2 3}
     d { "samething" 3 2 4}
   }
};

set data(item2) {
  xyz { 
     ss { 100 }
     sd { "sdss" 200 300}
   }
  lmn {
     ee { "xdf" 1 "2dsd" 3}
     pp { "dd" "fsdf" 3 2 4}
   }
};

次に、必要なデータの消費を開始する前に、Ruby プログラムでこのファイルを読み取り、以下のようなハッシュのハッシュにビルドする必要があります。

data = {
  'item1' => {
     'xyz' => { 
        'a' => %w{one two three 1 2 3},
        'b' => %w{three one two 3 2 4}
     },

     'lmn' => {
        'z' => %w{something 1 2 3},
        'd' => %w{samething 3 2 4}
     }
   },

  'item2' => {
     'xyz' => { 
        'ss' => %w{100 },
        'sd' => %w{sdss 200 300}
     },
     'lmn' => {
        'ee' => %w{xdf 1 2dsd 3},
        'pp' => %w{dd fsdf 3 2 4}
     }
   }
}

この目的で使用できる Ruby ユーティリティまたはメソッドはありますか?

ご支援いただきありがとうございます。

4

1 に答える 1

0

いいえ、パーサーを構築する必要があります。ツリートップを見てください。

コンパイル フェーズなど、コンパイラの初期の基本的な知識を持っていると非常に役立ちます(字句解析器と構文解析器。このプロジェクトではセマンティック アナライザーは必要ありません)。

また、コンパイラの前提条件であるため、文法の基本的な理解が役立ちますが、コンパイラを理解しようとしているときに文法に出くわす可能性があります。

于 2013-08-21T19:07:37.853 に答える