class QPanda::OriginIRVisitor

Overview

OriginIR Visitor. More…

#include <OriginIRToQProg.h>

class OriginIRVisitor: public originirBaseVisitor
{
public:
    // enums

    enum OpType;

    // structs

    struct ExprContext;
    struct GateContext;

    // construction

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

    // methods

    QProg get_qprog(size_t progid);
    virtual antlrcpp::Any visitTranslationunit(originirParser::TranslationunitContext* context);
    virtual antlrcpp::Any visitQinit_declaration(originirParser::Qinit_declarationContext* ctx);
    virtual antlrcpp::Any visitCinit_declaration(originirParser::Cinit_declarationContext* ctx);
    virtual antlrcpp::Any visitIndex(originirParser::IndexContext* ctx);
    virtual antlrcpp::Any visitC_KEY_declaration(originirParser::C_KEY_declarationContext* ctx);
    virtual antlrcpp::Any visitSingle_gate_without_parameter_declaration(originirParser::Single_gate_without_parameter_declarationContext* ctx);
    virtual antlrcpp::Any visitSingle_gate_with_one_parameter_declaration(originirParser::Single_gate_with_one_parameter_declarationContext* ctx);
    virtual antlrcpp::Any visitSingle_gate_with_two_parameter_declaration(originirParser::Single_gate_with_two_parameter_declarationContext* ctx);
    virtual antlrcpp::Any visitSingle_gate_with_three_parameter_declaration(originirParser::Single_gate_with_three_parameter_declarationContext* ctx);
    virtual antlrcpp::Any visitSingle_gate_with_four_parameter_declaration(originirParser::Single_gate_with_four_parameter_declarationContext* ctx);
    virtual antlrcpp::Any visitDouble_gate_without_parameter_declaration(originirParser::Double_gate_without_parameter_declarationContext* ctx);
    virtual antlrcpp::Any visitDouble_gate_with_one_parameter_declaration(originirParser::Double_gate_with_one_parameter_declarationContext* ctx);
    virtual antlrcpp::Any visitDouble_gate_with_four_parameter_declaration(originirParser::Double_gate_with_four_parameter_declarationContext* ctx);
    virtual antlrcpp::Any visitTriple_gate_without_parameter_declaration(originirParser::Triple_gate_without_parameter_declarationContext* ctx);
    virtual antlrcpp::Any visitSingle_gate_without_parameter_type(originirParser::Single_gate_without_parameter_typeContext* ctx);
    virtual antlrcpp::Any visitSingle_gate_with_one_parameter_type(originirParser::Single_gate_with_one_parameter_typeContext* ctx);
    virtual antlrcpp::Any visitSingle_gate_with_two_parameter_type(originirParser::Single_gate_with_two_parameter_typeContext* ctx);
    virtual antlrcpp::Any visitSingle_gate_with_three_parameter_type(originirParser::Single_gate_with_three_parameter_typeContext* ctx);
    virtual antlrcpp::Any visitSingle_gate_with_four_parameter_type(originirParser::Single_gate_with_four_parameter_typeContext* ctx);
    virtual antlrcpp::Any visitDouble_gate_without_parameter_type(originirParser::Double_gate_without_parameter_typeContext* ctx);
    virtual antlrcpp::Any visitDouble_gate_with_one_parameter_type(originirParser::Double_gate_with_one_parameter_typeContext* ctx);
    virtual antlrcpp::Any visitDouble_gate_with_four_parameter_type(originirParser::Double_gate_with_four_parameter_typeContext* ctx);
    virtual antlrcpp::Any visitTriple_gate_without_parameter_type(originirParser::Triple_gate_without_parameter_typeContext* ctx);

    void call_define_gatefunc(
        size_t prog_id,
        const std::string& func_name,
        const std::vector<ExprContext>& actual_qubits,
        const std::vector<double>& actual_angles
        );

