我需要对QML - 格式文件(wiki)进行一些静态分析,但我找不到任何解析器。我看到的唯一方法是重用Qt Declarative模块的源代码或编写我自己的解析器。我在网上找不到任何东西。任何人都可以指向一些工具,转换为XML或Perl / Python模块,以便轻松解析QML文件中的元素吗?
非常感谢你的帮助!
答案 0 :(得分:6)
qt-declarative中的解析器位于src / qml / qml / parser中,其中很大一部分是使用qlalr生成的(与前一个链接相同,但使用qlalr而不是qtdeclarative)。 您可能还需要查看qt-creator src / libs / qmljs / parser中使用的解析器,该解析器派生自qt声明的解析器。
答案 1 :(得分:5)
您可以查看SDK附带的QML Viewer的源代码。 source code可在Gitorious上找到。 QML Viewer代码使用的是C ++而不是Python,也不是Perl。
另一种可能的解决方案,即使用与Qt无依赖关系的Python,就是使用标准的Javascript解析器并对其进行修改,以便能够理解QML。从您提供的维基链接:
由于QML和JavaScript非常相似,因此几乎所有支持JavaScript的代码编辑都可以完成这项任务。
我发现pynarcissus是Python中的Javascript解释器。可能是你可以稍微修改它,以便它可以解释相应的QML文件?