import { AbstractParseTreeVisitor } from 'antlr4ts/tree/AbstractParseTreeVisitor'; import { ParserRuleContext } from 'antlr4ts'; import { SourceNode } from 'source-map'; import { TBLKParserVisitor } from '../grammar/TBLKParserVisitor'; import * as Parser from '../grammar/TBLKParser'; export interface PartialInfo { path: string; name: string; uri: string; } export declare type CompilerOptions = { /** * The path to the source file, used to generate source map. */ uri: string | null; /** * True if you want to generate source maps. */ sourceMap: boolean; /** * The compilation mode. */ mode: 'javascript' | 'iife' | 'partial'; /** * True if you want to generate typescript modules. */ typescript: boolean; /** * The partials to be imported not supported when targeting `iife`. */ partials: PartialInfo[] | null; }; declare type ControlFlowItem = 'for' | 'if'; export declare class Compiler extends AbstractParseTreeVisitor implements TBLKParserVisitor { readonly options: CompilerOptions; /** Used to check the correctness of open-close control-flow nodes. */ protected controlFlowStack: ControlFlowItem[]; private symbols; private usedElse; private indentLevel; constructor(options: CompilerOptions); get indention(): string; /** Checks the head of the control-flow stack, throws error when: * a) Stack is empty. * b) Stack's head is not equal to the `expected` argument. * * @param expected The control-flow node kind expected to be at the top of * the stack. */ protected check(expected: ControlFlowItem): void; /** * Tries to pop from the control-flow stack, operation fails if `check()` * throws. * * @param expected The expected value of the control-flow stack's head. * @see Compiler#check */ protected pop(expected: ControlFlowItem): void; defaultResult(): SourceNode; aggregateResult(aggregate: SourceNode, nextResult: SourceNode): SourceNode; /** Create an import statement based on the compiler options. */ importStatement(name: string, path: string, defaultImport?: boolean): string; /** Create a function argument based on the compiler options */ functionArgument(name: string, type: string, defaultValue?: string): string; visitDocument(context: Parser.DocumentContext): SourceNode; visitPartialBegin(context: Parser.PartialBeginContext): SourceNode; visitPartialEnd(context: Parser.PartialEndContext): SourceNode; visitPartialUse(context: Parser.PartialUseContext): SourceNode; visitAssignment(context: Parser.AssignmentContext): SourceNode; visitRow(context: Parser.RowContext): SourceNode; visitSpan(context: Parser.SpanContext): SourceNode; visitPrint(context: Parser.PrintContext): SourceNode; visitLoopBegin(context: Parser.LoopBeginContext): SourceNode; visitLoopFilter(context: Parser.LoopFilterContext): SourceNode; visitLoopEnd(context: Parser.LoopEndContext): SourceNode; visitIfBegin(context: Parser.IfBeginContext): SourceNode; visitElseCmd(context: Parser.ElseCmdContext): SourceNode; visitElseIfCmd(context: Parser.ElseIfCmdContext): SourceNode; visitIfEnd(context: Parser.IfEndContext): SourceNode; visitExpressionSequence(node: Parser.ExpressionSequenceContext): SourceNode; visitMemberIndexExpression(node: Parser.MemberIndexExpressionContext): SourceNode; visitMemberDotExpression(node: Parser.MemberDotExpressionContext): SourceNode; visitArgumentsExpression(node: Parser.ArgumentsExpressionContext): SourceNode; visitArguments(node: Parser.ArgumentsContext): SourceNode; visitTypeofExpression(node: Parser.TypeofExpressionContext): SourceNode; visitUnaryPlusExpression(node: Parser.UnaryPlusExpressionContext): SourceNode; visitUnaryMinusExpression(node: Parser.UnaryMinusExpressionContext): SourceNode; visitBitNotExpression(node: Parser.BitNotExpressionContext): SourceNode; visitNotExpression(node: Parser.NotExpressionContext): SourceNode; visitPowerExpression(node: Parser.PowerExpressionContext): SourceNode; visitMultiplicativeExpression(node: Parser.MultiplicativeExpressionContext): SourceNode; visitAdditiveExpression(node: Parser.AdditiveExpressionContext): SourceNode; visitCoalesceExpression(node: Parser.CoalesceExpressionContext): SourceNode; visitBitShiftExpression(node: Parser.BitShiftExpressionContext): SourceNode; visitRelationalExpression(node: Parser.RelationalExpressionContext): SourceNode; visitInstanceofExpression(node: Parser.InstanceofExpressionContext): SourceNode; visitInExpression(node: Parser.InExpressionContext): SourceNode; visitEqualityExpression(node: Parser.EqualityExpressionContext): SourceNode; visitBitAndExpression(node: Parser.BitAndExpressionContext): SourceNode; visitBitOrExpression(node: Parser.BitOrExpressionContext): SourceNode; visitLogicalAndExpression(node: Parser.LogicalAndExpressionContext): SourceNode; visitLogicalOrExpression(node: Parser.LogicalOrExpressionContext): SourceNode; visitTernaryExpression(node: Parser.TernaryExpressionContext): SourceNode; visitIdentifierExpression(node: Parser.IdentifierExpressionContext): SourceNode; visitLiteralExpression(node: Parser.LiteralExpressionContext): SourceNode; visitParenthesizedExpression(node: Parser.ParenthesizedExpressionContext): SourceNode; visitIdentifierName(node: Parser.IdentifierNameContext): SourceNode; visitIdentifier(node: Parser.IdentifierContext): SourceNode; protected text(node: ParserRuleContext, chunk: string | SourceNode | (string | SourceNode)[]): SourceNode; } export {};