    virtual antlrcpp::Any visitDefine_gate_declaration(originirParser::Define_gate_declarationContext* ctx);
    virtual antlrcpp::Any visitPri_ckey(originirParser::Pri_ckeyContext* ctx);
    virtual antlrcpp::Any visitPri_cst(originirParser::Pri_cstContext* ctx);
    virtual antlrcpp::Any visitPri_expr(originirParser::Pri_exprContext* ctx);
    virtual antlrcpp::Any visitUnary_expression(originirParser::Unary_expressionContext* ctx);
    virtual antlrcpp::Any visitMultiplicative_expression(originirParser::Multiplicative_expressionContext* ctx);
    virtual antlrcpp::Any visitAddtive_expression(originirParser::Addtive_expressionContext* ctx);
    virtual antlrcpp::Any visitRelational_expression(originirParser::Relational_expressionContext* ctx);
    virtual antlrcpp::Any visitEquality_expression(originirParser::Equality_expressionContext* ctx);
    virtual antlrcpp::Any visitLogical_and_expression(originirParser::Logical_and_expressionContext* ctx);
    virtual antlrcpp::Any visitLogical_or_expression(originirParser::Logical_or_expressionContext* ctx);
    virtual antlrcpp::Any visitAssignment_expression(originirParser::Assignment_expressionContext* ctx);
    virtual antlrcpp::Any visitControlbit_list(originirParser::Controlbit_listContext* ctx);
    virtual antlrcpp::Any visitStatement(originirParser::StatementContext* ctx);
    virtual antlrcpp::Any visitDagger_statement(originirParser::Dagger_statementContext* ctx);
    virtual antlrcpp::Any visitControl_statement(originirParser::Control_statementContext* ctx);
    virtual antlrcpp::Any visitQelse_statement_fragment(originirParser::Qelse_statement_fragmentContext* ctx);
    virtual antlrcpp::Any visitQif_if(originirParser::Qif_ifContext* ctx);
    virtual antlrcpp::Any visitQif_ifelse(originirParser::Qif_ifelseContext* ctx);
    virtual antlrcpp::Any visitQwhile_statement(originirParser::Qwhile_statementContext* ctx);
    virtual antlrcpp::Any visitMeasure_statement(originirParser::Measure_statementContext* ctx);
    virtual antlrcpp::Any visitReset_statement(originirParser::Reset_statementContext* ctx);
    virtual antlrcpp::Any visitBarrier_statement(originirParser::Barrier_statementContext* ctx);
    virtual antlrcpp::Any visitExpression_statement(originirParser::Expression_statementContext* ctx);
    virtual antlrcpp::Any visitDefine_gate_statement(originirParser::Define_gate_statementContext* ctx);
    virtual antlrcpp::Any visitExplist(originirParser::ExplistContext* ctx);
    virtual antlrcpp::Any visitExp(originirParser::ExpContext* ctx);
    virtual antlrcpp::Any visitGate_func_statement(originirParser::Gate_func_statementContext* ctx);
    virtual antlrcpp::Any visitId_list(originirParser::Id_listContext* ctx);
};

Inherited Members

