tree-sitter-qmljs ================= [QML][] grammar for the [tree-sitter][] parsing library. [QML]: https://doc.qt.io/qt-6/qmlapplications.html [tree-sitter]: https://github.com/tree-sitter/tree-sitter References ---------- * https://code.qt.io/cgit/qt/qtdeclarative.git/tree/src/qml/parser/qqmljs.g Pitfalls -------- Since grouped binding notation is syntactically ambiguous, it is parsed as an object definition. ```qml // (ui_object_definition type_name: (identifier "Button") ...) Button { // (ui_object_definition type_name: (identifier "icon") ...) icon { source: "foo.png"; color: "transparent" } } ``` Building -------- Use the `master` branch, which contains all generated files. ``` $ git checkout master $ npm install $ cargo build --release ``` Hacking ------- Use the `dev` branch, but you'll first need to run `npm install` in the `master` branch. ``` $ git checkout master $ npm install $ git checkout dev ``` Generate code and run tests: ``` $ make generate tests ``` Make sure example QML files can be parsed: ``` $ make fetch-examples parse-examples ```