2011-03-25 13 views
7

Necesito hacer un análisis estático de QML-archivos de formato (wiki), pero no puedo encontrar ningún analizador para ellos. La única forma que veo es reutilizar el código fuente del módulo Qt Declarative o escribir mi propio analizador. No puedo encontrar nada en la web. ¿Alguien puede indicarme alguna herramienta, convertidor a módulo XML o Perl/Python para analizar fácilmente los elementos de los archivos QML?Buscando un analizador para archivos de formato QML

¡Muchas gracias por su ayuda!

+0

¿Hay alguna razón para no usar el código del módulo declarativo de QT? Evitaría escribir un analizador sintáctico, con el argumento de que es poco probable que sepas la gramática precisa (a menos que se oculte en las fuentes de Qt en algún lugar). –

+0

Es una de las posibles soluciones, pero mis idiomas preferidos son Perl y Python y trataré de evitar escribir un código C++ en mi proyecto. Además, no quiero depender de Qt para ejecutar el análisis en los servidores que pueden no tenerlo instalado. – aponomarenko

+1

Hay una gramática adjunta a [este error] (https://bugreports.qt.io/browse/QTBUG-12602), aunque a esa gramática le falta información de espacios en blanco y puntos y coma-por-misma-propiedad de la línea-declaraciones, por lo no es del todo perfecto – Phrogz

Respuesta

3

Puede consultar el código fuente del QML Viewer que viene con el SDK. El source code está disponible en Gitorious. El código QML Viewer está en C++, no en Python ni en Perl.

Otra posible solución, usar Python sin dependencias con Qt, es usar un analizador de JavaScript estándar y modificarlo para que pueda entender QML. Desde el enlace wiki que ya ha proporcionado:

Debido QML y JavaScript son muy similares, casi todos los editores de código JavaScript apoyo hará el trabajo.

Encontré pynarcissus que es un intérprete de Javascript en Python. ¿Podrías modificarlo ligeramente para que pueda interpretar correctamente los archivos QML?

+0

¡Es una excelente idea usar un analizador de JavaScript! ¡Gracias! – aponomarenko

6

El analizador en qt-declarative está en src/qml/qml/analizador, y una gran parte se genera con qlalr (el mismo lugar que el enlace anterior, pero con qlalr en lugar de qdeclarativo). También puede consultar el analizador utilizado en qt-creator src/libs/qmljs/parser que se deriva del qt-declarativo.

Cuestiones relacionadas