【发布时间】:2017-12-31 11:14:02
【问题描述】:
我正在尝试处理来自旧系统的数据,该系统似乎位于 ASCII plist format 中。有没有一种简单的方法来解析这些或将它们转换为更容易处理的格式?理想情况下,输出应该是嵌套数组。 (GNUstep 和 XCode 项目文件也使用这些文件)
存在library,但即使使用 Apple 的 NSDictionary 样本,它们的样本也会失败:(我的 yacc / lex 知识不足以快速尝试修复它......)(对于任何未引用的值或键名,它都会失败)
Apple 的示例文件:
{
AnimalSmells = { pig = piggish; lamb = lambish; worm = wormy; };
AnimalSounds = { pig = oink; lamb = baa; worm = baa;
Lisa = "Why is the worm talking like a lamb?"; };
AnimalColors = { pig = pink; lamb = black; worm = pink; };
}
plist 文件的可用库似乎只支持 XML 和二进制 plist 文件,不支持 ASCII 文件。
在一个地方实现一个完整的库来解析遗留系统的一些输出似乎有点矫枉过正......
在我见过的其他一些(非 PHP)代码中看到的一个丑陋的方法是使用正则表达式来修改数据,直到其他方法可以解析它。
对于链接库:
在Lexer 中,这可能是问题的一部分:
stringliteral = /\"(\\.|[^\\\"])*\"/
(需要引用字符串)(该库似乎是为特定用例编写的,而我的用例似乎与此相去甚远......)
使用plex 编译词法分析器也会产生不同的源文件,这使得随机修改以查看会发生什么很棘手......
【问题讨论】: