libQASM is a library to parse cQASM programs, developed by QuTech. At the moment, libQASM only supports cQASM v3.0 programs (see cQASM-spec for the language specification).
It performs lexical, syntactic, and semantic analysis of an input program received via a file or a string. It produces one of the following results:
- A syntactic or semantic AST (Abstract Syntax Tree) object. Depending on if we are parsing or analysing.
- A list of parsing or analysing errors. In case the input program was malformed.
- A JSON representation of either the AST or the list of errors.
It can be used from:
- C++ projects (as a Conan package).
- Python projects (as a Python package).
- Emscripten projects (via a Typescript frontend).
Check out QX simulator and OpenSquirrel compiler for an example of use in a C++ and a Python project, respectively.
Given a cQASM program example.cq
.
version 3.0
qubit[2] q
bit[2] b
H q[0]
CNOT q[0], q[1]
b = measure q
We can parse or analyze this circuit, using libQASM through the following programming language:
#include "libqasm/v3x/cqasm-python.hpp"
int main() {
auto parse_result = V3xAnalyzer::parse_file("example.cq");
auto analyzer = V3xAnalyzer();
auto analysis_result = analyzer.analyze_file("example.cq");
}
The emscripten API only allows to input a cQASM program as a string.
import { default as wrapper } from 'cqasm_emscripten.mjs';
wrapper().then(function(result: any) {
let analyzer = new result["EmscriptenWrapper"]()
let program = `
version 3
qubit[2] q
bit[2] b
H q[0]
CNOT q[0], q[1]
b = measure q
`
let output = analyzer.parse_string_to_json(program)
analyzer.delete()
}).catch((error: any) => {
console.error("unhandledRejection", error, "\n");
});
from libqasm import Analyzer
if __name__ == "__main__":
parse_result = Analyzer.parse_file('example.cq')
analyzer = Analyzer()
analysis_result = analyzer.analyze_file('example.cq')
The libQASM documentation is hosted through GitHub Pages.
libQASM is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.
Quantum Inspire: support@quantum-inspire.com