import { ParseTree, TerminalNode, Token, TokenStream } from "antlr4ng"; import { StringTable } from "./StringTable.js"; import { CompiledST } from "./CompiledST.js"; import { ErrorManager } from "../misc/ErrorManager.js"; /** * Temporary data used during construction and functions that fill it / use it. * Result is {@link #impl} {@link CompiledST} object. */ export declare class CompilationState { /** * Track instruction location within * {@code impl.}{@link CompiledST##instructions instrs} array; this is next address * to write to. Byte-addressable memory. */ ip: number; /** The compiled code implementation to fill in. */ impl: CompiledST; /** Track unique strings; copy into {@link CompiledST#strings} after compilation. */ stringTable: StringTable; protected tokens: TokenStream; protected errMgr: ErrorManager; constructor(errMgr: ErrorManager, name: string | undefined, tokens: TokenStream); /** * Write value at index into a byte array highest to lowest byte, * left to right. */ static writeShort(memory: Int8Array, index: number, value: number): void; defineString(s: string): number; refAttr(templateToken: Token | undefined, id: TerminalNode | null): void; setOption(id: TerminalNode): void; func(templateToken: Token, id: TerminalNode | null): void; emit(opcode: number): void; emit(opNode: ParseTree | null, opcode: number): void; emit1(opNode: ParseTree | null, opcode: number, arg: number | string): void; emit2(opAST: ParseTree | null, opcode: number, arg: number | string, arg2: number): void; insert(addr: number, opcode: number, s: string): void; write(addr: number, value: number): void; indent(indent: ParseTree | null, text: string): void; protected ensureCapacity(n: number): void; }