class QPanda::QASMToQProg

Overview

QASM instruction sets convert to quantum program. More…

#include <QASMToQProg.h>

class QASMToQProg: public qasmBaseVisitor
{
public:
    // construction

    QASMToQProg(
        QuantumMachine* qvm,
        QVec& qv,
        std::vector<ClassicalCondition>& cv
        );

    // methods

    virtual antlrcpp::Any visitMainprogram(qasmParser::MainprogramContext* ctx);
    virtual antlrcpp::Any visitHead_decl(qasmParser::Head_declContext* ctx);
    virtual antlrcpp::Any visitVersion_decl(qasmParser::Version_declContext* ctx);
    virtual antlrcpp::Any visitInclude_decl(qasmParser::Include_declContext* ctx);
    virtual antlrcpp::Any visitStatement(qasmParser::StatementContext* ctx);
    virtual antlrcpp::Any visitReg_decl(qasmParser::Reg_declContext* ctx);
    virtual antlrcpp::Any visitOpaque_decl(qasmParser::Opaque_declContext* ctx);
    virtual antlrcpp::Any visitIf_decl(qasmParser::If_declContext* ctx);
    virtual antlrcpp::Any visitBarrier_decl(qasmParser::Barrier_declContext* ctx);
    virtual antlrcpp::Any visitGate_decl(qasmParser::Gate_declContext* ctx);
    virtual antlrcpp::Any visitGoplist(qasmParser::GoplistContext* ctx);
    virtual antlrcpp::Any visitBop(qasmParser::BopContext* ctx);
    virtual antlrcpp::Any visitQop(qasmParser::QopContext* ctx);
    virtual antlrcpp::Any visitUop(qasmParser::UopContext* ctx);
    virtual antlrcpp::Any visitAnylist(qasmParser::AnylistContext* ctx);
    virtual antlrcpp::Any visitIdlist(qasmParser::IdlistContext* ctx);
    virtual antlrcpp::Any visitArgument(qasmParser::ArgumentContext* ctx);
    virtual antlrcpp::Any visitId_index(qasmParser::Id_indexContext* ctx);
    virtual antlrcpp::Any visitExplist(qasmParser::ExplistContext* ctx);
    virtual antlrcpp::Any visitExp(qasmParser::ExpContext* ctx);
    virtual antlrcpp::Any visitId(qasmParser::IdContext* ctx);
    virtual antlrcpp::Any visitInteger(qasmParser::IntegerContext* ctx);
    virtual antlrcpp::Any visitReal(qasmParser::RealContext* ctx);
    virtual antlrcpp::Any visitDecimal(qasmParser::DecimalContext* ctx);
    virtual antlrcpp::Any visitFilename(qasmParser::FilenameContext* ctx);
    QVec find_qvec_map_value(std::string str_key);
    std::vector<ClassicalCondition> find_cvec_map_value(std::string str_key);

    void execute_gate_function(
        GateOperationInfo op_info,
        QProg& prog
        );

    void build_zero_param_single_gate(
        QASMGateType type,
        bool is_dagger,
        GateOperationInfo op_info,
        QProg& prog
        );

    void build_one_param_single_gate(
        QASMGateType type,
        GateOperationInfo op_info,
        QProg& prog
        );

    void build_two_param_single_gate_func(
        QASMGateType type,
        GateOperationInfo op_info,
        QProg& prog
        );

    void build_three_param_single_gate(
        QASMGateType type,
        GateOperationInfo op_info,
        QProg& prog
        );

    void build_zero_param_double_gate(
        QASMGateType type,
        GateOperationInfo op_info,
        QProg& prog
        );

    void build_zero_param_triple_gate(
        QASMGateType type,
        GateOperationInfo op_info,
        QProg& prog
        );

    void build_zero_param_double_circuit(
        QASMGateType type,
        GateOperationInfo op_info,
        QProg& prog
        );

    void build_one_param_double_circuit(
        QASMGateType type,
        GateOperationInfo op_info,
        QProg& prog
        );

    void build_three_param_double_circuit(
        QASMGateType type,
        GateOperationInfo op_info,
        QProg& prog
        );

    void build_qprog(
        GateOperationInfo op_info,
        QProg& prog
        );

    QProg get_qprog();
};

Inherited Members

