/**
 * oracle语法解析的监听器，实现符号表
 */
import { OracleListenerBase } from "./oracleListenerBase";
import { SymbolTable } from "../../symbols/symbolTable";
import { Unit_statementContext, Select_statementContext } from "../../grammar/oracle/PlSqlParser";
import { Select_list_elementsContext } from "../../grammar/oracle/PlSqlParser";
import { Table_ref_auxContext } from "../../grammar/oracle/PlSqlParser";
export declare class OracleListener extends OracleListenerBase {
    /**
     * 符号表
     */
    private symbolTable;
    /**
     * 当前作用域
     */
    private currentLevel;
    constructor(symbolTable: SymbolTable);
    /**
     * 进入了普通sql的顶级规则中，创建一个顶级作用域
     */
    enterUnit_statement: (ctx: Unit_statementContext) => void;
    /**
     * 退出顶级作用域
     */
    exitUnit_statement: (ctx: Unit_statementContext) => void;
    /***************************************开始select语句***************************************************/
    /**
     * 进入到select语句中
     */
    enterSelect_statement: (ctx: Select_statementContext) => void;
    /**
     * 退出select语句
     * @param ctx
     */
    exitSelect_statement: (ctx: Select_statementContext) => void;
    /**
     * 进入到select语句中字段元素（可能一个，也肯定多个）
     * 思路：
     * 1.判断select_list_elements的子节点是不是expressions
     * 2.找到expressions子级节点为expression的节点
     * 3.expression节点此时表示了字段，写入到符号表中
     * @param ctx
     */
    enterSelect_list_elements: (ctx: Select_list_elementsContext) => void;
    /**
     * 解决select语句中table的定位
     * 思路：
     * 1.进入到table_ref_aux
     * 2.找到table_ref_aux_internal的table_ref_aux_internal_one，此处为真实的表名
     * 3.找到table_alias，如果有，则表示当前表有别名，设置别名。
     * 注意：当前仅支持table_ref_aux_internal_one
     * @param ctx
     */
    enterTable_ref_aux: (ctx: Table_ref_auxContext) => void;
}
