我正在尝试找出解析GE Logician MEL跟踪文件的最佳方法,以便于阅读。

它有像

>{!gDYNAMIC_3205_1215032915_810 = (clYN)}
execute>GDYNAMIC_3205_1215032915_810 = "Yes, No"
results>"Yes, No" 
execute>end 
results>"Yes, No" 

>{!gDYNAMIC_3205_1215032893_294 = (clYN)}
execute>GDYNAMIC_3205_1215032893_294 = "Yes, No"
results>"Yes, No" 
execute>end 
results>"Yes, No"

>{IF (STR(F3205_1220646638_285, F3205_1220646638_301) == "") THEN "" ELSE (\par\tab fnHeadingFormat("Depression") + CFMT(F3205_1220646638_285, "", "Have you often been bothered by feeling down, depressed or hopeless? ", "B", "\par ") + CFMT(F3205_1220646638_301, "", "Have you often been bothered by little interest or pleasure in doing things? ", "B", "\par ") ) ENDIF}
execute>call STR("No", "No")
results>"NoNo" 
execute>"NoNo" == ""
results>FALSE 
execute>if FALSE
results>FALSE 
execute>call FNHEADINGFORMAT("Depression")
execute>call CFMT("Depression", "B,2")
results>"\fs24\b Depression\b0\fs20 " 
execute>"\r\n" + "\fs24\b Depression\b0\fs20 "
results>"\r\n\fs24\b Depression\b0\fs20 " 
execute>"\r\n\fs24\b Depression\b0\fs20 " + "\r\n"
results>"\r\n\fs24\b Depression\b0\fs20 \r\n" 
results>return "\r\n\fs24\b Depression\b0\fs20 \r\n" 
execute>call CFMT("No", "", "Have you often been bothered by feeling down, depressed or hopeless? ", "B", "\par ")
results>"\b Have you often been bothered by feeling down, depressed or hopeless? \b0 No\par " 
execute>"\r\n\fs24\b Depression\b0\fs20 \r\n" + "\b Have you often been bothered by feeling down, depressed or hopeless? \b0 No\par "
results>"\r\n\fs24\b Depression\b0\fs20 \r\n\b Have you often been bothered by feeling down, depressed or hopeless? \b0 No\par " 
execute>call CFMT("No", "", "Have you often been bothered by little interest or pleasure in doing things? ", "B", "\par ")
results>"\b Have you often been bothered by little interest or pleasure in doing things? \b0 No\par " 
execute>"\r\n\fs24\b Depression\b0\fs20 \r\n\b Have you often been bothered by feeling down, depressed or hopeless? \b0 No\par " + "\b Have you often been bothered by little interest or pleasure in doing things? \b0 No\par "
results>"\r\n\fs24\b Depression\b0\fs20 \r\n\b Have you often been bothered by feeling down, depressed or hopeless? \b0 No\par \b Have you often been bothered by little interest or pleasure in doing things? \b0 No\par "

我可以通过程序化来实现它,但是在我使用过的所有正则表达式之后,我发现很难相信那里没有任何内容可以让我以类似的方式定义解析文件的规则。 我错了吗?

===============>>#1 票数:4 已采纳

使用ANTLR制作语法。 如果您使用的是C,则lex / yacc是原生的。 ANTLR使用Java,Python和.NET创建本机解析器。 你的输出看起来像一个repl; 尝试向供应商询问输入语言的规范。

===============>>#2 票数:2

Antlr会做到这一点。

===============>>#3 票数:2

如果您使用Perl进行解析。 YACC的Perl等价物是Parse :: Yapp模块。 当我翻译yacc语法以使用我的Perl代码时,翻译主要是机制的。 还有一个递归下降解析器生成器,它很慢但功能强大: Parse :: RecDescent

===============>>#4 票数:1

你可以试试ANTLR或lex / yacc。

===============>>#5 票数:1

如果是我,我会得到一个无上下文的语法并将其插入解析器生成器,可能是Scala的组合器库。 然而,这种语法看起来相当容易手工解析,只要牢记自动机理论,它应该不是问题。

===============>>#6 票数:1