public:
    // methods

    virtual antlrcpp::Any visitTranslationunit(originirParser::TranslationunitContext* context) = 0;
    virtual antlrcpp::Any visitDeclaration(originirParser::DeclarationContext* context) = 0;
    virtual antlrcpp::Any visitQinit_declaration(originirParser::Qinit_declarationContext* context) = 0;
    virtual antlrcpp::Any visitCinit_declaration(originirParser::Cinit_declarationContext* context) = 0;
    virtual antlrcpp::Any visitQuantum_gate_declaration(originirParser::Quantum_gate_declarationContext* context) = 0;
    virtual antlrcpp::Any visitIndex(originirParser::IndexContext* context) = 0;
    virtual antlrcpp::Any visitC_KEY_declaration(originirParser::C_KEY_declarationContext* context) = 0;
    virtual antlrcpp::Any visitQ_KEY_declaration(originirParser::Q_KEY_declarationContext* context) = 0;
    virtual antlrcpp::Any visitSingle_gate_without_parameter_declaration(originirParser::Single_gate_without_parameter_declarationContext* context) = 0;
    virtual antlrcpp::Any visitSingle_gate_with_one_parameter_declaration(originirParser::Single_gate_with_one_parameter_declarationContext* context) = 0;
    virtual antlrcpp::Any visitSingle_gate_with_two_parameter_declaration(originirParser::Single_gate_with_two_parameter_declarationContext* context) = 0;
    virtual antlrcpp::Any visitSingle_gate_with_three_parameter_declaration(originirParser::Single_gate_with_three_parameter_declarationContext* context) = 0;
    virtual antlrcpp::Any visitSingle_gate_with_four_parameter_declaration(originirParser::Single_gate_with_four_parameter_declarationContext* context) = 0;
    virtual antlrcpp::Any visitDouble_gate_without_parameter_declaration(originirParser::Double_gate_without_parameter_declarationContext* context) = 0;
    virtual antlrcpp::Any visitDouble_gate_with_one_parameter_declaration(originirParser::Double_gate_with_one_parameter_declarationContext* context) = 0;
    virtual antlrcpp::Any visitDouble_gate_with_four_parameter_declaration(originirParser::Double_gate_with_four_parameter_declarationContext* context) = 0;
    virtual antlrcpp::Any visitTriple_gate_without_parameter_declaration(originirParser::Triple_gate_without_parameter_declarationContext* context) = 0;
    virtual antlrcpp::Any visitDefine_gate_declaration(originirParser::Define_gate_declarationContext* context) = 0;
    virtual antlrcpp::Any visitSingle_gate_without_parameter_type(originirParser::Single_gate_without_parameter_typeContext* context) = 0;
    virtual antlrcpp::Any visitSingle_gate_with_one_parameter_type(originirParser::Single_gate_with_one_parameter_typeContext* context) = 0;
    virtual antlrcpp::Any visitSingle_gate_with_two_parameter_type(originirParser::Single_gate_with_two_parameter_typeContext* context) = 0;
    virtual antlrcpp::Any visitSingle_gate_with_three_parameter_type(originirParser::Single_gate_with_three_parameter_typeContext* context) = 0;
    virtual antlrcpp::Any visitSingle_gate_with_four_parameter_type(originirParser::Single_gate_with_four_parameter_typeContext* context) = 0;
    virtual antlrcpp::Any visitDouble_gate_without_parameter_type(originirParser::Double_gate_without_parameter_typeContext* context) = 0;
    virtual antlrcpp::Any visitDouble_gate_with_one_parameter_type(originirParser::Double_gate_with_one_parameter_typeContext* context) = 0;
    virtual antlrcpp::Any visitDouble_gate_with_four_parameter_type(originirParser::Double_gate_with_four_parameter_typeContext* context) = 0;
    virtual antlrcpp::Any visitTriple_gate_without_parameter_type(originirParser::Triple_gate_without_parameter_typeContext* context) = 0;
    virtual antlrcpp::Any visitPri_ckey(originirParser::Pri_ckeyContext* context) = 0;
    virtual antlrcpp::Any visitPri_cst(originirParser::Pri_cstContext* context) = 0;
    virtual antlrcpp::Any visitPri_expr(originirParser::Pri_exprContext* context) = 0;
    virtual antlrcpp::Any visitUnary_expression(originirParser::Unary_expressionContext* context) = 0;
    virtual antlrcpp::Any visitMultiplicative_expression(originirParser::Multiplicative_expressionContext* context) = 0;
    virtual antlrcpp::Any visitAddtive_expression(originirParser::Addtive_expressionContext* context) = 0;
    virtual antlrcpp::Any visitRelational_expression(originirParser::Relational_expressionContext* context) = 0;
    virtual antlrcpp::Any visitEquality_expression(originirParser::Equality_expressionContext* context) = 0;
    virtual antlrcpp::Any visitLogical_and_expression(originirParser::Logical_and_expressionContext* context) = 0;
    virtual antlrcpp::Any visitLogical_or_expression(originirParser::Logical_or_expressionContext* context) = 0;
    virtual antlrcpp::Any visitAssignment_expression(originirParser::Assignment_expressionContext* context) = 0;
    virtual antlrcpp::Any visitExpression(originirParser::ExpressionContext* context) = 0;
    virtual antlrcpp::Any visitControlbit_list(originirParser::Controlbit_listContext* context) = 0;
    virtual antlrcpp::Any visitStatement(originirParser::StatementContext* context) = 0;
    virtual antlrcpp::Any visitDagger_statement(originirParser::Dagger_statementContext* context) = 0;
    virtual antlrcpp::Any visitControl_statement(originirParser::Control_statementContext* context) = 0;
    virtual antlrcpp::Any visitQelse_statement_fragment(originirParser::Qelse_statement_fragmentContext* context) = 0;
    virtual antlrcpp::Any visitQif_if(originirParser::Qif_ifContext* context) = 0;
    virtual antlrcpp::Any visitQif_ifelse(originirParser::Qif_ifelseContext* context) = 0;
    virtual antlrcpp::Any visitQwhile_statement(originirParser::Qwhile_statementContext* context) = 0;
    virtual antlrcpp::Any visitMeasure_statement(originirParser::Measure_statementContext* context) = 0;
    virtual antlrcpp::Any visitReset_statement(originirParser::Reset_statementContext* context) = 0;
    virtual antlrcpp::Any visitBarrier_statement(originirParser::Barrier_statementContext* context) = 0;
    virtual antlrcpp::Any visitExpression_statement(originirParser::Expression_statementContext* context) = 0;
    virtual antlrcpp::Any visitDefine_gate_statement(originirParser::Define_gate_statementContext* context) = 0;
    virtual antlrcpp::Any visitExplist(originirParser::ExplistContext* context) = 0;
    virtual antlrcpp::Any visitExp(originirParser::ExpContext* context) = 0;
    virtual antlrcpp::Any visitGate_func_statement(originirParser::Gate_func_statementContext* context) = 0;
    virtual antlrcpp::Any visitId(originirParser::IdContext* context) = 0;
    virtual antlrcpp::Any visitId_list(originirParser::Id_listContext* context) = 0;
    virtual antlrcpp::Any visitGate_name(originirParser::Gate_nameContext* context) = 0;
    virtual antlrcpp::Any visitConstant(originirParser::ConstantContext* context) = 0;
    virtual antlrcpp::Any visitTranslationunit(originirParser::TranslationunitContext* context);
    virtual antlrcpp::Any visitDeclaration(originirParser::DeclarationContext* ctx);
    virtual antlrcpp::Any visitQinit_declaration(originirParser::Qinit_declarationContext* ctx);
    virtual antlrcpp::Any visitCinit_declaration(originirParser::Cinit_declarationContext* ctx);
    virtual antlrcpp::Any visitQuantum_gate_declaration(originirParser::Quantum_gate_declarationContext* ctx);
    virtual antlrcpp::Any visitIndex(originirParser::IndexContext* ctx);
    virtual antlrcpp::Any visitC_KEY_declaration(originirParser::C_KEY_declarationContext* ctx);
    virtual antlrcpp::Any visitQ_KEY_declaration(originirParser::Q_KEY_declarationContext* ctx);
    virtual antlrcpp::Any visitSingle_gate_without_parameter_declaration(originirParser::Single_gate_without_parameter_declarationContext* ctx);
    virtual antlrcpp::Any visitSingle_gate_with_one_parameter_declaration(originirParser::Single_gate_with_one_parameter_declarationContext* ctx);
    virtual antlrcpp::Any visitSingle_gate_with_two_parameter_declaration(originirParser::Single_gate_with_two_parameter_declarationContext* ctx);
    virtual antlrcpp::Any visitSingle_gate_with_three_parameter_declaration(originirParser::Single_gate_with_three_parameter_declarationContext* ctx);
    virtual antlrcpp::Any visitSingle_gate_with_four_parameter_declaration(originirParser::Single_gate_with_four_parameter_declarationContext* ctx);
    virtual antlrcpp::Any visitDouble_gate_without_parameter_declaration(originirParser::Double_gate_without_parameter_declarationContext* ctx);
    virtual antlrcpp::Any visitDouble_gate_with_one_parameter_declaration(originirParser::Double_gate_with_one_parameter_declarationContext* ctx);
    virtual antlrcpp::Any visitDouble_gate_with_four_parameter_declaration(originirParser::Double_gate_with_four_parameter_declarationContext* ctx);
    virtual antlrcpp::Any visitTriple_gate_without_parameter_declaration(originirParser::Triple_gate_without_parameter_declarationContext* ctx);
    virtual antlrcpp::Any visitDefine_gate_declaration(originirParser::Define_gate_declarationContext* ctx);
    virtual antlrcpp::Any visitSingle_gate_without_parameter_type(originirParser::Single_gate_without_parameter_typeContext* ctx);
    virtual antlrcpp::Any visitSingle_gate_with_one_parameter_type(originirParser::Single_gate_with_one_parameter_typeContext* ctx);
    virtual antlrcpp::Any visitSingle_gate_with_two_parameter_type(originirParser::Single_gate_with_two_parameter_typeContext* ctx);
    virtual antlrcpp::Any visitSingle_gate_with_three_parameter_type(originirParser::Single_gate_with_three_parameter_typeContext* ctx);
    virtual antlrcpp::Any visitSingle_gate_with_four_parameter_type(originirParser::Single_gate_with_four_parameter_typeContext* ctx);
    virtual antlrcpp::Any visitDouble_gate_without_parameter_type(originirParser::Double_gate_without_parameter_typeContext* ctx);
    virtual antlrcpp::Any visitDouble_gate_with_one_parameter_type(originirParser::Double_gate_with_one_parameter_typeContext* ctx);
    virtual antlrcpp::Any visitDouble_gate_with_four_parameter_type(originirParser::Double_gate_with_four_parameter_typeContext* ctx);
    virtual antlrcpp::Any visitTriple_gate_without_parameter_type(originirParser::Triple_gate_without_parameter_typeContext* ctx);
    virtual antlrcpp::Any visitPri_ckey(originirParser::Pri_ckeyContext* ctx);
    virtual antlrcpp::Any visitPri_cst(originirParser::Pri_cstContext* ctx);
    virtual antlrcpp::Any visitPri_expr(originirParser::Pri_exprContext* ctx);
    virtual antlrcpp::Any visitUnary_expression(originirParser::Unary_expressionContext* ctx);
    virtual antlrcpp::Any visitMultiplicative_expression(originirParser::Multiplicative_expressionContext* ctx);
    virtual antlrcpp::Any visitAddtive_expression(originirParser::Addtive_expressionContext* ctx);
    virtual antlrcpp::Any visitRelational_expression(originirParser::Relational_expressionContext* ctx);
    virtual antlrcpp::Any visitEquality_expression(originirParser::Equality_expressionContext* ctx);
    virtual antlrcpp::Any visitLogical_and_expression(originirParser::Logical_and_expressionContext* ctx);
    virtual antlrcpp::Any visitLogical_or_expression(originirParser::Logical_or_expressionContext* ctx);
    virtual antlrcpp::Any visitAssignment_expression(originirParser::Assignment_expressionContext* ctx);
    virtual antlrcpp::Any visitExpression(originirParser::ExpressionContext* ctx);
    virtual antlrcpp::Any visitControlbit_list(originirParser::Controlbit_listContext* ctx);
    virtual antlrcpp::Any visitStatement(originirParser::StatementContext* ctx);
    virtual antlrcpp::Any visitDagger_statement(originirParser::Dagger_statementContext* ctx);
    virtual antlrcpp::Any visitControl_statement(originirParser::Control_statementContext* ctx);
    virtual antlrcpp::Any visitQelse_statement_fragment(originirParser::Qelse_statement_fragmentContext* ctx);
    virtual antlrcpp::Any visitQif_if(originirParser::Qif_ifContext* ctx);
    virtual antlrcpp::Any visitQif_ifelse(originirParser::Qif_ifelseContext* ctx);
    virtual antlrcpp::Any visitQwhile_statement(originirParser::Qwhile_statementContext* ctx);
    virtual antlrcpp::Any visitMeasure_statement(originirParser::Measure_statementContext* ctx);
    virtual antlrcpp::Any visitReset_statement(originirParser::Reset_statementContext* ctx);
    virtual antlrcpp::Any visitBarrier_statement(originirParser::Barrier_statementContext* ctx);
    virtual antlrcpp::Any visitExpression_statement(originirParser::Expression_statementContext* ctx);
    virtual antlrcpp::Any visitDefine_gate_statement(originirParser::Define_gate_statementContext* ctx);
    virtual antlrcpp::Any visitExplist(originirParser::ExplistContext* ctx);
    virtual antlrcpp::Any visitExp(originirParser::ExpContext* ctx);
    virtual antlrcpp::Any visitGate_func_statement(originirParser::Gate_func_statementContext* ctx);
    virtual antlrcpp::Any visitId(originirParser::IdContext* ctx);
    virtual antlrcpp::Any visitId_list(originirParser::Id_listContext* ctx);
    virtual antlrcpp::Any visitGate_name(originirParser::Gate_nameContext* ctx);
    virtual antlrcpp::Any visitConstant(originirParser::ConstantContext* ctx);

Detailed Documentation

OriginIR Visitor.

Methods

virtual antlrcpp::Any visitTranslationunit(originirParser::TranslationunitContext* context)

Visit parse trees produced by originirParser.