import { ParseTree } from './parser'; import { Type, Symbol } from './types'; import { Module } from './modules'; import { Environment } from './generator'; export declare class JSGenerator extends Environment { constructor(parent?: Environment); protected newEnv(): JSGenerator; acceptTrue(pt: ParseTree): Type; acceptFalse(pt: ParseTree): Type; acceptInt(pt: ParseTree): Type; acceptFloat(pt: ParseTree): Type; acceptDouble(pt: ParseTree): Type; acceptQString(pt: ParseTree): Type; acceptMultiString(pt: ParseTree): Type; acceptFormat(pt: ParseTree): Type; acceptList(pt: ParseTree): Type; safeName(name: string): string; safeGlobalName(name: string): string; safeLocalName(name: string): string; checkSymbol(pt: ParseTree, declTy?: Type, isParam?: boolean): Symbol; checkSymbols(pt: ParseTree, rightTy: Type): Symbol[]; pushSymbol(symbol: Symbol): void; pushSymbols(symbols: Symbol[]): void; pushLet(symbol: Symbol | Symbol[]): void; acceptVar(pt: ParseTree): Type; acceptVarDecl(pt: ParseTree): Type; acceptMultiAssignment(pt: ParseTree): Type; acceptTuple(pt: ParseTree): Type; pushOp(op: string): void; acceptAnd(pt: ParseTree): Type; acceptOr(pt: ParseTree): Type; acceptNot(pt: ParseTree): Type; readonly CMPR: string[]; isComparator(pt: ParseTree): boolean; desugarTrinaryComparator(pt: ParseTree): ParseTree; acceptInfix(pt: ParseTree): Type; acceptUnary(pt: ParseTree): Type; splitArguments(pt: ParseTree): [ParseTree[], ParseTree | undefined]; pushArguments(params: ParseTree[], options: ParseTree | undefined): void; findSymbol(name: ParseTree, paramSize: number): Symbol | undefined; acceptApplyExpr(pt: ParseTree): Type; acceptMethodExpr(pt: ParseTree): Type; emitSymbolExpr(pt: ParseTree, symbol: Symbol, params: ParseTree[], options?: ParseTree): Type; acceptDataArgument(pt: ParseTree): Type; acceptListArgument(pt: ParseTree): Type; acceptData(pt: ParseTree): Type; acceptExpression(pt: ParseTree): Type; acceptAssignment(pt: ParseTree): void; acceptSelfAssignment(pt: ParseTree): Type; sourceMap(pt: ParseTree): string; intValue(pt: ParseTree): number | undefined; fieldType(baseTy: Type, name: string): Type; guessType(name: string, type: Type): Symbol | undefined; elementType(ty: Type, index?: number): Type; acceptIndex(pt: ParseTree): Type; acceptField(pt: ParseTree): Type; pushYield(pt: ParseTree): void; makeBlock(pt: ParseTree, parent?: ParseTree): ParseTree; pushCondition(symbol: string, cond: ParseTree): void; pushLoopBody(body: ParseTree, parent: ParseTree): void; checkRanges(pt: ParseTree): ParseTree[] | undefined; pushForOf(symbols: Symbol[], range: ParseTree, modifier?: string): void; acceptIfStmt(pt: ParseTree): Type; acceptWhileStmt(pt: ParseTree): Type; acceptForStmt(pt: ParseTree): Type; acceptListForExpr(pt: ParseTree): Type; acceptContinue(pt: ParseTree): Type; acceptBreak(pt: ParseTree): Type; acceptReturn(pt: ParseTree): Type; acceptPass(pt: ParseTree): Type; protected newFunctionContext(parent: ParseTree, name?: string): JSGenerator; protected addParameter(pt: ParseTree, ptype?: Type): void; defineSymbol(name: string, symbol: Symbol, source?: ParseTree): void; pushFunction(body: JSGenerator, suffix?: string): void; pushSyncFunc(name: string, gname: string, body: JSGenerator): void; acceptFuncDecl(pt: ParseTree): Type; acceptFuncExpr(pt: ParseTree): Type; getModule(pt: ParseTree): Module | undefined; newModuleSymbol(name: string, module: Module): Symbol; getModuleSymbol(name: string, key: string, keyTree: ParseTree): any; acceptImportDecl(pt: ParseTree): Type; importAutoModule(name: string, names?: { [key: string]: string; }): Symbol | undefined; acceptFromDecl(pt: ParseTree, out: string[]): Type; acceptBlock(pt: ParseTree): Type; acceptTopLevelReturn(pt: ParseTree): Type; acceptSource(pt: ParseTree): Type; acceptSyntaxError(pt: ParseTree): void; }