typescript-to-lua
Version:
A generic TypeScript to Lua transpiler. Write your code in TypeScript and publish Lua!
91 lines (90 loc) • 5.05 kB
TypeScript
import { SourceNode } from "source-map";
import * as ts from "typescript";
import { CompilerOptions } from "./CompilerOptions";
import * as lua from "./LuaAST";
import { EmitHost } from "./transpilation";
export declare const escapeString: (value: string) => string;
export declare const tstlHeader = "--[[ Generated with https://github.com/TypeScriptToLua/TypeScriptToLua ]]\n";
type SourceChunk = string | SourceNode;
export type Printer = (program: ts.Program, emitHost: EmitHost, fileName: string, file: lua.File) => PrintResult;
export interface PrintResult {
code: string;
sourceMap: string;
sourceMapNode: SourceNode;
}
export declare function createPrinter(printers: Printer[]): Printer;
export declare class LuaPrinter {
private emitHost;
private program;
private sourceFile;
private static operatorMap;
private static operatorPrecedence;
private static rightAssociativeOperators;
protected currentIndent: string;
protected luaFile: string;
protected relativeSourcePath: string;
protected options: CompilerOptions;
static readonly sourceMapTracebackPlaceholder = "{#SourceMapTraceback}";
constructor(emitHost: EmitHost, program: ts.Program, sourceFile: string);
print(file: lua.File): PrintResult;
private printInlineSourceMap;
private printStackTraceOverride;
protected printFile(file: lua.File): SourceNode;
protected pushIndent(): void;
protected popIndent(): void;
protected indent(input?: SourceChunk): SourceChunk;
protected createSourceNode(node: lua.Node, chunks: SourceChunk | SourceChunk[], name?: string): SourceNode;
protected concatNodes(...chunks: SourceChunk[]): SourceNode;
protected printBlock(block: lua.Block): SourceNode;
private statementMayRequireSemiColon;
private nodeStartsWithParenthesis;
protected printStatementArray(statements: lua.Statement[]): SourceChunk[];
printStatement(statement: lua.Statement): SourceNode;
printComment(comment: string | string[]): SourceChunk;
protected printStatementExcludingComments(statement: lua.Statement): SourceNode;
printDoStatement(statement: lua.DoStatement): SourceNode;
printVariableDeclarationStatement(statement: lua.VariableDeclarationStatement): SourceNode;
printVariableAssignmentStatement(statement: lua.AssignmentStatement): SourceNode;
printIfStatement(statement: lua.IfStatement, isElseIf?: boolean): SourceNode;
printWhileStatement(statement: lua.WhileStatement): SourceNode;
printRepeatStatement(statement: lua.RepeatStatement): SourceNode;
printForStatement(statement: lua.ForStatement): SourceNode;
printForInStatement(statement: lua.ForInStatement): SourceNode;
printGotoStatement(statement: lua.GotoStatement): SourceNode;
printLabelStatement(statement: lua.LabelStatement): SourceNode;
printReturnStatement(statement: lua.ReturnStatement): SourceNode;
printBreakStatement(statement: lua.BreakStatement): SourceNode;
printContinueStatement(statement: lua.ContinueStatement): SourceNode;
printExpressionStatement(statement: lua.ExpressionStatement): SourceNode;
printExpression(expression: lua.Expression): SourceNode;
printStringLiteral(expression: lua.StringLiteral): SourceNode;
printNumericLiteral(expression: lua.NumericLiteral): SourceNode;
printNilLiteral(expression: lua.NilLiteral): SourceNode;
printDotsLiteral(expression: lua.DotsLiteral): SourceNode;
printArgLiteral(expression: lua.ArgLiteral): SourceNode;
printBooleanLiteral(expression: lua.BooleanLiteral): SourceNode;
private printFunctionParameters;
printFunctionExpression(expression: lua.FunctionExpression): SourceNode;
printFunctionDefinition(statement: lua.FunctionDefinition): SourceNode;
printTableFieldExpression(expression: lua.TableFieldExpression): SourceNode;
printTableExpression(expression: lua.TableExpression): SourceNode;
printUnaryExpression(expression: lua.UnaryExpression): SourceNode;
printBinaryExpression(expression: lua.BinaryExpression): SourceNode;
private printExpressionInParenthesesIfNeeded;
private needsParenthesis;
printCallExpression(expression: lua.CallExpression): SourceNode;
printMethodCallExpression(expression: lua.MethodCallExpression): SourceNode;
printIdentifier(expression: lua.Identifier): SourceNode;
printTableIndexExpression(expression: lua.TableIndexExpression): SourceNode;
printParenthesizedExpression(expression: lua.ParenthesizedExpression): SourceNode;
printConditionalExpression(expression: lua.ConditionalExpression): SourceNode;
printOperator(kind: lua.Operator): SourceNode;
protected joinChunksWithComma(chunks: SourceChunk[]): SourceChunk[];
/**
* Returns true if the expression list (table field or parameters) should be printed on one line.
*/
protected isSimpleExpressionList(expressions: lua.Expression[]): boolean;
protected printExpressionList(expressions: lua.Expression[]): SourceChunk[];
private buildSourceMap;
}
export {};