open-standards/wai/tools/tree-sitter-openqasm/README.md
Transaction Science 219cc3b5f3 wai-quantum: the version and deprecation policy, the deprecations page, and each README's word on what is stable
- wai-quantum/VERSIONING.md: the public surface of every WAI Quantum
  package, what each part of a version number promises, the schemas' rules,
  what changed in a receipt's canonical content, the support windows the
  owner decided (2026-10-27), how a deprecated item says so on each surface,
  the rule before 1.0, and what CI checks.
- wai-quantum/DEPRECATIONS.md: each deprecated item, the version that
  deprecated it, its replacement; none today.
- Every WAI Quantum README links both; the changelog entry.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 23:44:28 -04:00

2.6 KiB

tree-sitter-openqasm

OpenQASM 3, and the OpenQASM 2 forms in common use, as a tree-sitter grammar: for highlighting, folding and structural selection in any editor that reads tree-sitter grammars. The language service (wai-quantum lsp) gives the engine's diagnostics, completion, hover and renames; this grammar gives the editor the program's structure as it is typed.

Path What it is
grammar.js The grammar: every statement of OpenQASM 3.1 (declarations of every type, gates, subroutines, modifiers, control flow, timing, calibrations kept as text, pragmas, annotations) and OpenQASM 2's qreg, creg, opaque, measure q -> c and if(c==1)
src/ The parser generated from it (ABI 14), committed so that an editor builds it with a C compiler alone
queries/highlights.scm Highlighting, in the common capture names (@keyword, @type, @function, @number, …)
queries/locals.scm Scopes, definitions and references
queries/folds.scm Foldable blocks
test/corpus/ The parse of every construct, checked tree for tree
test/highlight/ Highlighting checked capture by capture
script/check-programs.mjs Parses every program in the repository's conformance material and examples, and fails on any error

The grammar reads what is written. It does not say what a program means: the engine's reader decides that, and the language server reports it.

Building and testing

With Node.js 22 and a C compiler:

npm ci                                   # the pinned tree-sitter command line
npx tree-sitter generate --abi 14        # src/ from grammar.js
npx tree-sitter test                     # the corpus and the highlighting
node script/check-programs.mjs           # every program in the repository

src/ must be regenerated and committed with any change to grammar.js; CI regenerates it and fails if the committed parser differs.

Versions

The names of the grammar's nodes and fields are what queries name, so they are its public surface: one is renamed or removed only in a major release, as WAI Quantum's policy says, and listed in the deprecations at least one minor release before.

Using it in an editor

The editor configurations in ../wai-quantum-editor/editors/ point at this directory, and the editors guide says how to install each.