Maestro 0.1.0
Unified interface for quantum circuit simulation
Loading...
Searching...
No Matches
QasmCirc.h
Go to the documentation of this file.
1
11#pragma once
12
13#ifndef _QASMCIRC_H_
14#define _QASMCIRC_H_
15
16#include "qasm.h"
17
18namespace qasm {
19template <typename Time = Types::time_type> class QasmToCirc {
20public:
21 void clear() {
22 grammar.clear();
23 program.clear();
24 errorMessage.clear();
25 error = false;
26 }
27
28 std::shared_ptr<Circuits::Circuit<Time>>
29 ParseAndTranslate(std::string &qasmInput) {
30 clear();
31
32 try {
33 auto it = qasmInput.begin();
34 if (boost::spirit::qi::phrase_parse(it, qasmInput.end(), grammar,
35 qasm::ascii::space, program)) {
36 if (it == qasmInput.end()) {
37 return program.ToCircuit<Time>(grammar.opaqueGates,
38 grammar.definedGates);
39 } else {
40 error = true;
41 errorMessage = "Error: Unparsed input remaining: '" +
42 std::string(it, qasmInput.end()) + "'";
43 }
44 } else {
45 error = true;
46 errorMessage = "Error: Parsing failed, unparsed input remaining: '" +
47 std::string(it, qasmInput.end()) + "'";
48 }
49 } catch (const std::exception &ex) {
50 error = true;
51 errorMessage = ex.what();
52 }
53
54 return nullptr;
55 }
56
57 bool Failed() const { return error; }
58
59 const std::string &GetErrorMessage() const { return errorMessage; }
60
61 double GetVersion() const { return program.version; }
62
63 const std::vector<std::string> &GetComments() const {
64 return program.comments;
65 }
66
67 const std::vector<std::string> &GetIncludes() const {
68 return program.includes;
69 }
70
71protected:
72 qasm::QasmGrammar<> grammar;
74 std::string errorMessage;
75 bool error = false;
76};
77} // namespace qasm
78
79#endif //_QASMCIRC_H_
bool Failed() const
Definition QasmCirc.h:57
qasm::Program program
Definition QasmCirc.h:73
double GetVersion() const
Definition QasmCirc.h:61
const std::string & GetErrorMessage() const
Definition QasmCirc.h:59
std::shared_ptr< Circuits::Circuit< Time > > ParseAndTranslate(std::string &qasmInput)
Definition QasmCirc.h:29
const std::vector< std::string > & GetIncludes() const
Definition QasmCirc.h:67
std::string errorMessage
Definition QasmCirc.h:74
const std::vector< std::string > & GetComments() const
Definition QasmCirc.h:63
qasm::QasmGrammar grammar
Definition QasmCirc.h:72