// Generated from lib/antlr/openqasm.g4 by ANTLR 4.9.0-SNAPSHOT
// @ts-nocheck

import { ParseTreeListener } from "antlr4ts/tree/ParseTreeListener";

import { MainprogContext } from "./openqasmParser";
import { IncludeStatementContext } from "./openqasmParser";
import { StatementContext } from "./openqasmParser";
import { VersionContext } from "./openqasmParser";
import { DeclContext } from "./openqasmParser";
import { GatedeclContext } from "./openqasmParser";
import { GoplistContext } from "./openqasmParser";
import { QopContext } from "./openqasmParser";
import { UopContext } from "./openqasmParser";
import { AnylistContext } from "./openqasmParser";
import { IdlistContext } from "./openqasmParser";
import { MixedlistContext } from "./openqasmParser";
import { ArgumentContext } from "./openqasmParser";
import { ExplistContext } from "./openqasmParser";
import { ExpContext } from "./openqasmParser";
import { UnaryopContext } from "./openqasmParser";


/**
 * This interface defines a complete listener for a parse tree produced by
 * `openqasmParser`.
 */
export interface openqasmListener extends ParseTreeListener {
	/**
	 * Enter a parse tree produced by `openqasmParser.mainprog`.
	 * @param ctx the parse tree
	 */
	enterMainprog?: (ctx: MainprogContext) => void;
	/**
	 * Exit a parse tree produced by `openqasmParser.mainprog`.
	 * @param ctx the parse tree
	 */
	exitMainprog?: (ctx: MainprogContext) => void;

	/**
	 * Enter a parse tree produced by `openqasmParser.includeStatement`.
	 * @param ctx the parse tree
	 */
	enterIncludeStatement?: (ctx: IncludeStatementContext) => void;
	/**
	 * Exit a parse tree produced by `openqasmParser.includeStatement`.
	 * @param ctx the parse tree
	 */
	exitIncludeStatement?: (ctx: IncludeStatementContext) => void;

	/**
	 * Enter a parse tree produced by `openqasmParser.statement`.
	 * @param ctx the parse tree
	 */
	enterStatement?: (ctx: StatementContext) => void;
	/**
	 * Exit a parse tree produced by `openqasmParser.statement`.
	 * @param ctx the parse tree
	 */
	exitStatement?: (ctx: StatementContext) => void;

	/**
	 * Enter a parse tree produced by `openqasmParser.version`.
	 * @param ctx the parse tree
	 */
	enterVersion?: (ctx: VersionContext) => void;
	/**
	 * Exit a parse tree produced by `openqasmParser.version`.
	 * @param ctx the parse tree
	 */
	exitVersion?: (ctx: VersionContext) => void;

	/**
	 * Enter a parse tree produced by `openqasmParser.decl`.
	 * @param ctx the parse tree
	 */
	enterDecl?: (ctx: DeclContext) => void;
	/**
	 * Exit a parse tree produced by `openqasmParser.decl`.
	 * @param ctx the parse tree
	 */
	exitDecl?: (ctx: DeclContext) => void;

	/**
	 * Enter a parse tree produced by `openqasmParser.gatedecl`.
	 * @param ctx the parse tree
	 */
	enterGatedecl?: (ctx: GatedeclContext) => void;
	/**
	 * Exit a parse tree produced by `openqasmParser.gatedecl`.
	 * @param ctx the parse tree
	 */
	exitGatedecl?: (ctx: GatedeclContext) => void;

	/**
	 * Enter a parse tree produced by `openqasmParser.goplist`.
	 * @param ctx the parse tree
	 */
	enterGoplist?: (ctx: GoplistContext) => void;
	/**
	 * Exit a parse tree produced by `openqasmParser.goplist`.
	 * @param ctx the parse tree
	 */
	exitGoplist?: (ctx: GoplistContext) => void;

	/**
	 * Enter a parse tree produced by `openqasmParser.qop`.
	 * @param ctx the parse tree
	 */
	enterQop?: (ctx: QopContext) => void;
	/**
	 * Exit a parse tree produced by `openqasmParser.qop`.
	 * @param ctx the parse tree
	 */
	exitQop?: (ctx: QopContext) => void;

	/**
	 * Enter a parse tree produced by `openqasmParser.uop`.
	 * @param ctx the parse tree
	 */
	enterUop?: (ctx: UopContext) => void;
	/**
	 * Exit a parse tree produced by `openqasmParser.uop`.
	 * @param ctx the parse tree
	 */
	exitUop?: (ctx: UopContext) => void;

	/**
	 * Enter a parse tree produced by `openqasmParser.anylist`.
	 * @param ctx the parse tree
	 */
	enterAnylist?: (ctx: AnylistContext) => void;
	/**
	 * Exit a parse tree produced by `openqasmParser.anylist`.
	 * @param ctx the parse tree
	 */
	exitAnylist?: (ctx: AnylistContext) => void;

	/**
	 * Enter a parse tree produced by `openqasmParser.idlist`.
	 * @param ctx the parse tree
	 */
	enterIdlist?: (ctx: IdlistContext) => void;
	/**
	 * Exit a parse tree produced by `openqasmParser.idlist`.
	 * @param ctx the parse tree
	 */
	exitIdlist?: (ctx: IdlistContext) => void;

	/**
	 * Enter a parse tree produced by `openqasmParser.mixedlist`.
	 * @param ctx the parse tree
	 */
	enterMixedlist?: (ctx: MixedlistContext) => void;
	/**
	 * Exit a parse tree produced by `openqasmParser.mixedlist`.
	 * @param ctx the parse tree
	 */
	exitMixedlist?: (ctx: MixedlistContext) => void;

	/**
	 * Enter a parse tree produced by `openqasmParser.argument`.
	 * @param ctx the parse tree
	 */
	enterArgument?: (ctx: ArgumentContext) => void;
	/**
	 * Exit a parse tree produced by `openqasmParser.argument`.
	 * @param ctx the parse tree
	 */
	exitArgument?: (ctx: ArgumentContext) => void;

	/**
	 * Enter a parse tree produced by `openqasmParser.explist`.
	 * @param ctx the parse tree
	 */
	enterExplist?: (ctx: ExplistContext) => void;
	/**
	 * Exit a parse tree produced by `openqasmParser.explist`.
	 * @param ctx the parse tree
	 */
	exitExplist?: (ctx: ExplistContext) => void;

	/**
	 * Enter a parse tree produced by `openqasmParser.exp`.
	 * @param ctx the parse tree
	 */
	enterExp?: (ctx: ExpContext) => void;
	/**
	 * Exit a parse tree produced by `openqasmParser.exp`.
	 * @param ctx the parse tree
	 */
	exitExp?: (ctx: ExpContext) => void;

	/**
	 * Enter a parse tree produced by `openqasmParser.unaryop`.
	 * @param ctx the parse tree
	 */
	enterUnaryop?: (ctx: UnaryopContext) => void;
	/**
	 * Exit a parse tree produced by `openqasmParser.unaryop`.
	 * @param ctx the parse tree
	 */
	exitUnaryop?: (ctx: UnaryopContext) => void;
}

