寻找一个用于QML格式文件的解析器

11
我需要对QML格式的文件进行静态分析(wiki),但是我找不到任何解析器。我唯一的办法是重用Qt Declarative模块的源代码或编写自己的解析器。我在网络上找不到任何信息。有人能给我指点一些工具,将其转换为XML或Perl/Python模块以轻松解析QML文件中的元素吗?
非常感谢您的帮助!

不使用QT Declarative模块的代码有什么理由吗?我会避免编写解析器,因为你很可能不知道精确的语法(除非它在Qt源代码中隐藏)。 - Ira Baxter
这是其中一种可能的解决方案,但我更喜欢使用Perl和Python编程语言,并且会尽量避免在我的项目中编写C++代码。此外,我不想依赖Qt来运行分析,因为有些服务器可能没有安装它。 - linuxbuild
1
这个bug附带了一种语法,但该语法缺少空格信息和同行属性声明的分号,因此它并不完美。 - Phrogz
2个回答

6

qt-declarative中的解析器位于src/qml/qml/parser,其中很大一部分是使用qlalr生成的(与前面的链接相同,但将qtdeclarative替换为qlalr)。 您可能还想查看qt-creator src/libs/qmljs/parser中使用的解析器,该解析器源自qt-declarative。


5
你可以查看SDK附带的QML Viewer的源代码。源代码可在Gitorious上获得。QML Viewer代码是C++而不是Python或Perl。
另一个可能的解决方案,使用没有Qt依赖关系的Python,是使用标准Javascript解析器并修改它以使其能够理解QML。从你提供的维基链接中:
“因为QML和JavaScript非常相似,几乎所有支持JavaScript的代码编辑器都可以胜任。”
我发现了pynarcissus,这是一个用Python编写的Javascript解释器。也许你可以稍微修改它,使其能够正确地解释QML文件?

使用JavaScript解析器是一个绝妙的主意!谢谢! - linuxbuild

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接