有没有一种简单的方法可以将文本文件分块到支撑平衡部分?

Mar*_*rty 2 algorithm perl parsing recursive-descent

我正在尝试使用Perl&Parse :: RecDescent从文件中解析一些数据.我无法在perl脚本中抛出完整的数据文件,因为RecDescent需要几天的时间.因此,我将庞大的数据文件拆分为RD大小的块,以减少运行时间.

但是,我需要在平衡括号内提取部分,而我现在的例程并不健全(它过分依赖于来自换行符的最终闭括号的位置).例:

cell ( identifier ) {
  keyword2 { };
  ...
  keyword3 { keyword4 {  } };
}

...more sections...
Run Code Online (Sandbox Code Playgroud)

我需要抓住所有东西,从cell ... {匹配的闭合},可以有不同数量的间距和子部分.

必须有一些linux命令行的东西才能轻松做到这一点?有任何想法吗?

编辑:输入文件大约8M,语法~60规则.

yst*_*sth 5

显示你正在喂食Parse :: RecDescent; 它可能会变得更好.

或者您可以尝试使用Text :: Balanced来解析{...}.

  • 好吧,当你说Text :: Balanced"运行"RecDescent时,我感到很惊讶,因为那不是我对它的记忆.再看一遍就说明你错了; Parse :: RecDescent使用Text :: Balanced来解析语法,但Text :: Balanced根本不使用Parse :: RecDescent. (2认同)