libqasm
v1.2.1
Published
[](https://github.com/qutech-delft/libqasm/actions) [](https://conan.io/center/recipes/libqasm) [.
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.
Getting started
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 qWe can parse or analyze this circuit using libQASM through the following programming language:
C++
#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");
}Emscripten
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");
});Python
from libqasm import Analyzer
if __name__ == "__main__":
parse_result = Analyzer.parse_file('example.cq')
analyzer = Analyzer()
analysis_result = analyzer.analyze_file('example.cq')Documentation
The libQASM documentation is hosted through GitHub Pages.
License
libQASM is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.
Authors
Quantum Inspire: [email protected]