public:
    // methods

    virtual antlrcpp::Any visitMainprogram(qasmParser::MainprogramContext* context) = 0;
    virtual antlrcpp::Any visitHead_decl(qasmParser::Head_declContext* context) = 0;
    virtual antlrcpp::Any visitVersion_decl(qasmParser::Version_declContext* context) = 0;
    virtual antlrcpp::Any visitInclude_decl(qasmParser::Include_declContext* context) = 0;
    virtual antlrcpp::Any visitStatement(qasmParser::StatementContext* context) = 0;
    virtual antlrcpp::Any visitReg_decl(qasmParser::Reg_declContext* context) = 0;
    virtual antlrcpp::Any visitOpaque_decl(qasmParser::Opaque_declContext* context) = 0;
    virtual antlrcpp::Any visitIf_decl(qasmParser::If_declContext* context) = 0;
    virtual antlrcpp::Any visitBarrier_decl(qasmParser::Barrier_declContext* context) = 0;
    virtual antlrcpp::Any visitGate_decl(qasmParser::Gate_declContext* context) = 0;
    virtual antlrcpp::Any visitGoplist(qasmParser::GoplistContext* context) = 0;
    virtual antlrcpp::Any visitBop(qasmParser::BopContext* context) = 0;
    virtual antlrcpp::Any visitQop(qasmParser::QopContext* context) = 0;
    virtual antlrcpp::Any visitUop(qasmParser::UopContext* context) = 0;
    virtual antlrcpp::Any visitAnylist(qasmParser::AnylistContext* context) = 0;
    virtual antlrcpp::Any visitIdlist(qasmParser::IdlistContext* context) = 0;
    virtual antlrcpp::Any visitId_index(qasmParser::Id_indexContext* context) = 0;
    virtual antlrcpp::Any visitArgument(qasmParser::ArgumentContext* context) = 0;
    virtual antlrcpp::Any visitExplist(qasmParser::ExplistContext* context) = 0;
    virtual antlrcpp::Any visitExp(qasmParser::ExpContext* context) = 0;
    virtual antlrcpp::Any visitId(qasmParser::IdContext* context) = 0;
    virtual antlrcpp::Any visitReal(qasmParser::RealContext* context) = 0;
    virtual antlrcpp::Any visitInteger(qasmParser::IntegerContext* context) = 0;
    virtual antlrcpp::Any visitDecimal(qasmParser::DecimalContext* context) = 0;
    virtual antlrcpp::Any visitFilename(qasmParser::FilenameContext* context) = 0;
    virtual antlrcpp::Any visitMainprogram(qasmParser::MainprogramContext* context);
    virtual antlrcpp::Any visitHead_decl(qasmParser::Head_declContext* ctx);
    virtual antlrcpp::Any visitVersion_decl(qasmParser::Version_declContext* ctx);
    virtual antlrcpp::Any visitInclude_decl(qasmParser::Include_declContext* ctx);
    virtual antlrcpp::Any visitStatement(qasmParser::StatementContext* ctx);
    virtual antlrcpp::Any visitReg_decl(qasmParser::Reg_declContext* ctx);
    virtual antlrcpp::Any visitOpaque_decl(qasmParser::Opaque_declContext* ctx);
    virtual antlrcpp::Any visitIf_decl(qasmParser::If_declContext* ctx);
    virtual antlrcpp::Any visitBarrier_decl(qasmParser::Barrier_declContext* ctx);
    virtual antlrcpp::Any visitGate_decl(qasmParser::Gate_declContext* ctx);
    virtual antlrcpp::Any visitGoplist(qasmParser::GoplistContext* ctx);
    virtual antlrcpp::Any visitBop(qasmParser::BopContext* ctx);
    virtual antlrcpp::Any visitQop(qasmParser::QopContext* ctx);
    virtual antlrcpp::Any visitUop(qasmParser::UopContext* ctx);
    virtual antlrcpp::Any visitAnylist(qasmParser::AnylistContext* ctx);
    virtual antlrcpp::Any visitIdlist(qasmParser::IdlistContext* ctx);
    virtual antlrcpp::Any visitId_index(qasmParser::Id_indexContext* ctx);
    virtual antlrcpp::Any visitArgument(qasmParser::ArgumentContext* ctx);
    virtual antlrcpp::Any visitExplist(qasmParser::ExplistContext* ctx);
    virtual antlrcpp::Any visitExp(qasmParser::ExpContext* ctx);
    virtual antlrcpp::Any visitId(qasmParser::IdContext* ctx);
    virtual antlrcpp::Any visitReal(qasmParser::RealContext* ctx);
    virtual antlrcpp::Any visitInteger(qasmParser::IntegerContext* ctx);
    virtual antlrcpp::Any visitDecimal(qasmParser::DecimalContext* ctx);
    virtual antlrcpp::Any visitFilename(qasmParser::FilenameContext* ctx);

Detailed Documentation

QASM instruction sets convert to quantum program.

Methods

virtual antlrcpp::Any visitMainprogram(qasmParser::MainprogramContext* ctx)

They are abstract visitors for a parse tree produced by qasmParser.

QProg get_qprog()

get converted quantum programs

Returns:

QProg