我想你可以使用像LEX,FLEX,CUP,ANTLR或YACC这样的工具(或者它们用于你正在使用的任何编程语言的等价物。任何主流编程语言都有一些可用的。)如果它们具有特定的解析文件结构[更准确地说,如果它们可以用语法表示]。 但这些可能不适用于更精细的点。

===============>>#7 票数:1

有一种名为Haskell的编程语言,你可以尝试一个很好的解析库。 www.haskell.org和http://legacy.cs.uu.nl/daan/parsec.html了解更多详情

  ask by SarekOfVulcan translate from so

未解决问题?本站智能推荐:

3回复

有什么工具可以轻松在Linux上解析配置文件?

我需要一个允许我解析配置文件并从中请求一些数据的工具。 配置文件的格式是免费的 (可以是INI,XML等),但是对用户更友好,更好。 这是一个示例配置文件(使用XML,但是可以是任何东西:我不在乎格式): 工具的用法应类似于: 您知道任何可以做到这一点的Linux工具
9回复

什么是解析日志文件的最佳工具? [关闭]

我使用grep来解析我的交易应用程序日志,但它在某种意义上是有限的,我需要在视觉上拖拽输出以查看发生的事情等。 我想知道Perl是否是更好的选择? 使用Perl学习日志和字符串解析的任何好资源? 我也相信Python会对此有所帮助。 Perl vs Python vs'grep
2回复

类似于XML的日志文件解析工具

有人以前看过这样的日志文件格式,还是知道它的名称? 现在,我正在使用ruby脚本逐行对其进行解析,以获取所需的信息,但是我一直在研究Microsoft Log Parser之类的东西,因为它具有SQL-ish查询支持。 唯一的问题是,由于日志文件中的所有条目都类似于上面的示例,其中
6回复

cygwin中的命令行文件解析工具

我必须处理各种格式的文本文件。 这是一个示例( A和B列由制表符分隔): 文件可以有或没有头,混合的定界方案,具有上述名称/值对的列等。 我经常需要以各种方式从此类文件中提取数据。 例如,从以上数据中,我可能想要与存在Name2的值相关联。 即 以上面的示例为例,有哪些
2回复

使用自定义工具或脚本解析和更改xml文件

我经常碰到这样的事情。 这次我有精灵表文件,其中包含许多这样的行: 现在我需要增加每个textureregion上的id ,例如100,然后将相同的xml写入另一个文件或覆盖现有的。 我将不得不一次又一次地这样做,所以我需要自动化它。 我可以想到无数的方法来解决这个问题。 但我也
3回复

使用GNU工具链从文件解析c ++函数头

我需要解析SWIG使用的.i文件中的函数头,其中包含函数头旁边的各种垃圾。 (最终输出将是函数声明列表) 对我来说最好的选择是使用GNU工具链(GCC,Binutils等)这样做,但我可能会错过一个简单的方法来使用SWIG。 如果我请告诉我! 谢谢 :] 编辑:我也不知道如何使
4回复

是否有任何工具可以解析ac头文件并从ac头文件中提取函数原型

特别是获取函数返回类型(如果可能的话,它是否为指针类型)。 (我正在尝试编写自动生成的ioctl / dlsym包装器库(将被LD_PRELOAD编辑))。 python或ruby库是首选,但欢迎使用任何可行的解决方案。
2回复

如何使用javac工具解析器从java文件中读取内联注释?

我使用tools.jar(即JavaCompiler )中的javac来解析java文件。 我使用TreePathScanner的实现来解析源代码。 到目前为止,一切似乎都很好,因为我可以解析导入,包名,类名,方法名,说明...... 但我确实有内联注释的问题 - 我不能简单地让它们出
2回复

需要使用本地SDK工具来解析具有大表的本地pdf文件

用户需要在本地解析本机pdf(可选数据,不扫描,不需要OCR)。 pdf文件可能超过400页,带有大表。 某些表可能没有清晰的边框。 我可以使用任何API吗? 谢谢!
3回复

解析报告的最佳工具

我有一个报告,我需要解析/抓取加载到备用或可查询的数据存储。 报告看起来像是类似于: 这个 。 我的直觉是PERL会做得不错,但我有几种不同的报告排列,我真的不想围绕每个表单制作一个脚本。 这个报告是一个很好的股票类型报告,我已经看到Monarch Pro可以解析这些类型的报告