/** * @license * Copyright 2016 Google LLC * SPDX-License-Identifier: Apache-2.0 */ /** * @file Lua code generator class, including helper methods for * generating Lua for blocks. * * Based on Ellen Spertus's blocky-lua project. */ import type { Block } from '../../core/block.js'; import { CodeGenerator } from '../../core/generator.js'; import type { Workspace } from '../../core/workspace.js'; /** * Order of operation ENUMs. * http://www.lua.org/manual/5.3/manual.html#3.4.8 */ export declare enum Order { ATOMIC = 0,// literals HIGH = 1,// Function calls, tables[] EXPONENTIATION = 2,// ^ UNARY = 3,// not # - ~ MULTIPLICATIVE = 4,// * / % ADDITIVE = 5,// + - CONCATENATION = 6,// .. RELATIONAL = 7,// < > <= >= ~= == AND = 8,// and OR = 9,// or NONE = 99 } /** * Lua code generator class. * * Note: Lua is not supporting zero-indexing since the language itself is * one-indexed, so the generator does not repoct the oneBasedIndex configuration * option used for lists and text. */ export declare class LuaGenerator extends CodeGenerator { constructor(name?: string); /** * Initialise the database of variable names. * * @param workspace Workspace to generate code from. */ init(workspace: Workspace): void; /** * Prepend the generated code with the variable definitions. * * @param code Generated code. * @returns Completed code. */ finish(code: string): string; /** * Naked values are top-level blocks with outputs that aren't plugged into * anything. In Lua, an expression is not a legal statement, so we must assign * the value to the (conventionally ignored) _. * http://lua-users.org/wiki/ExpressionsAsStatements * * @param line Line of generated code. * @return Legal line of code. */ scrubNakedValue(line: string): string; /** * Encode a string as a properly escaped Lua string, complete with * quotes. * * @param string Text to encode. * @returns Lua string. */ quote_(string: string): string; /** * Encode a string as a properly escaped multiline Lua string, complete with * quotes. * * @param string Text to encode. * @returns Lua string. */ multiline_quote_(string: string): string; /** * Common tasks for generating Lua from blocks. * Handles comments for the specified block and any connected value blocks. * Calls any statements following this block. * @param block The current block. * @param code The Lua code created for this block. * @param thisOnly True to generate code for only this statement. * @returns Lua code with comments and subsequent blocks added. */ scrub_(block: Block, code: string, thisOnly?: boolean): string; } //# sourceMappingURL=lua_generator.d.ts.map