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 程序中读取这个文件,并将它们构建成一个 Hash of Hash,类似于下面的内容,然后再开始使用所需的数据:

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 回答