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

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

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 generic visitor for a parse tree produced
 * by `openqasmParser`.
 *
 * @param <Result> The return type of the visit operation. Use `void` for
 * operations with no return type.
 */
export interface openqasmVisitor<Result> extends ParseTreeVisitor<Result> {
	/**
	 * Visit a parse tree produced by `openqasmParser.mainprog`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitMainprog?: (ctx: MainprogContext) => Result;

	/**
	 * Visit a parse tree produced by `openqasmParser.includeStatement`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitIncludeStatement?: (ctx: IncludeStatementContext) => Result;

	/**
	 * Visit a parse tree produced by `openqasmParser.statement`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitStatement?: (ctx: StatementContext) => Result;

	/**
	 * Visit a parse tree produced by `openqasmParser.version`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitVersion?: (ctx: VersionContext) => Result;

	/**
	 * Visit a parse tree produced by `openqasmParser.decl`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitDecl?: (ctx: DeclContext) => Result;

	/**
	 * Visit a parse tree produced by `openqasmParser.gatedecl`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitGatedecl?: (ctx: GatedeclContext) => Result;

	/**
	 * Visit a parse tree produced by `openqasmParser.goplist`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitGoplist?: (ctx: GoplistContext) => Result;

	/**
	 * Visit a parse tree produced by `openqasmParser.qop`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitQop?: (ctx: QopContext) => Result;

	/**
	 * Visit a parse tree produced by `openqasmParser.uop`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitUop?: (ctx: UopContext) => Result;

	/**
	 * Visit a parse tree produced by `openqasmParser.anylist`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitAnylist?: (ctx: AnylistContext) => Result;

	/**
	 * Visit a parse tree produced by `openqasmParser.idlist`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitIdlist?: (ctx: IdlistContext) => Result;

	/**
	 * Visit a parse tree produced by `openqasmParser.mixedlist`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitMixedlist?: (ctx: MixedlistContext) => Result;

	/**
	 * Visit a parse tree produced by `openqasmParser.argument`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitArgument?: (ctx: ArgumentContext) => Result;

	/**
	 * Visit a parse tree produced by `openqasmParser.explist`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitExplist?: (ctx: ExplistContext) => Result;

	/**
	 * Visit a parse tree produced by `openqasmParser.exp`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitExp?: (ctx: ExpContext) => Result;

	/**
	 * Visit a parse tree produced by `openqasmParser.unaryop`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitUnaryop?: (ctx: UnaryopContext) => Result;
}

