import { ASTDefProgram, SymbolTable, ASTMain, ASTDefInteractiveProgram, ASTDefProcedure, ASTDefFunction, ASTNode, ASTStmtBlock, ASTStmtReturn, ASTStmtIf, ASTStmtRepeat, ASTStmtForeach, ASTStmtWhile, ASTStmtSwitch, ASTStmtAssignVariable, ASTStmtAssignTuple, ASTStmtProcedureCall, ASTPatternVariable, ASTPatternWildcard, ASTPatternNumber, ASTPatternStructure, ASTPatternTuple, ASTPatternTimeout, ASTNodeWithBranches, ASTExpr, ASTExprVariable, ASTExprConstantNumber, ASTExprConstantString, ASTExprChoose, ASTExprMatching, ASTExprList, ASTPattern, ASTExprRange, ASTExprTuple, ASTExprStructure, ASTExprStructureUpdate, ASTExprFunctionCall, SourceReader } from '@gobstones/gobstones-parser';
import { Code, Instruction } from './instruction';
export declare class Compiler {
    private _symtable;
    private _code;
    private _nextLabel;
    private _nextVariable;
    private _primitives;
    constructor(symtable: SymbolTable);
    compile(ast: ASTMain): Code;
    _compileMain(ast: ASTMain): void;
    _compileDefProgram(definition: ASTDefProgram): void;
    _compileDefInteractiveProgram(definition: ASTDefInteractiveProgram): void;
    _compileDefProcedure(definition: ASTDefProcedure): void;
    _compileDefFunction(definition: ASTDefFunction): void;
    _compileStatement(statement: ASTNode): void;
    _compileStmtBlock(block: ASTStmtBlock): void;
    _compileStmtReturn(statement: ASTStmtReturn): void;
    _compileStmtIf(statement: ASTStmtIf): void;
    _compileStmtRepeat(statement: ASTStmtRepeat): void;
    _compileStmtForeach(statement: ASTStmtForeach): void;
    _compileMatchForeachPatternOrFail(pattern: ASTPattern): void;
    _compileStmtWhile(statement: ASTStmtWhile): void;
    _compileStmtSwitch(statement: ASTStmtSwitch): void;
    _compileMatchBranches(statement: ASTNodeWithBranches, isMatching: boolean): void;
    _compileStmtAssignVariable(statement: ASTStmtAssignVariable): void;
    _compileStmtAssignTuple(statement: ASTStmtAssignTuple): void;
    _compileStmtProcedureCall(statement: ASTStmtProcedureCall): void;
    _compileStmtProcedureCallPrimitive(statement: ASTStmtProcedureCall): void;
    _compileStmtProcedureCallUserDefined(statement: ASTStmtProcedureCall): void;
    _compilePatternCheck(pattern: ASTPattern, targetLabel: string): void;
    _compilePatternCheckWildcard(pattern: ASTPatternWildcard, targetLabel: string): void;
    _compilePatternCheckVariable(pattern: ASTPatternVariable, targetLabel: string): void;
    _compilePatternCheckNumber(pattern: ASTPatternNumber, targetLabel: string): void;
    _compilePatternCheckStructure(pattern: ASTPatternStructure, targetLabel: string): void;
    _compilePatternCheckTuple(pattern: ASTPatternTuple, targetLabel: string): void;
    _compilePatternCheckTimeout(pattern: ASTPatternTimeout, targetLabel: string): void;
    _compilePatternBind(pattern: ASTPattern): void;
    _compilePatternBindVariable(pattern: ASTPatternVariable): void;
    _compilePatternBindStructure(pattern: ASTPatternStructure): void;
    _compilePatternBindTuple(pattern: ASTPatternTuple): void;
    _compilePatternUnbind(pattern: ASTPatternVariable): void;
    _compileExpression(expression: ASTExpr): void;
    _compileExprVariable(expression: ASTExprVariable): void;
    _compileExprConstantNumber(expression: ASTExprConstantNumber): void;
    _compileExprConstantString(expression: ASTExprConstantString): void;
    _compileExprChoose(expression: ASTExprChoose): void;
    _compileExprMatching(expression: ASTExprMatching): void;
    _compileExprList(expression: ASTExprList): void;
    _compileExprRange(expression: ASTExprRange): void;
    _compileExprTuple(expression: ASTExprTuple): void;
    _compileExprStructure(expression: ASTExprStructure): void;
    _compileExprStructureUpdate(expression: ASTExprStructureUpdate): void;
    _compileExprFunctionCall(expression: ASTExprFunctionCall): void;
    _compileExprFunctionCallAnd(expression: ASTExprFunctionCall): void;
    _compileExprFunctionCallOr(expression: ASTExprFunctionCall): void;
    _compileExprFunctionCallPrimitive(expression: ASTExprFunctionCall): void;
    _compileExprFunctionCallUserDefined(expression: ASTExprFunctionCall): void;
    _compileExprFunctionCallFieldAccessor(expression: ASTExprFunctionCall): void;
    _produce(startPos: SourceReader, endPos: SourceReader, instruction: Instruction): void;
    _produceList(startPos: SourceReader, endPos: SourceReader, instructions: Instruction[]): void;
    _freshLabel(): string;
    _freshVariable(): string;
}
//# sourceMappingURL=compiler.d.ts.map