寻找 QML 格式文件的解析器 [关闭]
Posted
技术标签:
【中文标题】寻找 QML 格式文件的解析器 [关闭]【英文标题】:Looking for a parser for QML-format files [closed] 【发布时间】:2011-03-25 23:21:06 【问题描述】:我需要对QML-format 文件(wiki)进行一些静态分析,但我找不到任何解析器。我看到的唯一方法是重用 Qt Declarative 模块的源代码或编写我自己的解析器。我在网上找不到任何东西。谁能指点我一些工具,转换为 XML 或 Perl/Python 模块来轻松解析 QML 文件中的元素?
非常感谢您的帮助!
【问题讨论】:
是否有理由不使用 QT 声明模块中的代码?我会避免编写解析器,因为您不太可能知道精确的语法(除非它隐藏在某处的 Qt 源代码中)。 这是可能的解决方案之一,但我的首选语言是 Perl 和 Python,我会尽量避免在我的项目中编写 C++ 代码。此外,我不想依赖 Qt 来在可能没有安装它的服务器上运行分析。 this bug 附加了一个语法,虽然该语法缺少空格信息和分号,所以它不是很完美。 【参考方案1】:qt-declarative 中的解析器在 src/qml/qml/parser 中,其中很大一部分是使用 qlalr 生成的(与上一个链接相同,但使用 qlalr 而不是 qtdeclarative)。 您可能还想查看qt-creatorsrc/libs/qmljs/parser 中使用的解析器,它是从 qt-declarative 派生的。
【讨论】:
【参考方案2】:您可以查看 SDK 附带的QML Viewer 的源代码。 source code 在 Gitorious 上可用。 QML Viewer 代码使用 C++ 而不是 Python 或 Perl。
另一个可能的解决方案是使用不依赖于 Qt 的 Python,即使用标准的 javascript 解析器并对其进行修改,使其能够理解 QML。从您提供的 wiki 链接:
因为 QML 和 JavaScript 非常相似,几乎所有支持 JavaScript 的代码编辑器都可以完成这项工作。
我找到了pynarcissus,它是 Python 中的 Javascript 解释器。也许你可以稍微修改它,以便它可以正确地解释 QML 文件?
【讨论】:
使用 JavaScript 解析器是个好主意!谢谢!以上是关于寻找 QML 格式文件的解析器 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何为 Qt 5.5 + QtQuick 2.5 定义 Qml 组件文件解析器?