【问题标题】:tcl array to ruby hash parsertcl 数组到 ruby​​ 哈希解析器
【发布时间】:2013-08-21 18:30:42
【问题描述】:

我有一个从 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 实用程序或方法可以用于此目的?

提前感谢您的支持。

【问题讨论】:

    标签: ruby arrays hash tcl


    【解决方案1】:

    没有。您将不得不构建一个解析器。看看treetop

    compilers有一些早期的基础知识会很有帮助,比如编译阶段(词法分析器和语法分析器,这个项目你不需要语义分析器)。

    此外,对grammars 的一些基本了解会有所帮助,因为这是编译器的先决条件 - 但您很可能会在尝试找出编译器时偶然发现语法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-10
      • 2012-07-13
      • 2018-09-25
      • 2021-11-03
      • 2014-08-22
      • 2014-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多