{"version":3,"file":"index.cjs","sources":["../node_modules/@gobstones/gobstones-parser/dist/index.js","../src/interpreter/instruction.ts","../src/i18n/es.ts","../src/i18n/en.ts","../src/i18n/pt.ts","../src/interpreter/i18n.ts","../src/interpreter/value.ts","../src/interpreter/runtime.ts","../src/interpreter/compiler.ts","../src/interpreter/vm.ts","../src/interpreter/runner.ts"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\n/* A SourceReader represents the current position in a source file.\n * It keeps track of line and column numbers.\n * Methods are non-destructive. For example:\n *\n *     let r = new SourceReader('foo.gbs', 'if\\n(True)');\n *\n *     r.peek();                       // ~~> 'i'\n *     r = r.consumeCharacter();       // Note: returns a new file reader.\n *\n *     r.peek();                       // ~~> 'f'\n *     r = r.consumeCharacter();\n *\n *     r.peek();                       // ~~> '\\n'\n *     r = r.consumeCharacter('\\n');\n *\n *     r.line();                       // ~~> 2\n */\nclass SourceReader {\n    constructor(filename, string) {\n        this._filename = filename; // Filename\n        this._string = string; // Source of the current file\n        this._index = 0; // Index in the current file\n        this._line = 1; // Line in the current file\n        this._column = 1; // Column in the current file\n        this._regions = []; // Lexical (static) stack of regions\n    }\n    _clone() {\n        const r = new SourceReader(this._filename, this._string);\n        r._index = this._index;\n        r._line = this._line;\n        r._column = this._column;\n        r._regions = this._regions;\n        return r;\n    }\n    get filename() {\n        return this._filename;\n    }\n    get line() {\n        return this._line;\n    }\n    get column() {\n        return this._column;\n    }\n    get region() {\n        if (this._regions.length > 0) {\n            return this._regions[0];\n        }\n        else {\n            return '';\n        }\n    }\n    /* Consume one character */\n    consumeCharacter() {\n        const r = this._clone();\n        if (r.peek() === '\\n') {\n            r._line++;\n            r._column = 1;\n        }\n        else {\n            r._column++;\n        }\n        r._index++;\n        return r;\n    }\n    /* Consume characters from the input, one per each character in the string\n     * (the contents of the string are ignored). */\n    consumeString(string) {\n        let r = this._clone();\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        for (const _ of string) {\n            r = r.consumeCharacter();\n        }\n        return r;\n    }\n    /* Returns the SourceReader after consuming an 'invisible' character.\n     * Invisible characters affect the index but not the line or column.\n     */\n    consumeInvisibleCharacter() {\n        const r = this._clone();\n        r._index++;\n        return r;\n    }\n    /* Consume 'invisible' characters from the input, one per each character\n     * in the string */\n    consumeInvisibleString(string) {\n        // eslint-disable-next-line @typescript-eslint/no-this-alias\n        let r = this;\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        for (const _ of string) {\n            r = r.consumeInvisibleCharacter();\n        }\n        return r;\n    }\n    /* Return true if the substring occurs at the current point. */\n    startsWith(sub) {\n        const i = this._index;\n        const j = this._index + sub.length;\n        return j <= this._string.length && this._string.substring(i, j) === sub;\n    }\n    /* Return true if we have reached the end of the current file */\n    eof() {\n        return this._index >= this._string.length;\n    }\n    /* Return the current character, assuming we have not reached EOF */\n    peek() {\n        return this._string[this._index];\n    }\n    /* Push a region to the stack of regions (non-destructively) */\n    beginRegion(region) {\n        const r = this._clone();\n        r._regions = [region].concat(r._regions);\n        return r;\n    }\n    /* Pop a region from the stack of regions (non-destructively) */\n    endRegion() {\n        const r = this._clone();\n        if (r._regions.length > 0) {\n            r._regions = r._regions.slice(1);\n        }\n        return r;\n    }\n}\n/* Return a source reader that represents an unknown position */\nconst UnknownPosition = new SourceReader('(?)', '');\n/* An instance of MultifileReader represents a scanner for reading\n * source code from a list of files.\n */\nclass MultifileReader {\n    /* The 'input' parameter should be either:\n     * (1) a string. e.g.  'program {}', or\n     * (2) a map from filenames to strings, e.g.\n     *     {\n     *       'foo.gbs': 'program { P() }',\n     *       'bar.gbs': 'procedure P() {}',\n     *     }\n     */\n    constructor(input) {\n        if (typeof input === 'string') {\n            input = { '(?)': input };\n        }\n        this._filenames = Object.keys(input);\n        this._filenames.sort();\n        this._input = input;\n        this._index = 0;\n    }\n    /* Return true if there are more files */\n    moreFiles() {\n        return this._index + 1 < this._filenames.length;\n    }\n    /* Advance to the next file */\n    nextFile() {\n        this._index++;\n    }\n    /* Return a SourceReader for the current files */\n    readCurrentFile() {\n        if (this._index < this._filenames.length) {\n            const filename = this._filenames[this._index];\n            return new SourceReader(filename, this._input[filename]);\n        }\n        else {\n            return new SourceReader('(?)', '');\n        }\n    }\n}\n\n/* Token tags are constant symbols */\nconst T_EOF = Symbol.for('T_EOF'); // End of file\nconst T_NUM = Symbol.for('T_NUM'); // Number\nconst T_STRING = Symbol.for('T_STRING'); // String constant\nconst T_UPPERID = Symbol.for('T_UPPERID'); // Uppercase identifier\nconst T_LOWERID = Symbol.for('T_LOWERID'); // Lowercase identifier\n/* Keywords */\nconst T_PROGRAM = Symbol.for('T_PROGRAM');\nconst T_INTERACTIVE = Symbol.for('T_INTERACTIVE');\nconst T_PROCEDURE = Symbol.for('T_PROCEDURE');\nconst T_FUNCTION = Symbol.for('T_FUNCTION');\nconst T_RETURN = Symbol.for('T_RETURN');\nconst T_IF = Symbol.for('T_IF');\nconst T_THEN = Symbol.for('T_THEN');\nconst T_ELSEIF = Symbol.for('T_ELSEIF');\nconst T_ELSE = Symbol.for('T_ELSE');\nconst T_CHOOSE = Symbol.for('T_CHOOSE');\nconst T_WHEN = Symbol.for('T_WHEN');\nconst T_OTHERWISE = Symbol.for('T_OTHERWISE');\nconst T_MATCHING = Symbol.for('T_MATCHING');\nconst T_SELECT = Symbol.for('T_SELECT');\nconst T_ON = Symbol.for('T_ON');\nconst T_REPEAT = Symbol.for('T_REPEAT');\nconst T_FOREACH = Symbol.for('T_FOREACH');\nconst T_IN = Symbol.for('T_IN');\nconst T_WHILE = Symbol.for('T_WHILE');\nconst T_SWITCH = Symbol.for('T_SWITCH');\nconst T_TO = Symbol.for('T_TO');\nconst T_LET = Symbol.for('T_LET');\nconst T_NOT = Symbol.for('T_NOT');\nconst T_DIV = Symbol.for('T_DIV');\nconst T_MOD = Symbol.for('T_MOD');\nconst T_TYPE = Symbol.for('T_TYPE');\nconst T_IS = Symbol.for('T_IS');\nconst T_RECORD = Symbol.for('T_RECORD');\nconst T_VARIANT = Symbol.for('T_VARIANT');\nconst T_CASE = Symbol.for('T_CASE');\nconst T_FIELD = Symbol.for('T_FIELD');\nconst T_UNDERSCORE = Symbol.for('T_UNDERSCORE');\nconst T_TIMEOUT = Symbol.for('T_TIMEOUT');\n/* Symbols */\nconst T_LPAREN = Symbol.for('T_LPAREN');\nconst T_RPAREN = Symbol.for('T_RPAREN');\nconst T_LBRACE = Symbol.for('T_LBRACE');\nconst T_RBRACE = Symbol.for('T_RBRACE');\nconst T_LBRACK = Symbol.for('T_LBRACK');\nconst T_RBRACK = Symbol.for('T_RBRACK');\nconst T_COMMA = Symbol.for('T_COMMA');\nconst T_SEMICOLON = Symbol.for('T_SEMICOLON');\nconst T_ELLIPSIS = Symbol.for('T_ELLIPSIS');\nconst T_RANGE = Symbol.for('T_RANGE');\nconst T_GETS = Symbol.for('T_GETS');\nconst T_PIPE = Symbol.for('T_PIPE');\nconst T_ARROW = Symbol.for('T_ARROW');\nconst T_ASSIGN = Symbol.for('T_ASSIGN');\nconst T_EQ = Symbol.for('T_EQ');\nconst T_NE = Symbol.for('T_NE');\nconst T_LE = Symbol.for('T_LE');\nconst T_GE = Symbol.for('T_GE');\nconst T_LT = Symbol.for('T_LT');\nconst T_GT = Symbol.for('T_GT');\nconst T_AND = Symbol.for('T_AND');\nconst T_OR = Symbol.for('T_OR');\nconst T_CONCAT = Symbol.for('T_CONCAT');\nconst T_PLUS = Symbol.for('T_PLUS');\nconst T_MINUS = Symbol.for('T_MINUS');\nconst T_TIMES = Symbol.for('T_TIMES');\nconst T_POW = Symbol.for('T_POW');\n/* A token is given by:\n * - A token tag (e.g. T_LOWERID, T_NUM).\n * - Possibly, a value (e.g. 'nroBolitas', 8).\n *   When the value is irrelevant, we provide null by convention.\n * - Two positions, representing its location in the source. */\nclass Token {\n    constructor(tag, value, startPos, endPos) {\n        this._tag = tag;\n        this._value = value;\n        this._startPos = startPos;\n        this._endPos = endPos;\n    }\n    toString() {\n        const _tag = this._tag;\n        const tag = typeof _tag === 'symbol' ? Symbol.keyFor(_tag).substring(2) : _tag;\n        switch (tag) {\n            case 'NUM':\n            case 'STRING':\n            case 'UPPERID':\n            case 'LOWERID':\n                return tag + '(\"' + this._value.toString() + '\")';\n            default:\n                return tag;\n        }\n    }\n    get tag() {\n        return this._tag;\n    }\n    get value() {\n        return this._value;\n    }\n    get startPos() {\n        return this._startPos;\n    }\n    get endPos() {\n        return this._endPos;\n    }\n}\n\n/* eslint-disable camelcase */\nconst N_Main = Symbol.for('N_Main');\n/* Definitions */\nconst N_DefProgram = Symbol.for('N_DefProgram');\nconst N_DefInteractiveProgram = Symbol.for('N_DefInteractiveProgram');\nconst N_DefProcedure = Symbol.for('N_DefProcedure');\nconst N_DefFunction = Symbol.for('N_DefFunction');\nconst N_DefType = Symbol.for('N_DefType');\n/* Statements */\nconst N_StmtBlock = Symbol.for('N_StmtBlock');\nconst N_StmtReturn = Symbol.for('N_StmtReturn');\nconst N_StmtIf = Symbol.for('N_StmtIf');\nconst N_StmtRepeat = Symbol.for('N_StmtRepeat');\nconst N_StmtForeach = Symbol.for('N_StmtForeach');\nconst N_StmtWhile = Symbol.for('N_StmtWhile');\nconst N_StmtSwitch = Symbol.for('N_StmtSwitch');\nconst N_StmtAssignVariable = Symbol.for('N_StmtAssignVariable');\nconst N_StmtAssignTuple = Symbol.for('N_StmtAssignTuple');\nconst N_StmtProcedureCall = Symbol.for('N_StmtProcedureCall');\n/* Patterns */\nconst N_PatternWildcard = Symbol.for('N_PatternWildcard');\nconst N_PatternVariable = Symbol.for('N_PatternVariable');\nconst N_PatternNumber = Symbol.for('N_PatternNumber');\nconst N_PatternStructure = Symbol.for('N_PatternStructure');\nconst N_PatternTuple = Symbol.for('N_PatternTuple');\nconst N_PatternTimeout = Symbol.for('N_PatternTimeout');\n/* Expressions */\nconst N_ExprVariable = Symbol.for('N_ExprVariable');\nconst N_ExprConstantNumber = Symbol.for('N_ExprConstantNumber');\nconst N_ExprConstantString = Symbol.for('N_ExprConstantString');\nconst N_ExprChoose = Symbol.for('N_ExprChoose');\nconst N_ExprMatching = Symbol.for('N_ExprMatching');\nconst N_ExprList = Symbol.for('N_ExprList');\nconst N_ExprRange = Symbol.for('N_ExprRange');\nconst N_ExprTuple = Symbol.for('N_ExprTuple');\nconst N_ExprStructure = Symbol.for('N_ExprStructure');\nconst N_ExprStructureUpdate = Symbol.for('N_ExprStructureUpdate');\nconst N_ExprFunctionCall = Symbol.for('N_ExprFunctionCall');\n/* SwitchBranch: pattern -> body */\nconst N_SwitchBranch = Symbol.for('N_SwitchBranch');\n/* MatchingBranch: pattern -> body */\nconst N_MatchingBranch = Symbol.for('N_MatchingBranch');\n/* FieldBinding: fieldName <- value */\nconst N_FieldBinding = Symbol.for('N_FieldBinding');\n/* ConstructorDeclaration */\nconst N_ConstructorDeclaration = Symbol.for('N_ConstructorDeclaration');\n/* Helper functions for the ASTNode toString method */\nfunction indent(string) {\n    const lines = [];\n    for (const line of string.split('\\n')) {\n        lines.push('  ' + line);\n    }\n    return lines.join('\\n');\n}\nfunction showAST(node) {\n    if (node === undefined) {\n        return 'null';\n    }\n    else if (node instanceof Array) {\n        return '[\\n' + showASTs(node).join(',\\n') + '\\n]';\n    }\n    else if (node instanceof Token) {\n        return node.toString();\n    }\n    const tag = Symbol.keyFor(node.tag).substring(2);\n    return tag + '(\\n' + showASTs(node.children).join(',\\n') + '\\n)';\n}\nfunction showASTs(nodes) {\n    const res = [];\n    for (const node of nodes) {\n        res.push(indent(showAST(node)));\n    }\n    return res;\n}\n/** An instance of ASTNode represents a node of the abstract syntax tree.\n * - tag should be a node tag symbol.\n * - children should be (recursively) a possibly empty array of ASTNode's.\n * - startPos and endPos represent the starting and ending\n *   position of the code fragment in the source code, to aid error\n *   reporting.\n **/\nclass ASTNode {\n    constructor(tag, children) {\n        this._tag = tag;\n        this._children = children;\n        this._startPos = UnknownPosition;\n        this._endPos = UnknownPosition;\n        this._attributes = {};\n        /* Assert this invariant to protect against common mistakes. */\n        if (!(children instanceof Array)) {\n            throw Error('The children of an ASTNode should be an array.');\n        }\n    }\n    toMulangLike() {\n        return {\n            tag: this._tag.toString().replace(/(^Symbol\\(|\\)$)/g, ''),\n            contents: this._children.map((node) => {\n                if (node === undefined) {\n                    return 'null';\n                }\n                else if (node instanceof Array) {\n                    return new ASTNode(Symbol('?'), node).toMulangLike().contents;\n                }\n                else if (node instanceof ASTNode) {\n                    return node.toMulangLike();\n                }\n                else if (node instanceof Token) {\n                    return node.toString();\n                }\n                else {\n                    return '?';\n                }\n            })\n        };\n    }\n    toString() {\n        return showAST(this);\n    }\n    get tag() {\n        return this._tag;\n    }\n    get children() {\n        return this._children;\n    }\n    set startPos(position) {\n        this._startPos = position;\n    }\n    get startPos() {\n        return this._startPos;\n    }\n    set endPos(position) {\n        this._endPos = position;\n    }\n    get endPos() {\n        return this._endPos;\n    }\n    get attributes() {\n        return this._attributes;\n    }\n    set attributes(attributes) {\n        this._attributes = attributes;\n    }\n}\n/* Main */\nclass ASTMain extends ASTNode {\n    constructor(definitions) {\n        super(N_Main, definitions);\n    }\n    get definitions() {\n        return this.children;\n    }\n}\n/* Definitions */\nclass ASTDefProgram extends ASTNode {\n    constructor(body) {\n        super(N_DefProgram, [body]);\n    }\n    get body() {\n        return this.children[0];\n    }\n}\nclass ASTNodeWithBranches extends ASTNode {\n    get branches() {\n        return this.children;\n    }\n}\nclass ASTDefInteractiveProgram extends ASTNodeWithBranches {\n    constructor(branches) {\n        super(N_DefInteractiveProgram, branches);\n    }\n    get branches() {\n        return this.children;\n    }\n}\nclass ASTDefProcedure extends ASTNode {\n    constructor(name, parameters, body) {\n        super(N_DefProcedure, [name, parameters, body]);\n    }\n    get name() {\n        return this.children[0];\n    }\n    get parameters() {\n        return this.children[1];\n    }\n    get body() {\n        return this.children[2];\n    }\n}\nclass ASTDefFunction extends ASTNode {\n    constructor(name, parameters, body) {\n        super(N_DefFunction, [name, parameters, body]);\n    }\n    get name() {\n        return this.children[0];\n    }\n    get parameters() {\n        return this.children[1];\n    }\n    get body() {\n        return this.children[2];\n    }\n}\nclass ASTDefType extends ASTNode {\n    constructor(typeName, constructorDeclarations) {\n        super(N_DefType, [typeName, constructorDeclarations]);\n    }\n    get typeName() {\n        return this.children[0];\n    }\n    get constructorDeclarations() {\n        return this.children[1];\n    }\n}\n/* Statements */\nclass ASTStmtBlock extends ASTNode {\n    constructor(statements) {\n        super(N_StmtBlock, statements);\n    }\n    get statements() {\n        return this.children;\n    }\n}\nclass ASTStmtReturn extends ASTNode {\n    constructor(result) {\n        super(N_StmtReturn, [result]);\n    }\n    get result() {\n        return this.children[0];\n    }\n}\nclass ASTStmtIf extends ASTNode {\n    // Note: elseBlock may be null\n    constructor(condition, thenBlock, elseBlock) {\n        super(N_StmtIf, [condition, thenBlock, elseBlock]);\n    }\n    get condition() {\n        return this.children[0];\n    }\n    get thenBlock() {\n        return this.children[1];\n    }\n    get elseBlock() {\n        return this.children[2];\n    }\n}\nclass ASTStmtRepeat extends ASTNode {\n    constructor(times, body) {\n        super(N_StmtRepeat, [times, body]);\n    }\n    get times() {\n        return this.children[0];\n    }\n    get body() {\n        return this.children[1];\n    }\n}\nclass ASTNodeWithPattern extends ASTNode {\n    get pattern() {\n        return this.children[0];\n    }\n}\nclass ASTStmtForeach extends ASTNodeWithPattern {\n    constructor(pattern, range, body) {\n        super(N_StmtForeach, [pattern, range, body]);\n    }\n    get pattern() {\n        return this.children[0];\n    }\n    get range() {\n        return this.children[1];\n    }\n    get body() {\n        return this.children[2];\n    }\n}\nclass ASTStmtWhile extends ASTNode {\n    constructor(condition, body) {\n        super(N_StmtWhile, [condition, body]);\n    }\n    get condition() {\n        return this.children[0];\n    }\n    get body() {\n        return this.children[1];\n    }\n}\nclass ASTStmtSwitch extends ASTNodeWithBranches {\n    constructor(subject, branches) {\n        super(N_StmtSwitch, [subject, branches]);\n    }\n    get subject() {\n        return this.children[0];\n    }\n    get branches() {\n        return this.children[1];\n    }\n}\nclass ASTSwitchBranch extends ASTNodeWithPattern {\n    constructor(pattern, body) {\n        super(N_SwitchBranch, [pattern, body]);\n    }\n    get pattern() {\n        return this.children[0];\n    }\n    get body() {\n        return this.children[1];\n    }\n}\nclass ASTMatchingBranch extends ASTNodeWithPattern {\n    constructor(pattern, body) {\n        super(N_MatchingBranch, [pattern, body]);\n    }\n    get pattern() {\n        return this.children[0];\n    }\n    get body() {\n        return this.children[1];\n    }\n}\nclass ASTStmtAssignVariable extends ASTNode {\n    constructor(variable, value) {\n        super(N_StmtAssignVariable, [variable, value]);\n    }\n    get variable() {\n        return this.children[0];\n    }\n    get value() {\n        return this.children[1];\n    }\n}\nclass ASTStmtAssignTuple extends ASTNode {\n    constructor(variables, value) {\n        super(N_StmtAssignTuple, [variables, value]);\n    }\n    get variables() {\n        return this.children[0];\n    }\n    get value() {\n        return this.children[1];\n    }\n}\nclass ASTStmtProcedureCall extends ASTNode {\n    constructor(procedureName, args) {\n        super(N_StmtProcedureCall, [procedureName, args]);\n    }\n    get procedureName() {\n        return this.children[0];\n    }\n    get args() {\n        return this.children[1];\n    }\n}\nclass ASTPatternWildcard extends ASTNode {\n    constructor(statement) {\n        super(N_PatternWildcard, []);\n    }\n    get boundVariables() {\n        return [];\n    }\n}\nclass ASTPatternVariable extends ASTNode {\n    constructor(variableName) {\n        super(N_PatternVariable, [variableName]);\n    }\n    get variableName() {\n        return this.children[0];\n    }\n    get boundVariables() {\n        return [this.children[0]];\n    }\n}\nclass ASTPatternNumber extends ASTNode {\n    constructor(number) {\n        super(N_PatternNumber, [number]);\n    }\n    get number() {\n        return this.children[0];\n    }\n    get boundVariables() {\n        return [];\n    }\n}\nclass ASTPatternStructure extends ASTNode {\n    constructor(constructorName, parameters) {\n        super(N_PatternStructure, [constructorName, parameters]);\n    }\n    get constructorName() {\n        return this.children[0];\n    }\n    get boundVariables() {\n        return this.children[1];\n    }\n}\nclass ASTPatternTuple extends ASTNode {\n    constructor(parameters) {\n        super(N_PatternTuple, parameters);\n    }\n    get boundVariables() {\n        return this.children;\n    }\n}\nclass ASTPatternTimeout extends ASTNode {\n    constructor(timeout) {\n        super(N_PatternTimeout, [timeout]);\n    }\n    get boundVariables() {\n        return [];\n    }\n    get timeout() {\n        return parseInt(this.children[0].value, 10);\n    }\n}\nclass ASTExprVariable extends ASTNode {\n    constructor(variableName) {\n        super(N_ExprVariable, [variableName]);\n    }\n    get variableName() {\n        return this.children[0];\n    }\n}\nclass ASTExprConstantNumber extends ASTNode {\n    constructor(number) {\n        super(N_ExprConstantNumber, [number]);\n    }\n    get number() {\n        return this.children[0];\n    }\n}\nclass ASTExprConstantString extends ASTNode {\n    constructor(string) {\n        super(N_ExprConstantString, [string]);\n    }\n    get string() {\n        return this.children[0];\n    }\n}\nclass ASTExprChoose extends ASTNode {\n    constructor(condition, trueExpr, falseExpr) {\n        super(N_ExprChoose, [condition, trueExpr, falseExpr]);\n    }\n    get condition() {\n        return this.children[0];\n    }\n    get trueExpr() {\n        return this.children[1];\n    }\n    get falseExpr() {\n        return this.children[2];\n    }\n}\nclass ASTExprMatching extends ASTNodeWithBranches {\n    constructor(subject, branches) {\n        super(N_ExprMatching, [subject, branches]);\n    }\n    get subject() {\n        return this.children[0];\n    }\n    get branches() {\n        return this.children[1];\n    }\n}\nclass ASTExprList extends ASTNode {\n    constructor(elements) {\n        super(N_ExprList, elements);\n    }\n    get elements() {\n        return this.children;\n    }\n}\nclass ASTExprRange extends ASTNode {\n    // Note: second may be null\n    constructor(first, second, last) {\n        super(N_ExprRange, [first, second, last]);\n    }\n    get first() {\n        return this.children[0];\n    }\n    get second() {\n        return this.children[1];\n    }\n    get last() {\n        return this.children[2];\n    }\n}\nclass ASTExprTuple extends ASTNode {\n    constructor(elements) {\n        super(N_ExprTuple, elements);\n    }\n    get elements() {\n        return this.children;\n    }\n}\nclass ASTExprStructure extends ASTNode {\n    constructor(constructorName, fieldBindings) {\n        super(N_ExprStructure, [constructorName, fieldBindings]);\n    }\n    get constructorName() {\n        return this.children[0];\n    }\n    get fieldBindings() {\n        return this.children[1];\n    }\n    fieldNames() {\n        const names = [];\n        for (const fieldBinding of this.fieldBindings) {\n            names.push(fieldBinding.fieldName.value);\n        }\n        return names;\n    }\n}\nclass ASTExprStructureUpdate extends ASTNode {\n    constructor(constructorName, original, fieldBindings) {\n        super(N_ExprStructureUpdate, [constructorName, original, fieldBindings]);\n    }\n    get constructorName() {\n        return this.children[0];\n    }\n    get original() {\n        return this.children[1];\n    }\n    get fieldBindings() {\n        return this.children[2];\n    }\n    fieldNames() {\n        const names = [];\n        for (const fieldBinding of this.fieldBindings) {\n            names.push(fieldBinding.fieldName.value);\n        }\n        return names;\n    }\n}\nclass ASTExprFunctionCall extends ASTNode {\n    constructor(functionName, args) {\n        super(N_ExprFunctionCall, [functionName, args]);\n    }\n    get functionName() {\n        return this.children[0];\n    }\n    get args() {\n        return this.children[1];\n    }\n}\nclass ASTFieldBinding extends ASTNode {\n    constructor(fieldName, value) {\n        super(N_FieldBinding, [fieldName, value]);\n    }\n    get fieldName() {\n        return this.children[0];\n    }\n    get value() {\n        return this.children[1];\n    }\n}\nclass ASTConstructorDeclaration extends ASTNode {\n    constructor(constructorName, fieldNames) {\n        super(N_ConstructorDeclaration, [constructorName, fieldNames]);\n    }\n    get constructorName() {\n        return this.children[0];\n    }\n    get fieldNames() {\n        return this.children[1];\n    }\n}\n\n/* eslint-disable camelcase */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable quote-props */\n/* istanbul ignore file */\nconst keyword$1 = (palabra) => 'la palabra clave \"' + palabra + '\"';\nfunction pluralize$1(n, singular, plural) {\n    if (n === 0) {\n        return 'ningún ' + singular;\n    }\n    else if (n === 1) {\n        return 'un ' + singular;\n    }\n    else {\n        return n.toString() + ' ' + plural;\n    }\n}\n// Only for typing purposes\n// eslint-disable-next-line @typescript-eslint/ban-types\nconst toFunc$2 = (x) => x;\nfunction ordinalNumber(n) {\n    const units = [\n        '',\n        'primer',\n        'segundo',\n        'tercer',\n        'cuarto',\n        'quinto',\n        'sexto',\n        'séptimo',\n        'octavo',\n        'noveno'\n    ];\n    if (n >= 1 && n <= 9) {\n        return units[n];\n    }\n    else {\n        return '#' + n.toString();\n    }\n}\nfunction describeType(type) {\n    if (type.isInteger()) {\n        return ['m', 'número', 'números'];\n    }\n    else if (type.isBoolean()) {\n        return ['m', 'booleano', 'booleanos'];\n    }\n    else if (type.isColor()) {\n        return ['m', 'color', 'colores'];\n    }\n    else if (type.isDirection()) {\n        return ['f', 'dirección', 'direcciones'];\n    }\n    else if (type.isList() && type.contentType.isAny()) {\n        return ['f', 'lista', 'listas'];\n    }\n    else if (type.isList()) {\n        const description = describeType(type.contentType);\n        if (description === undefined) {\n            return undefined;\n        }\n        else {\n            const plural = description[2];\n            return ['f', 'lista de ' + plural, 'listas de ' + plural];\n        }\n    }\n    else {\n        return undefined;\n    }\n}\nfunction describeTypeSingular(type) {\n    const description = describeType(type);\n    if (description === undefined) {\n        return type.toString();\n    }\n    else {\n        const singular = description[1];\n        return singular;\n    }\n}\nfunction typeAsNoun(type) {\n    const description = describeType(type);\n    if (description === undefined) {\n        return 'un valor de tipo ' + type.toString();\n    }\n    else {\n        const gender = description[0];\n        const singular = description[1];\n        if (gender === 'm') {\n            return 'un ' + singular;\n        }\n        else {\n            return 'una ' + singular;\n        }\n    }\n}\nfunction typeAsQualifierSingular(type) {\n    const description = describeType(type);\n    if (description === undefined) {\n        return 'de tipo ' + type.toString();\n    }\n    else {\n        const gender = description[0];\n        const singular = description[1];\n        if (gender === 'm') {\n            return 'un ' + singular;\n        }\n        else {\n            return 'una ' + singular;\n        }\n    }\n}\nfunction typeAsQualifierPlural(type) {\n    const description = describeType(type);\n    if (description === undefined) {\n        return 'de tipo ' + type.toString();\n    }\n    else {\n        const gender = description[0];\n        const plural = description[2];\n        if (gender === 'm') {\n            return plural;\n        }\n        else {\n            return plural;\n        }\n    }\n}\nfunction listOfTypes(types) {\n    const typeStrings = [];\n    for (const type of types) {\n        typeStrings.push(describeTypeSingular(type));\n    }\n    return typeStrings.join(', ');\n}\nfunction openingDelimiterName(delimiter) {\n    if (delimiter === '(' || delimiter === ')') {\n        return 'un paréntesis abierto \"(\"';\n    }\n    else if (delimiter === '[' || delimiter === ']') {\n        return 'un corchete abierto \"[\"';\n    }\n    else if (delimiter === '{' || delimiter === '}') {\n        return 'una llave abierta \"{\"';\n    }\n    else {\n        return delimiter;\n    }\n}\nfunction formatTypes(string, type1, type2) {\n    let result = '';\n    for (let i = 0; i < string.length; i++) {\n        if (string[i] === '%' && i + 1 < string.length) {\n            if (string[i + 1] === '%') {\n                result += '%';\n                i++;\n            }\n            else if (string[i + 1] === '1') {\n                result += typeAsNoun(type1);\n                i++;\n            }\n            else if (string[i + 1] === '2') {\n                result += typeAsNoun(type2);\n                i++;\n            }\n            else {\n                result += '%';\n            }\n        }\n        else {\n            result += string[i];\n        }\n    }\n    return result;\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nconst LOCALE_ES = {\n    /* Descriptions of syntactic constructions and tokens */\n    definition: 'una definición (de programa, función, procedimiento, o tipo)',\n    pattern: 'un patrón (comodín \"_\", constructor aplicado a variables, o tupla)',\n    statement: 'un comando',\n    expression: 'una expresión',\n    'procedure call': 'una invocación a un procedimiento',\n    'field name': 'el nombre de un campo',\n    T_EOF: 'el final del archivo',\n    T_NUM: 'un número',\n    T_STRING: 'una cadena (string)',\n    T_UPPERID: 'un identificador con mayúsculas',\n    T_LOWERID: 'un identificador con minúsculas',\n    T_PROGRAM: keyword$1('program'),\n    T_INTERACTIVE: keyword$1('interactive'),\n    T_PROCEDURE: keyword$1('procedure'),\n    T_FUNCTION: keyword$1('function'),\n    T_RETURN: keyword$1('return'),\n    T_IF: keyword$1('if'),\n    T_THEN: keyword$1('then'),\n    T_ELSE: keyword$1('else'),\n    T_REPEAT: keyword$1('repeat'),\n    T_FOREACH: keyword$1('foreach'),\n    T_IN: keyword$1('in'),\n    T_WHILE: keyword$1('while'),\n    T_SWITCH: keyword$1('switch'),\n    T_TO: keyword$1('to'),\n    T_LET: keyword$1('let'),\n    T_NOT: keyword$1('not'),\n    T_DIV: keyword$1('div'),\n    T_MOD: keyword$1('mod'),\n    T_TYPE: keyword$1('type'),\n    T_IS: keyword$1('is'),\n    T_CHOOSE: keyword$1('choose'),\n    T_WHEN: keyword$1('when'),\n    T_OTHERWISE: keyword$1('otherwise'),\n    T_MATCHING: keyword$1('matching'),\n    T_SELECT: keyword$1('select'),\n    T_ON: keyword$1('on'),\n    T_RECORD: keyword$1('record'),\n    T_VARIANT: keyword$1('variant'),\n    T_CASE: keyword$1('case'),\n    T_FIELD: keyword$1('field'),\n    T_UNDERSCORE: 'un guión bajo (\"_\")',\n    T_LPAREN: 'un paréntesis izquierdo (\"(\")',\n    T_RPAREN: 'un paréntesis derecho (\")\")',\n    T_LBRACE: 'una llave izquierda (\"{\")',\n    T_RBRACE: 'una llave derecha (\"}\")',\n    T_LBRACK: 'un corchete izquierdo (\"[\")',\n    T_RBRACK: 'un corchete derecho (\"]\")',\n    T_COMMA: 'una coma (\",\")',\n    T_SEMICOLON: 'un punto y coma (\";\")',\n    T_RANGE: 'un separador de rango (\"..\")',\n    T_GETS: 'una flecha hacia la izquierda (\"<-\")',\n    T_PIPE: 'una barra vertical (\"|\")',\n    T_ARROW: 'una flecha (\"->\")',\n    T_ASSIGN: 'un operador de asignación (\":=\")',\n    T_EQ: 'una comparación por igualdad (\"==\")',\n    T_NE: 'una comparación por desigualdad (\"/=\")',\n    T_LE: 'un menor o igual (\"<=\")',\n    T_GE: 'un mayor o igual (\">=\")',\n    T_LT: 'un menor estricto (\"<\")',\n    T_GT: 'un mayor estricto (\">\")',\n    T_AND: 'el \"y\" lógico (\"&&\")',\n    T_OR: 'el \"o\" lógico (\"||\")',\n    T_CONCAT: 'el operador de concatenación de listas (\"++\")',\n    T_PLUS: 'el operador de suma (\"+\")',\n    T_MINUS: 'el operador de resta (\"-\")',\n    T_TIMES: 'el operador de producto (\"*\")',\n    T_POW: 'el operador de potencia (\"^\")',\n    /* Local name categories */\n    LocalVariable: 'variable',\n    LocalIndex: 'índice',\n    LocalParameter: 'parámetro',\n    /* Descriptions of value types */\n    V_Integer: 'un número',\n    V_String: 'una cadena',\n    V_Tuple: 'una tupla',\n    V_List: 'una lista',\n    V_Structure: 'una estructura',\n    /* Lexer */\n    'errmsg:unclosed-multiline-comment': 'El comentario se abre pero nunca se cierra.',\n    'errmsg:unclosed-string-constant': 'La comilla que abre no tiene una comilla que cierra correspondiente.',\n    // eslint-disable-next-line max-len\n    'errmsg:numeric-constant-should-not-have-leading-zeroes': `Las constantes numéricas no se pueden escribir con ceros a la izquierda.`,\n    // eslint-disable-next-line max-len\n    'errmsg:identifier-must-start-with-alphabetic-character': `Los identificadores deben empezar con un caracter alfabético (a...z,A...Z).`,\n    'errmsg:unknown-token': (symbol) => 'Símbolo desconocido en la entrada: \"' + symbol + '\".',\n    'warning:empty-pragma': 'Directiva pragma vacía.',\n    'warning:unknown-pragma': (pragmaName) => 'Directiva pragma desconocida: \"' + pragmaName + '\".',\n    'errmsg:unmatched-opening-delimiter': (delimiter) => 'Se encontró ' + openingDelimiterName(delimiter) + ' pero nunca se cierra.',\n    'errmsg:unmatched-closing-delimiter': (delimiter) => 'Se encontró un \"' +\n        delimiter +\n        '\" ' +\n        'pero no había ' +\n        openingDelimiterName(delimiter) +\n        '.',\n    'errmsg:unknown-language-option': (option) => 'Opción desconocida. \"' + option + '\".',\n    /* Parser */\n    'errmsg:empty-source': 'El programa está vacío.',\n    'errmsg:expected-but-found': (expected, found) => `Se esperaba ${expected}. Se encontró: ${found}.`,\n    'errmsg:pattern-number-cannot-be-negative-zero': 'El patrón numérico no puede ser \"-0\".',\n    'errmsg:return-tuple-cannot-be-empty': 'El return tiene que devolver algo.',\n    'errmsg:pattern-tuple-cannot-be-singleton': 'El patrón para una tupla no puede tener una sola componente. ' +\n        'Las tuplas tienen 0, 2, 3, o más componentes, pero no 1.',\n    'errmsg:assignment-tuple-cannot-be-singleton': 'La asignación a una tupla no puede constar de una sola componente. ' +\n        'Las tuplas tienen 0, 2, 3, o más componentes, pero no 1.',\n    'errmsg:operators-are-not-associative': (op1, op2) => 'La expresión usa ' +\n        op1 +\n        ' y ' +\n        op2 +\n        ', pero estos operadores no se pueden asociar. ' +\n        'Quizás faltan paréntesis.',\n    'errmsg:obsolete-tuple-assignment': 'Se esperaba un comando pero se encontró un paréntesis izquierdo. ' +\n        'Nota: la sintaxis de asignación de tuplas \"(x1, ..., xN) := y\" ' +\n        'está obsoleta. Usar \"let (x1, ..., xN) := y\".',\n    /* Linter */\n    'errmsg:program-already-defined': (pos1, pos2) => 'Ya había un programa definido en ' +\n        pos1 +\n        '.\\n' +\n        'No se puede definir un programa en ' +\n        pos2 +\n        '.',\n    'errmsg:procedure-already-defined': (name, pos1, pos2) => 'El procedimiento \"' +\n        name +\n        '\" está definido dos veces: ' +\n        'en ' +\n        pos1 +\n        ' y en ' +\n        pos2 +\n        '.',\n    'errmsg:function-already-defined': (name, pos1, pos2) => 'La función \"' +\n        name +\n        '\" está definida dos veces: ' +\n        'en ' +\n        pos1 +\n        ' y en ' +\n        pos2 +\n        '.',\n    'errmsg:type-already-defined': (name, pos1, pos2) => `El tipo \"${name}\" está definido dos veces: en ${pos1} y en ${pos2}.`,\n    'errmsg:constructor-already-defined': (name, pos1, pos2) => 'El constructor \"' +\n        name +\n        '\" está definido dos veces: ' +\n        'en ' +\n        pos1 +\n        ' y en ' +\n        pos2 +\n        '.',\n    'errmsg:repeated-field-name': (constructorName, fieldName) => 'El campo \"' +\n        fieldName +\n        '\" no puede estar repetido ' +\n        'para el constructor \"' +\n        constructorName +\n        '\".',\n    'errmsg:function-and-field-cannot-have-the-same-name': (name, posFunction, posField) => 'El nombre \"' +\n        name +\n        '\" se usa ' +\n        'para una función en ' +\n        posFunction +\n        ' y ' +\n        'para un campo en ' +\n        posField +\n        '.',\n    'errmsg:source-should-have-a-program-definition': \n    /* Note: the code may actually be completely empty, but\n     * we avoid this technicality since the message could be\n     * confusing. */\n    'El código debe tener una definición de \"program { ... }\".',\n    'errmsg:procedure-should-not-have-return': (name) => `El procedimiento \"${name}\" no debería tener un comando \"return\".`,\n    'errmsg:function-should-have-return': (name) => 'La función \"' + name + '\" debería tener un comando \"return\".',\n    'errmsg:return-statement-not-allowed-here': 'El comando \"return\" solo puede aparecer como el último comando ' +\n        'de una función o como el último comando del programa.',\n    'errmsg:local-name-conflict': (name, oldCat, oldPos, newCat, newPos) => 'Conflicto de nombres: \"' +\n        name +\n        '\" se usa dos veces: ' +\n        'como ' +\n        oldCat +\n        ' en ' +\n        oldPos +\n        ', y ' +\n        'como ' +\n        newCat +\n        ' en ' +\n        newPos +\n        '.',\n    'errmsg:repeated-variable-in-tuple-assignment': (name) => `La variable \"${name}\" está repetida en la asignación de tuplas.`,\n    'errmsg:constructor-used-as-procedure': (name, type) => 'El procedimiento \"' +\n        name +\n        '\" no está definido. ' +\n        'El nombre \"' +\n        name +\n        '\" es el nombre de un constructor ' +\n        'del tipo \"' +\n        type +\n        '\".',\n    'errmsg:undefined-procedure': (name) => 'El procedimiento \"' + name + '\" no está definido.',\n    'errmsg:undefined-function': (name) => 'La función \"' + name + '\" no está definida.',\n    'errmsg:procedure-arity-mismatch': (name, expected, received) => '\"El procedimiento \"' +\n        name +\n        '\" espera recibir ' +\n        toFunc$2(LOCALE_ES['<n>-parameters'])(expected) +\n        ' pero se lo invoca con ' +\n        toFunc$2(LOCALE_ES['<n>-arguments'])(received) +\n        '.',\n    'errmsg:function-arity-mismatch': (name, expected, received) => 'La función \"' +\n        name +\n        '\" espera recibir ' +\n        toFunc$2(LOCALE_ES['<n>-parameters'])(expected) +\n        ' pero se la invoca con ' +\n        toFunc$2(LOCALE_ES['<n>-arguments'])(received) +\n        '.',\n    'errmsg:structure-pattern-arity-mismatch': (name, expected, received) => 'El constructor \"' +\n        name +\n        '\" tiene ' +\n        toFunc$2(LOCALE_ES['<n>-fields'])(expected) +\n        ' pero el patrón tiene ' +\n        toFunc$2(LOCALE_ES['<n>-parameters'])(received) +\n        '.',\n    'errmsg:type-used-as-constructor'(name, constructorNames) {\n        let msg;\n        if (constructorNames.length === 0) {\n            msg = '(no tiene constructores).';\n        }\n        else if (constructorNames.length === 1) {\n            msg = '(tiene un constructor: ' + constructorNames[0] + ').';\n        }\n        else {\n            msg = '(sus constructores son: ' + constructorNames.join(', ') + ').';\n        }\n        return ('El constructor \"' +\n            name +\n            '\" no está definido. ' +\n            'El nombre \"' +\n            name +\n            '\" es el nombre de un tipo ' +\n            msg);\n    },\n    'errmsg:procedure-used-as-constructor': (name) => 'El constructor \"' +\n        name +\n        '\" no está definido. ' +\n        'El nombre \"' +\n        name +\n        '\" es el nombre de un procedimiento.',\n    'errmsg:undeclared-constructor': (name) => 'El constructor \"' + name + '\" no está definido.',\n    'errmsg:wildcard-pattern-should-be-last': 'El comodín \"_\" debe estar en la última rama.',\n    'errmsg:variable-pattern-should-be-last': (name) => 'El patrón variable \"' + name + '\" tiene debe estar en la última rama.',\n    'errmsg:numeric-pattern-repeats-number': (number) => 'Hay dos ramas distintas para el número \"' + number + '\".',\n    'errmsg:structure-pattern-repeats-constructor': (name) => 'Hay dos ramas distintas para el constructor \"' + name + '\".',\n    'errmsg:structure-pattern-repeats-tuple-arity': (arity) => 'Hay dos ramas distintas para las tuplas de ' + arity.toString() + ' componentes.',\n    'errmsg:structure-pattern-repeats-timeout': 'Hay dos ramas distintas para el TIMEOUT.',\n    'errmsg:pattern-does-not-match-type': (expectedType, patternType) => 'Los patrones tienen que ser todos del mismo tipo. ' +\n        'El patrón debería ser de tipo ' +\n        expectedType +\n        'pero es de tipo ' +\n        patternType +\n        '.',\n    'errmsg:patterns-in-interactive-program-must-be-events': 'Los patrones de un \"interactive program\" deben ser eventos.',\n    'errmsg:patterns-in-interactive-program-cannot-be-variables': 'El patrón no puede ser una variable.',\n    'errmsg:patterns-in-switch-must-not-be-events': 'El patrón no puede ser un evento.',\n    'errmsg:structure-construction-repeated-field': (constructorName, fieldName) => 'El campo \"' +\n        fieldName +\n        '\" está repetido en ' +\n        'la instanciación del constructor \"' +\n        constructorName +\n        '\".',\n    'errmsg:structure-construction-invalid-field': (constructorName, fieldName) => 'El campo \"' +\n        fieldName +\n        '\" no es un campo válido ' +\n        'para el constructor \"' +\n        constructorName +\n        '\".',\n    'errmsg:structure-construction-missing-field': (constructorName, fieldName) => 'Falta darle valor al campo \"' +\n        fieldName +\n        '\" ' +\n        'del constructor \"' +\n        constructorName +\n        '\".',\n    'errmsg:structure-construction-cannot-be-an-event': (constructorName) => 'El constructor \"' +\n        constructorName +\n        '\" corresponde a un ' +\n        'evento, y solamente se puede manejar implícitamente ' +\n        'en un programa interactivo (el usuario no puede construir ' +\n        'instancias).',\n    'errmsg:forbidden-extension-destructuring-foreach': 'El índice de la repetición indexada debe ser un identificador.',\n    ['errmsg:forbidden-extension-allow-recursion']: (cycle) => {\n        const msg = [];\n        for (const call of cycle) {\n            msg.push('  ' +\n                call.caller +\n                ' llama a ' +\n                call.callee +\n                ' (' +\n                call.location.startPos.filename.toString() +\n                ':' +\n                call.location.startPos.line.toString() +\n                ':' +\n                call.location.startPos.column.toString() +\n                ')');\n        }\n        return ('La recursión está deshabilitada. ' +\n            'Hay un ciclo en las invocaciones:\\n' +\n            msg.join('\\n'));\n    },\n    'errmsg:patterns-in-foreach-must-not-be-events': 'El patrón de un foreach no puede ser un evento.',\n    /* Runtime errors (virtual machine) */\n    'errmsg:ellipsis': 'El programa todavía no está completo.',\n    'errmsg:undefined-variable': (variableName) => 'La variable \"' + variableName + '\" no está definida.',\n    'errmsg:too-few-arguments': (routineName) => 'Faltan argumentos para \"' + routineName + '\".',\n    'errmsg:expected-structure-but-got': (constructorName, valueTag) => 'Se esperaba una estructura construida ' +\n        'con el constructor \"' +\n        constructorName +\n        '\", ' +\n        'pero se recibió ' +\n        valueTag +\n        '.',\n    'errmsg:expected-constructor-but-got': (constructorNameExpected, constructorNameReceived) => 'Se esperaba una estructura construida ' +\n        'con el constructor \"' +\n        constructorNameExpected +\n        '\", ' +\n        'pero el constructor recibido es ' +\n        constructorNameReceived +\n        '\".',\n    'errmsg:incompatible-types-on-assignment': (variableName, oldType, newType) => 'La variable \"' +\n        variableName +\n        '\" ' +\n        'contenía ' +\n        typeAsNoun(oldType) +\n        ', ' +\n        'no se le puede asignar ' +\n        typeAsNoun(newType) +\n        '\".',\n    'errmsg:incompatible-types-on-list-creation': (index, oldType, newType) => 'Todos los elementos de una lista deben ser del mismo tipo. ' +\n        'Los elementos son ' +\n        typeAsQualifierPlural(oldType) +\n        ', ' +\n        'pero el elemento en la posición ' +\n        index.toString() +\n        ' ' +\n        'es ' +\n        typeAsQualifierSingular(newType) +\n        '.',\n    'errmsg:incompatible-types-on-structure-update': (fieldName, oldType, newType) => 'El campo \"' +\n        fieldName +\n        '\" es ' +\n        typeAsQualifierSingular(oldType) +\n        '. ' +\n        'No se lo puede actualizar con ' +\n        typeAsNoun(newType) +\n        '.',\n    'errmsg:expected-tuple-value-but-got': (receivedType) => 'Se esperaba una tupla pero se recibió ' + typeAsNoun(receivedType) + '.',\n    'errmsg:tuple-component-out-of-bounds': (size, index) => 'Índice fuera de rango. ' +\n        'La tupla es de tamaño ' +\n        size.toString() +\n        ' y ' +\n        'el índice es ' +\n        index.toString() +\n        '.',\n    'errmsg:expected-structure-value-but-got': (receivedType) => 'Se esperaba una estructura pero se recibió ' + typeAsNoun(receivedType) + '.',\n    'errmsg:structure-field-not-present': (fieldNames, missingFieldName) => 'La estructura no tiene un campo \"' +\n        missingFieldName +\n        '\". ' +\n        'Los campos son: [' +\n        fieldNames.join(', ') +\n        '].',\n    'errmsg:primitive-does-not-exist': (primitiveName) => `La operación primitiva \"${primitiveName}\" no existe o no está disponible.`,\n    'errmsg:primitive-arity-mismatch': (name, expected, received) => 'La operación \"' +\n        name +\n        '\" espera recibir ' +\n        toFunc$2(LOCALE_ES['<n>-parameters'])(expected) +\n        ' pero se la invoca con ' +\n        toFunc$2(LOCALE_ES['<n>-arguments'])(received) +\n        '.',\n    'errmsg:primitive-argument-type-mismatch'(name, parameterIndex, numArgs, expectedType, receivedType) {\n        let msg = 'El ';\n        if (numArgs > 1) {\n            msg += ordinalNumber(parameterIndex) + ' ';\n        }\n        msg += 'parámetro ';\n        msg += 'de \"' + name + '\" ';\n        msg += 'debería ser ' + typeAsQualifierSingular(expectedType) + ' ';\n        msg += 'pero es ' + typeAsQualifierSingular(receivedType) + '.';\n        return msg;\n    },\n    'errmsg:expected-value-of-type-but-got': (expectedType, receivedType) => 'Se esperaba ' +\n        typeAsNoun(expectedType) +\n        ' ' +\n        'pero se recibió ' +\n        typeAsNoun(receivedType) +\n        '.',\n    'errmsg:expected-value-of-some-type-but-got': (expectedTypes, receivedType) => 'Se esperaba un valor de alguno de los siguientes tipos: ' +\n        listOfTypes(expectedTypes) +\n        '. ' +\n        'Pero se recibió ' +\n        typeAsNoun(receivedType) +\n        '.',\n    'errmsg:expected-values-to-have-compatible-types': (type1, type2) => 'Los tipos de las expresiones no coinciden: ' +\n        'la primera es ' +\n        typeAsQualifierSingular(type1) +\n        ' ' +\n        'y la segunda es ' +\n        typeAsQualifierSingular(type2) +\n        '.',\n    'errmsg:switch-does-not-match': 'El valor analizado no coincide con ninguna de las ramas del switch.',\n    'errmsg:foreach-pattern-does-not-match': 'El elemento no coincide con el patrón esperado por el foreach.',\n    'errmsg:cannot-divide-by-zero': 'No se puede dividir por cero.',\n    'errmsg:negative-exponent': 'El exponente de la potencia no puede ser negativo.',\n    'errmsg:list-cannot-be-empty': 'La lista no puede ser vacía.',\n    'errmsg:timeout': (millisecs) => 'La ejecución del programa demoró más de ' + millisecs.toString() + 'ms.',\n    /* Typecheck */\n    'errmsg:typecheck-failed': (errorMessage, type1, type2) => formatTypes(errorMessage, type1, type2),\n    /* Board operations */\n    'errmsg:cannot-move-to': (dirName) => 'No se puede mover hacia la dirección ' + dirName + ': cae afuera del tablero.',\n    'errmsg:cannot-remove-stone': (dirName) => 'No se puede sacar una bolita de color ' + dirName + ': no hay bolitas de ese color.',\n    /* Runtime */\n    'TYPE:Integer': 'Number',\n    'TYPE:String': 'String',\n    'TYPE:Tuple': '',\n    'TYPE:List': 'List',\n    'TYPE:Event': 'Event',\n    'CONS:INIT': 'INIT',\n    'CONS:TIMEOUT': 'TIMEOUT',\n    'TYPE:Bool': 'Bool',\n    'CONS:False': 'False',\n    'CONS:True': 'True',\n    'TYPE:Color': 'Color',\n    'CONS:Color0': 'Azul',\n    'CONS:Color1': 'Negro',\n    'CONS:Color2': 'Rojo',\n    'CONS:Color3': 'Verde',\n    'TYPE:Dir': 'Dir',\n    'CONS:Dir0': 'Norte',\n    'CONS:Dir1': 'Este',\n    'CONS:Dir2': 'Sur',\n    'CONS:Dir3': 'Oeste',\n    'PRIM:TypeCheck': 'TypeCheck',\n    'PRIM:BOOM': 'BOOM',\n    'PRIM:boom': 'boom',\n    'PRIM:PutStone': 'Poner',\n    'PRIM:RemoveStone': 'Sacar',\n    'PRIM:Move': 'Mover',\n    'PRIM:GoToEdge': 'IrAlBorde',\n    'PRIM:EmptyBoardContents': 'VaciarTablero',\n    'PRIM:numStones': 'nroBolitas',\n    'PRIM:anyStones': 'hayBolitas',\n    'PRIM:canMove': 'puedeMover',\n    'PRIM:next': 'siguiente',\n    'PRIM:prev': 'previo',\n    'PRIM:opposite': 'opuesto',\n    'PRIM:minBool': 'minBool',\n    'PRIM:maxBool': 'maxBool',\n    'PRIM:minColor': 'minColor',\n    'PRIM:maxColor': 'maxColor',\n    'PRIM:minDir': 'minDir',\n    'PRIM:maxDir': 'maxDir',\n    'PRIM:isEmpty': 'esVacía',\n    'PRIM:head': 'primero',\n    'PRIM:tail': 'sinElPrimero',\n    'PRIM:oldTail': 'resto',\n    'PRIM:init': 'comienzo',\n    'PRIM:last': 'último',\n    /* Helpers */\n    '<alternative>': (strings) => 'alguna de las siguientes alternativas:\\n' +\n        strings.map((s) => '  ' + s).join('\\n'),\n    '<position>': (filename, line, column) => filename + ':' + line.toString() + ':' + column.toString(),\n    '<n>-parameters': (n) => pluralize$1(n, 'parámetro', 'parámetros'),\n    '<n>-arguments': (n) => pluralize$1(n, 'argumento', 'argumentos'),\n    '<n>-fields': (n) => pluralize$1(n, 'campo', 'campos'),\n    '<pattern-type>'(patternType) {\n        if (patternType === 'Event') {\n            return 'evento del programa interactivo';\n        }\n        else if (patternType.substring(0, 7) === '_TUPLE_') {\n            return 'tupla de ' + patternType.substring(7) + ' componentes';\n        }\n        else {\n            return patternType;\n        }\n    }\n};\n\nconst LOCALE_EN = {};\nfor (const key in LOCALE_ES) {\n    LOCALE_EN[key] = LOCALE_ES[key];\n}\nLOCALE_EN['TYPE:Color'] = 'Color';\nLOCALE_EN['CONS:Color0'] = 'Blue';\nLOCALE_EN['CONS:Color1'] = 'Black';\nLOCALE_EN['CONS:Color2'] = 'Red';\nLOCALE_EN['CONS:Color3'] = 'Green';\nLOCALE_EN['TYPE:Dir'] = 'Dir';\nLOCALE_EN['CONS:Dir0'] = 'North';\nLOCALE_EN['CONS:Dir1'] = 'East';\nLOCALE_EN['CONS:Dir2'] = 'South';\nLOCALE_EN['CONS:Dir3'] = 'West';\nLOCALE_EN['PRIM:PutStone'] = 'Drop';\nLOCALE_EN['PRIM:RemoveStone'] = 'Grab';\nLOCALE_EN['PRIM:Move'] = 'Move';\nLOCALE_EN['PRIM:GoToEdge'] = 'GoToEdge';\nLOCALE_EN['PRIM:EmptyBoardContents'] = 'EmptyBoardContents';\nLOCALE_EN['PRIM:numStones'] = 'numStones';\nLOCALE_EN['PRIM:anyStones'] = 'anyStones';\nLOCALE_EN['PRIM:canMove'] = 'canMove';\nLOCALE_EN['PRIM:next'] = 'next';\nLOCALE_EN['PRIM:prev'] = 'prev';\nLOCALE_EN['PRIM:opposite'] = 'opposite';\nLOCALE_EN['PRIM:minBool'] = 'minBool';\nLOCALE_EN['PRIM:maxBool'] = 'maxBool';\nLOCALE_EN['PRIM:minColor'] = 'minColor';\nLOCALE_EN['PRIM:maxColor'] = 'maxColor';\nLOCALE_EN['PRIM:minDir'] = 'minDir';\nLOCALE_EN['PRIM:maxDir'] = 'maxDir';\nLOCALE_EN['PRIM:head'] = 'head';\nLOCALE_EN['PRIM:tail'] = 'tail';\nLOCALE_EN['PRIM:oldTail'] = 'tail';\nLOCALE_EN['PRIM:init'] = 'init';\nLOCALE_EN['PRIM:last'] = 'last';\n\nconst keyword = (palabra) => `‘a palavra chave \"${palabra}\"`;\n// Only for typing purposes\n// eslint-disable-next-line @typescript-eslint/ban-types\nconst toFunc$1 = (x) => x;\nfunction pluralize(n, singular, plural) {\n    if (n === 0) {\n        return 'nenhum ' + singular;\n    }\n    else if (n === 1) {\n        return 'um ' + singular;\n    }\n    else {\n        return n.toString() + ' ' + plural;\n    }\n}\nconst LOCALE_PT = {};\nfor (const key in LOCALE_ES) {\n    LOCALE_PT[key] = LOCALE_ES[key];\n}\n/* Descriptions of syntactic constructions and tokens */\nLOCALE_PT['definition'] = 'uma definição (de programa, função, procedimento, ou tipo)';\nLOCALE_PT['pattern'] = 'um padrão (comodín \"_\", construtor aplicado a variáveis, ou tupla)';\nLOCALE_PT['statement'] = 'um comando';\nLOCALE_PT['expression'] = 'uma expressão';\nLOCALE_PT['procedure call'] = 'uma invocação a um procedimento';\nLOCALE_PT['field name'] = 'o nome de um campo';\nLOCALE_PT['T_EOF'] = 'o fim do arquivo';\nLOCALE_PT['T_NUM'] = 'um número';\nLOCALE_PT['T_STRING'] = 'uma corrente (string)';\nLOCALE_PT['T_UPPERID'] = 'um identificador com maiúsculas';\nLOCALE_PT['T_LOWERID'] = 'um identificador com minúsculas';\nLOCALE_PT['T_PROGRAM'] = keyword('program');\nLOCALE_PT['T_INTERACTIVE'] = keyword('interactive');\nLOCALE_PT['T_PROCEDURE'] = keyword('procedure');\nLOCALE_PT['T_FUNCTION'] = keyword('function');\nLOCALE_PT['T_RETURN'] = keyword('return');\nLOCALE_PT['T_IF'] = keyword('if');\nLOCALE_PT['T_THEN'] = keyword('then');\nLOCALE_PT['T_ELSE'] = keyword('else');\nLOCALE_PT['T_REPEAT'] = keyword('repeat');\nLOCALE_PT['T_FOREACH'] = keyword('foreach');\nLOCALE_PT['T_IN'] = keyword('in');\nLOCALE_PT['T_WHILE'] = keyword('while');\nLOCALE_PT['T_SWITCH'] = keyword('switch');\nLOCALE_PT['T_TO'] = keyword('to');\nLOCALE_PT['T_LET'] = keyword('let');\nLOCALE_PT['T_NOT'] = keyword('not');\nLOCALE_PT['T_DIV'] = keyword('div');\nLOCALE_PT['T_MOD'] = keyword('mod');\nLOCALE_PT['T_TYPE'] = keyword('type');\nLOCALE_PT['T_IS'] = keyword('is');\nLOCALE_PT['T_RECORD'] = keyword('record');\nLOCALE_PT['T_VARIANT'] = keyword('variant');\nLOCALE_PT['T_CASE'] = keyword('case');\nLOCALE_PT['T_FIELD'] = keyword('field');\nLOCALE_PT['T_UNDERSCORE'] = 'um sublinhado (\"_\")';\nLOCALE_PT['T_LPAREN'] = 'um parênteses esquerdo (\"(\")';\nLOCALE_PT['T_RPAREN'] = 'um parênteses direito (\")\")';\nLOCALE_PT['T_LBRACE'] = 'uma chave esquerda (\"{\")';\nLOCALE_PT['T_RBRACE'] = 'uma chave direita (\"}\")';\nLOCALE_PT['T_LBRACK'] = 'um colchete esquerdo (\"[\")';\nLOCALE_PT['T_RBRACK'] = 'um colchete direito (\"]\")';\nLOCALE_PT['T_COMMA'] = 'uma vírgula  (\",\")';\nLOCALE_PT['T_SEMICOLON'] = 'um ponto e vírgula (\";\")';\nLOCALE_PT['T_RANGE'] = 'um separador de intervalo (\"..\")';\nLOCALE_PT['T_GETS'] = 'uma flecha para a esquerda (\"<-\")';\nLOCALE_PT['T_PIPE'] = 'uma barra vertical (\"|\")';\nLOCALE_PT['T_ARROW'] = 'uma flecha (\"->\")';\nLOCALE_PT['T_ASSIGN'] = 'um operador de designação  (\":=\")';\nLOCALE_PT['T_EQ'] = 'uma comparação por igualdade (\"==\")';\nLOCALE_PT['T_NE'] = 'uma comparação por desigualdade (\"/=\")';\nLOCALE_PT['T_LE'] = 'um menor ou igual (\"<=\")';\nLOCALE_PT['T_GE'] = 'um maior ou igual (\">=\")';\nLOCALE_PT['T_LT'] = 'um menor estrito (\"<\")';\nLOCALE_PT['T_GT'] = 'um maior estrito (\">\")';\nLOCALE_PT['T_AND'] = 'o \"e\" lógico (\"&&\")';\nLOCALE_PT['T_OR'] = 'o \"ou\" lógico (\"||\")';\nLOCALE_PT['T_CONCAT'] = 'o operador de concatenação de listas (\"++\")';\nLOCALE_PT['T_PLUS'] = 'o operador de soma (\"+\")';\nLOCALE_PT['T_MINUS'] = 'o operador de diferença (\"-\")';\nLOCALE_PT['T_TIMES'] = 'o operador de produto (\"*\")';\nLOCALE_PT['T_POW'] = 'o operador de potência (\"^\")';\n/* Local name categories */\nLOCALE_PT['LocalVariable'] = 'variável';\nLOCALE_PT['LocalIndex'] = 'índice';\nLOCALE_PT['LocalParameter'] = 'parâmetro';\n/* Descriptions of value types */\nLOCALE_PT['V_Integer'] = 'um número';\nLOCALE_PT['V_String'] = 'uma cadeia';\nLOCALE_PT['V_Tuple'] = 'uma tupla';\nLOCALE_PT['V_List'] = 'uma lista';\nLOCALE_PT['V_Structure'] = 'uma estrutura';\n/* Lexer */\nLOCALE_PT['errmsg:unclosed-multiline-comment'] = 'O comentário abre mas nunca fecha.';\nLOCALE_PT['errmsg:unclosed-string-constant'] =\n    'As aspas que abrem não possuem as aspas correspondentes que fecham.';\nLOCALE_PT['errmsg:numeric-constant-should-not-have-leading-zeroes'] = `As constantes numéricas não podem ser escritas com zeros à esquerda.`;\nLOCALE_PT['errmsg:identifier-must-start-with-alphabetic-character'] = `Os identificadores devem começar com um caractere alfabético (a...z,A...Z).`;\nLOCALE_PT['errmsg:unknown-token'] = (symbol) => `Símbolo desconhecido na entrada: \"${symbol}\".`;\nLOCALE_PT['warning:empty-pragma'] = 'Diretiva pragma vazia.';\nLOCALE_PT['warning:unknown-pragma'] = (pragmaName) => 'Diretiva pragma desconhecida: \"' + pragmaName + '\".';\n/* Parser */\nLOCALE_PT['errmsg:empty-source'] = 'O programa está vazio.';\nLOCALE_PT['errmsg:expected-but-found'] = (expected, found) => `Esperava-se ${expected}.\nEncontrado: ${found}.`;\nLOCALE_PT['errmsg:pattern-number-cannot-be-negative-zero'] = 'O padrão numérico não pode ser \"-0\".';\nLOCALE_PT['errmsg:pattern-tuple-cannot-be-singleton'] =\n    'O padrão para uma tupla não pode ter apenas um componente. ' +\n        'As tuplas têm 0, 2, 3, ou mais componentes, mas não 1.';\nLOCALE_PT['errmsg:assignment-tuple-cannot-be-singleton'] =\n    'A designação a uma tupla não pode ser ' +\n        ' constituída por apenas um componente. ' +\n        'As tuplas têm 0, 2, 3, ou mais componentes, mas não 1.';\nLOCALE_PT['errmsg:operators-are-not-associative'] = (op1, op2) => 'A expressão usa ' +\n    op1 +\n    ' e ' +\n    op2 +\n    ', mas estes operadores não podem ser associados. ' +\n    'Talvez faltam parênteses.';\nLOCALE_PT['errmsg:obsolete-tuple-assignment'] =\n    'Esperava-se um comando mas não foi encontrado um parênteses esquerdo. ' +\n        'Nota: a sintaxe de designação de tuplas \"(x1, ..., xN) := y\" ' +\n        'está obsoleta. Usar \"let (x1, ..., xN) := y\".';\n/* Linter */\nLOCALE_PT['errmsg:program-already-defined'] = (pos1, pos2) => 'Já havia um programa definido em ' +\n    pos1 +\n    '.\\n' +\n    'Não é possível definir um programa em ' +\n    pos2 +\n    '.';\nLOCALE_PT['errmsg:procedure-already-defined'] = (name, pos1, pos2) => 'O procedimiento \"' +\n    name +\n    '\" está definido duas vezes: ' +\n    'em ' +\n    pos1 +\n    ' e em ' +\n    pos2 +\n    '.';\nLOCALE_PT['errmsg:function-already-defined'] = (name, pos1, pos2) => `A função \"${name}\" está definida duas vezes: em ${pos1} e em ${pos2}.`;\nLOCALE_PT['errmsg:type-already-defined'] = (name, pos1, pos2) => `O tipo \"${name}\" está definido duas vezes: em ${pos1} e em ${pos2}.`;\nLOCALE_PT['errmsg:constructor-already-defined'] = (name, pos1, pos2) => `O construtor \"${name}\" está definido duas vezes: em ${pos1} e em ${pos2}.`;\nLOCALE_PT['errmsg:repeated-field-name'] = (constructorName, fieldName) => 'O campo \"' +\n    fieldName +\n    '\" não pode estar repetido ' +\n    'para o construtor \"' +\n    constructorName +\n    '\".';\nLOCALE_PT['errmsg:function-and-field-cannot-have-the-same-name'] = (name, posFunction, posField) => 'O nome \"' +\n    name +\n    '\" usa-se ' +\n    'para uma função em ' +\n    posFunction +\n    ' e ' +\n    'para um campo em ' +\n    posField +\n    '.';\nLOCALE_PT['errmsg:source-should-have-a-program-definition'] =\n    /* Note: the code may actually be completely empty, but\n     * we avoid this technicality since the message could be\n     * confusing. */\n    'O código deve ter uma definição de \"program { ... }\".';\nLOCALE_PT['errmsg:procedure-should-not-have-return'] = (name) => `O procedimento \"${name}\" não deveria ter um comando \"return\".`;\nLOCALE_PT['errmsg:function-should-have-return'] = (name) => 'A função \"' + name + '\" deveria ter um comando \"return\".';\nLOCALE_PT['errmsg:return-statement-not-allowed-here'] =\n    'O comando \"return\"  pode aparecer apenas como o último comando ' +\n        'de uma função ou como o último comando do programa.';\nLOCALE_PT['errmsg:local-name-conflict'] = (name, oldCat, oldPos, newCat, newPos) => 'Conflito de nomes: \"' +\n    name +\n    '\" se usa duas vezes: ' +\n    'como ' +\n    oldCat +\n    ' em ' +\n    oldPos +\n    ', e ' +\n    'como ' +\n    newCat +\n    ' em ' +\n    newPos +\n    '.';\nLOCALE_PT['errmsg:repeated-variable-in-tuple-assignment'] = (name) => `La variável \"${name}\" está repetida na designação de tuplas.`;\nLOCALE_PT['errmsg:constructor-used-as-procedure'] = (name, type) => 'O procedimento \"' +\n    name +\n    '\" não está definido. ' +\n    'O nome \"' +\n    name +\n    '\" é o nome de um construtor ' +\n    'do tipo \"' +\n    type +\n    '\".';\nLOCALE_PT['errmsg:undefined-procedure'] = (name) => 'O procedimento \"' + name + '\" não está definido.';\nLOCALE_PT['errmsg:undefined-function'] = (name) => 'A função \"' + name + '\" não está definida.';\nLOCALE_PT['errmsg:procedure-arity-mismatch'] = (name, expected, received) => 'O procedimento \"' +\n    name +\n    '\" espera receber ' +\n    toFunc$1(LOCALE_ES['<n>-parameters'])(expected) +\n    ' mas é invocado com ' +\n    toFunc$1(LOCALE_ES['<n>-arguments'])(received) +\n    '.';\nLOCALE_PT['errmsg:function-arity-mismatch'] = (name, expected, received) => 'A função \"' +\n    name +\n    '\" espera receber ' +\n    toFunc$1(LOCALE_ES['<n>-parameters'])(expected) +\n    ' mas é invocado com ' +\n    toFunc$1(LOCALE_ES['<n>-arguments'])(received) +\n    '.';\nLOCALE_PT['errmsg:structure-pattern-arity-mismatch'] = (name, expected, received) => 'O construtor \"' +\n    name +\n    '\" tem ' +\n    toFunc$1(LOCALE_ES['<n>-fields'])(expected) +\n    ' mas o padrão tem ' +\n    toFunc$1(LOCALE_ES['<n>-parameters'])(received) +\n    '.';\nLOCALE_PT['errmsg:type-used-as-constructor'] = (name, constructorNames) => {\n    let msg;\n    if (constructorNames.length === 0) {\n        msg = '(não tem construtores).';\n    }\n    else if (constructorNames.length === 1) {\n        msg = '(tem um construtor: ' + constructorNames[0] + ').';\n    }\n    else {\n        msg = '(seus construtores são: ' + constructorNames.join(', ') + ').';\n    }\n    return ('O construtor \"' +\n        name +\n        '\" não está definido. ' +\n        'O nome \"' +\n        name +\n        '\" é o nome de um tipo ' +\n        msg);\n};\nLOCALE_PT['errmsg:procedure-used-as-constructor'] = (name) => 'O construtor \"' +\n    name +\n    '\" não está definido. ' +\n    'O nome \"' +\n    name +\n    '\" é o nome de um procedimento.';\nLOCALE_PT['errmsg:undeclared-constructor'] = (name) => 'O construtor \"' + name + '\" não está definido.';\nLOCALE_PT['errmsg:wildcard-pattern-should-be-last'] =\n    'O comodín \"_\" tem que ser o último ramo do switch.';\nLOCALE_PT['errmsg:numeric-pattern-repeats-number'] = (number) => 'Tem dois ramos diferentes para o número \"' + number + '\".';\nLOCALE_PT['errmsg:structure-pattern-repeats-constructor'] = (name) => 'Há dois ramos distintos para o construtor \"' + name + '\".';\nLOCALE_PT['errmsg:structure-pattern-repeats-tuple-arity'] = (arity) => 'Há dois ramos distintos para as tuplas de ' + arity.toString() + ' componentes.';\nLOCALE_PT['errmsg:structure-pattern-repeats-timeout'] = 'Há dois ramos distintos para o TIMEOUT.';\nLOCALE_PT['errmsg:pattern-does-not-match-type'] = (expectedType, patternType) => 'Os padrões devem ser todos do mesmo tipo. ' +\n    'O padrão deveria ser de tipo \"' +\n    expectedType +\n    '\" ' +\n    'pero es de tipo \"' +\n    patternType +\n    '\".';\nLOCALE_PT['errmsg:patterns-in-interactive-program-must-be-events'] =\n    'Os padrões de um \"interactive program\" devem ser eventos.';\nLOCALE_PT['errmsg:patterns-in-switch-must-not-be-events'] =\n    'Os padrões de um \"switch\" não podem ser eventos.';\nLOCALE_PT['errmsg:structure-construction-repeated-field'] = (constructorName, fieldName) => 'O campo \"' +\n    fieldName +\n    '\" está repetido em ' +\n    'a instanciação do construtor \"' +\n    constructorName +\n    '\".';\nLOCALE_PT['errmsg:structure-construction-invalid-field'] = (constructorName, fieldName) => 'O campo \"' +\n    fieldName +\n    '\" não é um campo válido ' +\n    'para o construtor \"' +\n    constructorName +\n    '\".';\nLOCALE_PT['errmsg:structure-construction-missing-field'] = (constructorName, fieldName) => `Falta dar valor ao campo \"${fieldName}\" do construtor \"${constructorName}\".`;\nLOCALE_PT['errmsg:structure-construction-cannot-be-an-event'] = (constructorName) => 'O construtor \"' +\n    constructorName +\n    '\" corresponde a um ' +\n    'evento, e só pode ser administrado implicitamente ' +\n    'em um programa interativo (o usuário não pode construir ' +\n    'instâncias).';\n/* Runtime errors (virtual machine) */\nLOCALE_PT['errmsg:undefined-variable'] = (variableName) => 'A variável \"' + variableName + '\" não está definida.';\nLOCALE_PT['errmsg:too-few-arguments'] = (routineName) => 'Faltam argumentos para \"' + routineName + '\".';\nLOCALE_PT['errmsg:expected-structure-but-got'] = (constructorName, valueTag) => 'Esperava-se uma estrutura construída ' +\n    'com o construtor \"' +\n    constructorName +\n    '\", ' +\n    'mas foi recebido ' +\n    valueTag +\n    '.';\nLOCALE_PT['errmsg:expected-constructor-but-got'] = (constructorNameExpected, constructorNameReceived) => 'Esperava-se uma estrutura construída ' +\n    'com o construtor \"' +\n    constructorNameExpected +\n    '\", ' +\n    'mas o construtor recebido é ' +\n    constructorNameReceived +\n    '\".';\nLOCALE_PT['errmsg:incompatible-types-on-assignment'] = (variableName, oldType, newType) => 'A variável \"' +\n    variableName +\n    '\" ' +\n    'continha un valor do tipo ' +\n    oldType +\n    ', ' +\n    'não é possível designar um valor de tipo ' +\n    newType +\n    '\".';\nLOCALE_PT['errmsg:incompatible-types-on-list-creation'] = (index, oldType, newType) => 'Todos os elementos de uma lista devem ser do mesmo tipo. ' +\n    'Os elementos são do tipo ' +\n    oldType +\n    ', ' +\n    'mas o elemento na posição ' +\n    index.toString() +\n    ' ' +\n    'é do tipo ' +\n    newType +\n    '.';\nLOCALE_PT['errmsg:incompatible-types-on-structure-update'] = (fieldName, oldType, newType) => 'O campo \"' +\n    fieldName +\n    '\" é do tipo ' +\n    oldType +\n    '. ' +\n    'Não pode ser atualizado com um valor do tipo ' +\n    newType +\n    '.';\nLOCALE_PT['errmsg:expected-tuple-value-but-got'] = (receivedType) => `Esperava-se uma tupla mas um valor não foi recebido de tipo ${receivedType}.`;\nLOCALE_PT['errmsg:tuple-component-out-of-bounds'] = (size, index) => 'Índice fora do intervalo. ' +\n    'A tupla é do tamanho ' +\n    size.toString() +\n    ' e ' +\n    'o índice é ' +\n    index.toString() +\n    '.';\nLOCALE_PT['errmsg:expected-structure-value-but-got'] = (receivedType) => `Se esperaba una estructura pero se recibió un valor de tipo ${receivedType}.`;\nLOCALE_PT['errmsg:structure-field-not-present'] = (fieldNames, missingFieldName) => 'A estrutura não possui um campo \"' +\n    missingFieldName +\n    '\". ' +\n    'Os campos são: [' +\n    fieldNames.join(', ') +\n    '].';\nLOCALE_PT['errmsg:primitive-does-not-exist'] = (primitiveName) => `A operação primitiva \"${primitiveName}\" não existe ou não está disponível.`;\nLOCALE_PT['errmsg:primitive-arity-mismatch'] = (name, expected, received) => 'A operação \"' +\n    name +\n    '\" espera receber ' +\n    toFunc$1(LOCALE_ES['<n>-parameters'])(expected) +\n    ' mas é invocada com ' +\n    toFunc$1(LOCALE_ES['<n>-arguments'])(received) +\n    '.';\nLOCALE_PT['errmsg:primitive-argument-type-mismatch'] = (name, parameterIndex, expectedType, receivedType) => 'O parâmetro #' +\n    parameterIndex.toString() +\n    ' ' +\n    'da operação \"' +\n    name +\n    '\" ' +\n    'deveria ser do tipo ' +\n    expectedType +\n    ' ' +\n    'mas o argumento é do tipo ' +\n    receivedType +\n    '.';\nLOCALE_PT['errmsg:expected-value-of-type-but-got'] = (expectedType, receivedType) => 'Esperava-se um valor do tipo ' +\n    expectedType +\n    ' ' +\n    'mas foi recebido um valor do tipo ' +\n    receivedType +\n    '.';\nLOCALE_PT['errmsg:expected-value-of-some-type-but-got'] = (expectedTypes, receivedType) => 'Esperava-se um valor de algum dos seguintes tipos: ' +\n    expectedTypes.join(', ') +\n    '; mas foi recebido um valor do tipo ' +\n    receivedType +\n    '.';\nLOCALE_PT['errmsg:expected-values-to-have-compatible-types'] = (type1, type2) => 'Os tipos dos valores devem ser compatíveis, ' +\n    'mas um é do tipo ' +\n    type1 +\n    ' ' +\n    'e o outro é do tipo ' +\n    type2 +\n    '.';\nLOCALE_PT['errmsg:switch-does-not-match'] =\n    'O valor analisado não coincide com nenhum dos ramos do switch.';\nLOCALE_PT['errmsg:cannot-divide-by-zero'] = 'Não é possível dividir por zero.';\nLOCALE_PT['errmsg:list-cannot-be-empty'] = 'A lista não pode ser vazia.';\nLOCALE_PT['errmsg:timeout'] = (millisecs) => 'A execução do programa demorou mais de ' + millisecs.toString() + 'ms.';\n/* Board operations */\nLOCALE_PT['errmsg:cannot-move-to'] = (dirName) => 'Não é possível mover para a direção ' + dirName + ': cai fora do tabuleiro.';\nLOCALE_PT['errmsg:cannot-remove-stone'] = (dirName) => 'Não é posível retirar uma pedra de cor ' + dirName + ': não há pedras dessa cor.';\n/* Runtime */\nLOCALE_PT['TYPE:Color'] = 'Cor';\nLOCALE_PT['CONS:Color0'] = 'Azul';\nLOCALE_PT['CONS:Color1'] = 'Preto';\nLOCALE_PT['CONS:Color2'] = 'Vermelho';\nLOCALE_PT['CONS:Color3'] = 'Verde';\nLOCALE_PT['TYPE:Dir'] = 'Dir';\nLOCALE_PT['CONS:Dir0'] = 'Norte';\nLOCALE_PT['CONS:Dir1'] = 'Leste';\nLOCALE_PT['CONS:Dir2'] = 'Sul';\nLOCALE_PT['CONS:Dir3'] = 'Oeste';\nLOCALE_PT['PRIM:PutStone'] = 'Colocar';\nLOCALE_PT['PRIM:RemoveStone'] = 'Retirar';\nLOCALE_PT['PRIM:Move'] = 'Mover';\nLOCALE_PT['PRIM:GoToEdge'] = 'IrABorda';\nLOCALE_PT['PRIM:EmptyBoardContents'] = 'EsvaziarTabuleiro';\nLOCALE_PT['PRIM:numStones'] = 'nroPedras';\nLOCALE_PT['PRIM:anyStones'] = 'haPedras';\nLOCALE_PT['PRIM:canMove'] = 'podeMover';\nLOCALE_PT['PRIM:next'] = 'seguinte';\nLOCALE_PT['PRIM:prev'] = 'previo';\nLOCALE_PT['PRIM:opposite'] = 'oposto';\nLOCALE_PT['PRIM:minBool'] = 'minBool';\nLOCALE_PT['PRIM:maxBool'] = 'maxBool';\nLOCALE_PT['PRIM:minColor'] = 'minCor';\nLOCALE_PT['PRIM:maxColor'] = 'maxCor';\nLOCALE_PT['PRIM:minDir'] = 'minDir';\nLOCALE_PT['PRIM:maxDir'] = 'maxDir';\nLOCALE_PT['PRIM:head'] = 'primeiro';\nLOCALE_PT['PRIM:tail'] = 'resto';\nLOCALE_PT['PRIM:oldTail'] = 'resto';\nLOCALE_PT['PRIM:init'] = 'comeco';\nLOCALE_PT['PRIM:last'] = 'ultimo';\n/* Helpers */\nLOCALE_PT['<alternative>'] = (strings) => 'alguma das seguintes alternativas:\\n' + strings.map((s) => '  ' + s).join('\\n');\nLOCALE_PT['<position>'] = (filename, line, column) => filename + ':' + line.toString() + ':' + column.toString();\nLOCALE_PT['<n>-parameters'] = (n) => pluralize(n, 'parâmetro', 'parâmetros');\nLOCALE_PT['<n>-arguments'] = (n) => pluralize(n, 'argumento', 'argumentos');\nLOCALE_PT['<n>-fields'] = (n) => pluralize(n, 'campo', 'campos');\nLOCALE_PT['<pattern-type>'] = (patternType) => {\n    if (patternType === 'Event') {\n        return 'evento do programa interativo';\n    }\n    else if (patternType.substring(0, 7) === '_TUPLE_') {\n        return 'tupla de ' + patternType.substring(7) + ' componentes';\n    }\n    else {\n        return patternType;\n    }\n};\n\nlet CURRENT_LANGUAGE = 'es';\nconst dictionaries = {\n    es: LOCALE_ES,\n    en: LOCALE_EN,\n    pt: LOCALE_PT\n};\nconst i18n = (message) => dictionaries[CURRENT_LANGUAGE][message];\nconst i18nF = (message) => dictionaries[CURRENT_LANGUAGE][message];\nconst i18nPosition = (position) => {\n    const msg = i18nF('<position>');\n    if (typeof msg === 'string')\n        return msg;\n    return msg(position.filename, position.line, position.column);\n};\n\n/* Base class for signalling conditions */\nclass GbsInterpreterException extends Error {\n    /* Note: position should typically be an instance of SourceReader */\n    constructor(startPos, endPos, errorType, reason, args) {\n        super(reason);\n        this.isGobstonesException = true;\n        this.startPos = startPos;\n        this.endPos = endPos;\n        this.reason = reason;\n        this.args = args;\n        const errmsg = i18n(errorType + ':' + reason);\n        const msg = typeof errmsg === 'string' || errmsg === undefined\n            ? errmsg\n            : // eslint-disable-next-line @typescript-eslint/ban-types\n                errmsg(...args);\n        this.message = reason === 'boom-called' ? args[0] : msg;\n    }\n}\nclass GbsWarning extends GbsInterpreterException {\n    constructor(startPos, endPos, reason, args) {\n        super(startPos, endPos, 'warning', reason, args);\n    }\n}\nclass GbsSyntaxError extends GbsInterpreterException {\n    constructor(startPos, endPos, reason, args) {\n        super(startPos, endPos, 'errmsg', reason, args);\n    }\n}\nclass GbsRuntimeError extends GbsInterpreterException {\n    constructor(startPos, endPos, reason, args) {\n        super(startPos, endPos, 'errmsg', reason, args);\n    }\n}\n\n/* eslint-disable no-underscore-dangle */\n/* Description of a field */\nclass FieldDescriptor {\n    constructor(typeName, constructorName, index) {\n        this._typeName = typeName;\n        this._constructorName = constructorName;\n        this._index = index;\n    }\n    get typeName() {\n        return this._typeName;\n    }\n    get constructorName() {\n        return this._constructorName;\n    }\n    get index() {\n        return this._index;\n    }\n}\n/* Local name categories */\nconst LocalVariable = Symbol.for('LocalVariable');\nconst LocalParameter = Symbol.for('LocalParameter');\nconst LocalIndex = Symbol.for('LocalIndex');\n/* Description of a local name */\nclass LocalNameDescriptor {\n    constructor(category, position) {\n        this._category = category;\n        this._position = position;\n    }\n    // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n    get category() {\n        return this._category;\n    }\n    // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n    get position() {\n        return this._position;\n    }\n}\nfunction fail$3(startPos, endPos, reason, args) {\n    throw new GbsSyntaxError(startPos, endPos, reason, args);\n}\n/* A symbol table keeps track of definitions, associating:\n * - procedure and function names to their code\n * - type definitions, constructors, and fields\n */\nclass SymbolTable {\n    constructor() {\n        this._program = undefined;\n        /* true iff the program is interactive */\n        this._isInteractiveProgram = false;\n        /* Each procedure name is mapped to its definition */\n        this._procedures = {};\n        /* Each procedure name is mapped to its parameters */\n        this._procedureParameters = {};\n        /* Each function name is mapped to its definition */\n        this._functions = {};\n        /* Each function name is mapped to its parameters */\n        this._functionParameters = {};\n        /* Each type name is mapped to its definition */\n        this._types = {};\n        /* Each type name is mapped to a list of constructor names */\n        this._typeConstructors = {};\n        /* Each constructor name is mapped to its declaration */\n        this._constructors = {};\n        /* Each constructor name is mapped to its type name */\n        this._constructorType = {};\n        /* Each constructor name is mapped to a list of field names */\n        this._constructorFields = {};\n        /* Each field name is mapped to a list of field descriptors.\n         * Each field descriptor is of the form\n         *   new FieldDescriptor(typeName, constructorName, index)\n         * where\n         * - 'typeName' is the name of a type\n         * - 'constructorName' is the name of a constructor of the given type\n         * - 'index' is the index of the given field with respect to the\n         *   given constructor (starting from 0)\n         */\n        this._fields = {};\n        /* Local names include parameters, indices and variables,\n         * which are only meaningful within a routine.\n         *\n         * Local names may be bound/referenced in the following places:\n         * - formal parameters,\n         * - indices of a \"foreach\",\n         * - pattern matching (formal parameters of a \"switch\"),\n         * - assignments and tuple assignments,\n         * - reading local variables.\n         *\n         * _localNames maps a name to a descriptor of the form:\n         *   new LocalNameDescriptor(category, position)\n         */\n        this._localNames = {};\n    }\n    get program() {\n        return this._program;\n    }\n    isInteractiveProgram() {\n        return this._isInteractiveProgram;\n    }\n    isProcedure(name) {\n        return name in this._procedures;\n    }\n    allProcedureNames() {\n        const names = [];\n        for (const name in this._procedures) {\n            names.push(name);\n        }\n        return names.sort();\n    }\n    procedureDefinition(name) {\n        if (this.isProcedure(name)) {\n            return this._procedures[name];\n        }\n        else {\n            throw Error('Undefined procedure.');\n        }\n    }\n    procedureParameters(name) {\n        if (this.isProcedure(name)) {\n            return this._procedureParameters[name];\n        }\n        else {\n            throw Error('Undefined procedure.');\n        }\n    }\n    isFunction(name) {\n        return name in this._functions;\n    }\n    allFunctionNames() {\n        const names = [];\n        for (const name in this._functions) {\n            names.push(name);\n        }\n        return names.sort();\n    }\n    functionDefinition(name) {\n        if (this.isFunction(name)) {\n            return this._functions[name];\n        }\n        else {\n            throw Error('Undefined function.');\n        }\n    }\n    functionParameters(name) {\n        if (this.isFunction(name)) {\n            return this._functionParameters[name];\n        }\n        else {\n            throw Error('Undefined function.');\n        }\n    }\n    isType(name) {\n        return name in this._types;\n    }\n    typeDefinition(name) {\n        if (this.isType(name)) {\n            return this._types[name];\n        }\n        else {\n            throw Error('Undefined type.');\n        }\n    }\n    typeConstructors(name) {\n        if (this.isType(name)) {\n            return this._typeConstructors[name];\n        }\n        else {\n            throw Error('Undefined type.');\n        }\n    }\n    isConstructor(name) {\n        return name in this._constructors;\n    }\n    constructorDeclaration(name) {\n        if (this.isConstructor(name)) {\n            return this._constructors[name];\n        }\n        else {\n            throw Error('Undefined constructor.');\n        }\n    }\n    constructorType(name) {\n        if (this.isConstructor(name)) {\n            return this._constructorType[name];\n        }\n        else {\n            throw Error('Undefined constructor.');\n        }\n    }\n    constructorFields(name) {\n        if (this.isConstructor(name)) {\n            return this._constructorFields[name];\n        }\n        else {\n            throw Error('Undefined constructor.');\n        }\n    }\n    isField(name) {\n        return name in this._fields;\n    }\n    fieldDescriptor(name) {\n        if (this.isField(name)) {\n            return this._fields[name];\n        }\n        else {\n            throw Error('Undefined field.');\n        }\n    }\n    defProgram(definition) {\n        if (this._program !== undefined) {\n            fail$3(definition.startPos, definition.endPos, 'program-already-defined', [\n                i18nPosition(this._program.startPos),\n                i18nPosition(definition.startPos)\n            ]);\n        }\n        this._program = definition;\n    }\n    defInteractiveProgram(definition) {\n        this.defProgram(definition);\n        this._isInteractiveProgram = true;\n    }\n    defProcedure(definition) {\n        const name = definition.name.value;\n        if (name in this._procedures) {\n            fail$3(definition.name.startPos, definition.name.endPos, 'procedure-already-defined', [\n                name,\n                i18nPosition(this._procedures[name].startPos),\n                i18nPosition(definition.startPos)\n            ]);\n        }\n        const parameters = [];\n        for (const parameter of definition.parameters) {\n            parameters.push(parameter.value);\n        }\n        this._procedures[name] = definition;\n        this._procedureParameters[name] = parameters;\n    }\n    defFunction(definition) {\n        const name = definition.name.value;\n        if (name in this._functions) {\n            fail$3(definition.name.startPos, definition.name.endPos, 'function-already-defined', [\n                name,\n                i18nPosition(this._functions[name].startPos),\n                i18nPosition(definition.startPos)\n            ]);\n        }\n        else if (name in this._fields) {\n            const fieldPos = this._constructors[this._fields[name][0].constructorName].startPos;\n            fail$3(definition.name.startPos, definition.name.endPos, 'function-and-field-cannot-have-the-same-name', [name, i18nPosition(definition.startPos), i18nPosition(fieldPos)]);\n        }\n        const parameters = [];\n        for (const parameter of definition.parameters) {\n            parameters.push(parameter.value);\n        }\n        this._functions[name] = definition;\n        this._functionParameters[name] = parameters;\n    }\n    defType(definition) {\n        const typeName = definition.typeName.value;\n        if (typeName in this._types) {\n            fail$3(definition.typeName.startPos, definition.typeName.endPos, 'type-already-defined', [\n                typeName,\n                i18nPosition(this._types[typeName].startPos),\n                i18nPosition(definition.startPos)\n            ]);\n        }\n        this._types[typeName] = definition;\n        const constructorNames = [];\n        for (const constructorDeclaration of definition.constructorDeclarations) {\n            this._declareConstructor(typeName, constructorDeclaration);\n            constructorNames.push(constructorDeclaration.constructorName.value);\n        }\n        this._typeConstructors[typeName] = constructorNames;\n    }\n    _declareConstructor(typeName, constructorDeclaration) {\n        const constructorName = constructorDeclaration.constructorName.value;\n        if (constructorName in this._constructors) {\n            fail$3(constructorDeclaration.constructorName.startPos, constructorDeclaration.constructorName.endPos, 'constructor-already-defined', [\n                constructorName,\n                i18nPosition(this._constructors[constructorName].startPos),\n                i18nPosition(constructorDeclaration.startPos)\n            ]);\n        }\n        this._constructors[constructorName] = constructorDeclaration;\n        this._constructorType[constructorName] = typeName;\n        const constructorFields = {};\n        const fieldNames = [];\n        let index = 0;\n        for (const fieldName of constructorDeclaration.fieldNames) {\n            if (fieldName.value in constructorFields) {\n                fail$3(fieldName.startPos, fieldName.endPos, 'repeated-field-name', [\n                    constructorName,\n                    fieldName.value\n                ]);\n            }\n            constructorFields[fieldName.value] = true;\n            fieldNames.push(fieldName.value);\n            this._declareField(fieldName.startPos, fieldName.endPos, typeName, constructorName, fieldName.value, index);\n            index++;\n        }\n        this._constructorFields[constructorName] = fieldNames;\n    }\n    _declareField(startPos, endPos, typeName, constructorName, fieldName, index) {\n        if (fieldName in this._functions) {\n            fail$3(startPos, endPos, 'function-and-field-cannot-have-the-same-name', [\n                fieldName,\n                i18nPosition(this._functions[fieldName].startPos),\n                i18nPosition(startPos)\n            ]);\n        }\n        if (!(fieldName in this._fields)) {\n            this._fields[fieldName] = [];\n        }\n        this._fields[fieldName].push(new FieldDescriptor(typeName, constructorName, index));\n    }\n    /* Adds a new local name, failing if it already exists. */\n    addNewLocalName(localName, category) {\n        if (localName.value in this._localNames) {\n            fail$3(localName.startPos, localName.endPos, 'local-name-conflict', [\n                localName.value,\n                i18n(Symbol.keyFor(this._localNames[localName.value].category)),\n                i18nPosition(this._localNames[localName.value].position),\n                i18n(Symbol.keyFor(category)),\n                i18nPosition(localName.startPos)\n            ]);\n        }\n        this.setLocalName(localName, category);\n    }\n    /* Sets a local name.\n     * It fails if it already exists with a different category. */\n    setLocalName(localName, category) {\n        if (localName.value in this._localNames &&\n            this._localNames[localName.value].category !== category) {\n            fail$3(localName.startPos, localName.endPos, 'local-name-conflict', [\n                localName.value,\n                i18n(Symbol.keyFor(this._localNames[localName.value].category)),\n                i18nPosition(this._localNames[localName.value].position),\n                i18n(Symbol.keyFor(category)),\n                i18nPosition(localName.startPos)\n            ]);\n        }\n        this._localNames[localName.value] = new LocalNameDescriptor(category, localName.startPos);\n    }\n    /* Removes a local name. */\n    removeLocalName(localName) {\n        delete this._localNames[localName.value];\n    }\n    /* Removes all local names. */\n    exitScope() {\n        this._localNames = {};\n    }\n    /* Get the attribute dictionary for a global name.\n     *\n     * A global name is the names of a global definition:\n     *   - the string 'program'\n     *   - any procedure name (e.g. 'P')\n     *   - any function name (e.g. 'f')\n     *   - any type name (e.g. 'A')\n     *\n     * The result is a dictionary of attributes.\n     *\n     */\n    getAttributes(globalName) {\n        if (globalName === 'program' && this._program !== undefined) {\n            return this._program.attributes;\n        }\n        else if (globalName in this._procedures) {\n            return this._procedures[globalName].attributes;\n        }\n        else if (globalName in this._functions) {\n            return this._functions[globalName].attributes;\n        }\n        else if (globalName in this._types) {\n            return this._types[globalName].attributes;\n        }\n        else {\n            return {};\n        }\n    }\n}\n\n/* eslint-disable camelcase */\nclass RecursionChecker {\n    constructor() {\n        this._callGraph = {};\n    }\n    /*\n     * If there is a cycle in the call graph (using either procedure calls\n     * or function calls), return a list:\n     *   [c1, ..., cn]\n     * where ci is the i-th call involved in a cycle.\n     * A call is of the form:\n     *   {caller: F , callee: G, location: L}\n     * where F is the name (string) of the caller,\n     *       G is the name (string) of the callee,\n     *   and L is the location of the call.\n     *\n     * Otherwise return null.\n     */\n    callCycle(ast) {\n        /* Build the call graph */\n        this._visitNode(ast);\n        /* Find a cycle in the call graph */\n        return this._findCallCycle();\n    }\n    /* Visitor -- build the call graph */\n    _addEdge(caller, callee) {\n        if (!(caller in this._callGraph)) {\n            this._callGraph[caller] = {};\n        }\n        if (!(callee.value in this._callGraph[caller])) {\n            this._callGraph[caller][callee.value] = callee;\n        }\n    }\n    _visitNode(node) {\n        if (node === undefined || node instanceof Token) ;\n        else if (node instanceof Array) {\n            this._visitNodes(node);\n        }\n        else {\n            this._visitTaggedNode(node);\n        }\n    }\n    _visitNodes(nodes) {\n        for (const node of nodes) {\n            this._visitNode(node);\n        }\n    }\n    // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n    _visitTaggedNode(node) {\n        switch (node.tag) {\n            case N_DefProgram:\n            case N_DefInteractiveProgram:\n                this._visitProgramDefinition();\n                break;\n            case N_DefProcedure:\n            case N_DefFunction:\n                this._visitRoutineDefinition(node);\n                break;\n            case N_StmtProcedureCall:\n                this._visitProcedureCall(node);\n                break;\n            case N_ExprFunctionCall:\n                this._visitFunctionCall(node);\n                break;\n        }\n        this._visitNodes(node.children);\n    }\n    _visitProgramDefinition() {\n        this._currentRoutine = 'program';\n    }\n    _visitRoutineDefinition(node) {\n        this._currentRoutine = node.name.value;\n    }\n    _visitProcedureCall(node) {\n        this._addEdge(this._currentRoutine, node.procedureName);\n    }\n    _visitFunctionCall(node) {\n        this._addEdge(this._currentRoutine, node.functionName);\n    }\n    /* Find a cycle in the call graph */\n    _findCallCycle() {\n        const visited = {};\n        const parents = {};\n        for (const f in this._callGraph) {\n            visited[f] = true;\n            parents[f] = true;\n            const cycle = this._findCallCycleFrom(visited, parents, [], f);\n            if (cycle !== undefined) {\n                return cycle;\n            }\n            delete parents[f];\n        }\n        return undefined;\n    }\n    _findCallCycleFrom(visited, parents, path, f) {\n        for (const g in this._callGraph[f]) {\n            path.push({\n                caller: f,\n                callee: g,\n                location: this._callGraph[f][g]\n            });\n            if (g in parents) {\n                while (path[0].caller !== g) {\n                    path.shift();\n                }\n                path.push();\n                return path; /* Cycle */\n            }\n            if (!(g in visited)) {\n                visited[g] = true;\n                parents[g] = true;\n                const cycle = this._findCallCycleFrom(visited, parents, path, g);\n                if (cycle !== undefined) {\n                    return cycle;\n                }\n                delete parents[g];\n            }\n            path.pop();\n        }\n        return undefined;\n    }\n}\n\n/* eslint-disable camelcase */\n// Only for typing purposes\n// eslint-disable-next-line @typescript-eslint/ban-types\nconst toStr$1 = (x) => x;\nconst isBlockWithReturn = (stmt) => stmt.tag === N_StmtBlock &&\n    stmt.statements.length > 0 &&\n    stmt.statements.slice(-1)[0].tag === N_StmtReturn;\nfunction fail$2(startPos, endPos, reason, args) {\n    throw new GbsSyntaxError(startPos, endPos, reason, args);\n}\n/* A semantic analyzer receives\n *   a symbol table (instance of SymbolTable)\n *   an abstract syntax tree (the output of a parser)\n *\n * Then:\n *\n * - It performs semantic checks (linting) to ensure that the\n *   program is well-formed.\n *\n * - It builds a symbol table with information on global identifiers\n *   such as procedures, functions, types, constructors, and fields.\n *\n * - The semantic analysis is structured as a recursive visit over the\n *   AST.\n *\n * We assume that the AST is the valid output of a parser.\n */\nclass Linter {\n    constructor(symtable) {\n        this._symtable = symtable;\n        /* All checks performed by the linter have an entry in this dictionary.\n         * The value of a check indicates whether it is enabled (true) or\n         * disabled (false).\n         *\n         * If a check is disabled, it does not produce a syntax error.\n         */\n        this._enabledLinterChecks = {\n            // Linter options\n            'source-should-have-a-program-definition': true,\n            'procedure-should-not-have-return': true,\n            'function-should-have-return': true,\n            'return-statement-not-allowed-here': true,\n            'wildcard-pattern-should-be-last': true,\n            'variable-pattern-should-be-last': true,\n            'structure-pattern-repeats-constructor': true,\n            'structure-pattern-repeats-tuple-arity': true,\n            'structure-pattern-repeats-timeout': true,\n            'pattern-does-not-match-type': true,\n            'patterns-in-interactive-program-must-be-events': true,\n            'patterns-in-interactive-program-cannot-be-variables': true,\n            'patterns-in-switch-must-not-be-events': true,\n            'patterns-in-foreach-must-not-be-events': true,\n            'repeated-variable-in-tuple-assignment': true,\n            'constructor-used-as-procedure': true,\n            'undefined-procedure': true,\n            'procedure-arity-mismatch': true,\n            'numeric-pattern-repeats-number': true,\n            'structure-pattern-arity-mismatch': true,\n            'structure-construction-repeated-field': true,\n            'structure-construction-invalid-field': true,\n            'structure-construction-missing-field': true,\n            'structure-construction-cannot-be-an-event': true,\n            'undefined-function': true,\n            'function-arity-mismatch': true,\n            'type-used-as-constructor': true,\n            'procedure-used-as-constructor': true,\n            'undeclared-constructor': true,\n            // Extensions\n            'forbidden-extension-destructuring-foreach': true,\n            'forbidden-extension-allow-recursion': true\n        };\n    }\n    lint(ast) {\n        this._lintMain(ast);\n        return this._symtable;\n    }\n    _ensureLintCheckExists(linterCheckId) {\n        if (!(linterCheckId in this._enabledLinterChecks)) {\n            throw Error('Linter check \"' + linterCheckId + '\" does not exist.');\n        }\n    }\n    enableCheck(linterCheckId, enabled) {\n        this._ensureLintCheckExists(linterCheckId);\n        this._enabledLinterChecks[linterCheckId] = enabled;\n    }\n    _lintCheck(startPos, endPos, reason, args) {\n        this._ensureLintCheckExists(reason);\n        if (this._enabledLinterChecks[reason]) {\n            fail$2(startPos, endPos, reason, args);\n        }\n    }\n    _lintMain(ast) {\n        /* Collect all definitions into the symbol table.\n         * This should be done all together, before linting individual\n         * definitions, so all the names of types, constructors, fields, etc.\n         * are already known when checking statements and expressions. */\n        for (const definition of ast.definitions) {\n            this._addDefinitionToSymbolTable(definition);\n        }\n        /* The source should either be empty or have exactly one program */\n        if (ast.definitions.length > 0 && this._symtable.program === undefined) {\n            this._lintCheck(ast.startPos, ast.endPos, 'source-should-have-a-program-definition', []);\n        }\n        /* Lint individual definitions */\n        for (const definition of ast.definitions) {\n            this._lintDefinition(definition);\n        }\n        /* Disable recursion */\n        this._disableRecursion(ast);\n    }\n    // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n    _addDefinitionToSymbolTable(definition) {\n        switch (definition.tag) {\n            case N_DefProgram:\n                return this._symtable.defProgram(definition);\n            case N_DefInteractiveProgram:\n                return this._symtable.defInteractiveProgram(definition);\n            case N_DefProcedure:\n                return this._symtable.defProcedure(definition);\n            case N_DefFunction:\n                return this._symtable.defFunction(definition);\n            case N_DefType:\n                return this._symtable.defType(definition);\n            default:\n                throw Error('Unknown definition: ' + Symbol.keyFor(definition.tag));\n        }\n    }\n    /** Definitions **/\n    _lintDefinition(definition) {\n        switch (definition.tag) {\n            case N_DefProgram:\n                return this._lintDefProgram(definition);\n            case N_DefInteractiveProgram:\n                return this._lintDefInteractiveProgram(definition);\n            case N_DefProcedure:\n                return this._lintDefProcedure(definition);\n            case N_DefFunction:\n                return this._lintDefFunction(definition);\n            case N_DefType:\n                return this._lintDefType();\n            default:\n                throw Error('Linter: Definition not implemented: ' + Symbol.keyFor(definition.tag));\n        }\n    }\n    _lintDefProgram(definition) {\n        /* Lint body */\n        this._lintStmtBlock(definition.body, true /* allowReturn */);\n        /* Remove all local names */\n        this._symtable.exitScope();\n    }\n    _lintDefInteractiveProgram(definition) {\n        /* Lint all branches */\n        this._lintSwitchBranches(definition.branches, true /* isInteractiveProgram */);\n    }\n    _lintDefProcedure(definition) {\n        /* Check that it does not have a return statement */\n        if (isBlockWithReturn(definition.body)) {\n            this._lintCheck(definition.startPos, definition.endPos, 'procedure-should-not-have-return', [definition.name.value]);\n        }\n        /* Add parameters as local names */\n        for (const parameter of definition.parameters) {\n            this._symtable.addNewLocalName(parameter, LocalParameter);\n        }\n        /* Lint body */\n        this._lintStmtBlock(definition.body, false /* !allowReturn */);\n        /* Remove all local names */\n        this._symtable.exitScope();\n    }\n    _lintDefFunction(definition) {\n        /* Check that it has a return statement */\n        if (!isBlockWithReturn(definition.body)) {\n            this._lintCheck(definition.startPos, definition.endPos, 'function-should-have-return', [\n                definition.name.value\n            ]);\n        }\n        /* Add parameters as local names */\n        for (const parameter of definition.parameters) {\n            this._symtable.addNewLocalName(parameter, LocalParameter);\n        }\n        /* Lint body */\n        this._lintStmtBlock(definition.body, true /* allowReturn */);\n        /* Remove all local names */\n        this._symtable.exitScope();\n    }\n    _lintDefType() {\n        /* No restrictions */\n    }\n    /** Statements **/\n    _lintStatement(statement) {\n        switch (statement.tag) {\n            case N_StmtBlock:\n                /* Do not allow return in nested blocks */\n                return this._lintStmtBlock(statement, false /* !allowReturn */);\n            case N_StmtReturn:\n                return this._lintStmtReturn(statement);\n            case N_StmtIf:\n                return this._lintStmtIf(statement);\n            case N_StmtRepeat:\n                return this._lintStmtRepeat(statement);\n            case N_StmtForeach:\n                return this._lintStmtForeach(statement);\n            case N_StmtWhile:\n                return this._lintStmtWhile(statement);\n            case N_StmtSwitch:\n                return this._lintStmtSwitch(statement);\n            case N_StmtAssignVariable:\n                return this._lintStmtAssignVariable(statement);\n            case N_StmtAssignTuple:\n                return this._lintStmtAssignTuple(statement);\n            case N_StmtProcedureCall:\n                return this._lintStmtProcedureCall(statement);\n            default:\n                throw Error('Linter: Statement not implemented: ' + Symbol.keyFor(statement.tag));\n        }\n    }\n    _lintStmtBlock(block, allowReturn) {\n        let i = 0;\n        for (const statement of block.statements) {\n            const returnAllowed = allowReturn && i === block.statements.length - 1;\n            if (!returnAllowed && statement.tag === N_StmtReturn) {\n                this._lintCheck(statement.startPos, statement.endPos, 'return-statement-not-allowed-here', []);\n            }\n            this._lintStatement(statement);\n            i++;\n        }\n    }\n    _lintStmtReturn(statement) {\n        this._lintExpression(statement.result);\n    }\n    _lintStmtIf(statement) {\n        this._lintExpression(statement.condition);\n        this._lintStatement(statement.thenBlock);\n        if (statement.elseBlock !== undefined) {\n            this._lintStatement(statement.elseBlock);\n        }\n    }\n    _lintStmtRepeat(statement) {\n        this._lintExpression(statement.times);\n        this._lintStatement(statement.body);\n    }\n    _lintStmtForeach(statement) {\n        this._lintStmtForeachPattern(statement.pattern);\n        this._lintExpression(statement.range);\n        for (const variable of statement.pattern.boundVariables) {\n            this._symtable.addNewLocalName(variable, LocalIndex);\n        }\n        this._lintStatement(statement.body);\n        for (const variable of statement.pattern.boundVariables) {\n            this._symtable.removeLocalName(variable);\n        }\n    }\n    _lintStmtForeachPattern(pattern) {\n        /* If \"DestructuringForeach\" is disabled, forbid complex patterns.\n         * Allow only variable patterns (indices). */\n        if (pattern.tag !== N_PatternVariable) {\n            this._lintCheck(pattern.startPos, pattern.endPos, 'forbidden-extension-destructuring-foreach', []);\n        }\n        /* Check that the pattern itself is well-formed */\n        this._lintPattern(pattern);\n        /* The pattern in a foreach cannot be an event */\n        const patternType = this._patternType(pattern);\n        if (patternType === i18n('TYPE:Event')) {\n            this._lintCheck(pattern.startPos, pattern.endPos, 'patterns-in-foreach-must-not-be-events', []);\n        }\n    }\n    _lintStmtWhile(statement) {\n        this._lintExpression(statement.condition);\n        this._lintStatement(statement.body);\n    }\n    _lintStmtSwitch(statement) {\n        this._lintExpression(statement.subject);\n        this._lintSwitchBranches(statement.branches, false /* !isInteractiveProgram */);\n    }\n    _lintSwitchBranches(branches, isInteractiveProgram) {\n        this._lintBranches(branches, isInteractiveProgram, false /* isMatching */);\n    }\n    _lintBranches(branches, isInteractiveProgram, isMatching) {\n        /* Check that each pattern is well-formed */\n        for (const branch of branches) {\n            this._lintPattern(branch.pattern);\n        }\n        this._branchesCheckWildcardAndVariable(branches);\n        this._branchesCheckNoRepeats(branches);\n        this._branchesCheckCompatible(branches);\n        if (isInteractiveProgram) {\n            this._branchesCheckTypeEvent(branches);\n        }\n        else {\n            this._branchesCheckTypeNotEvent(branches);\n        }\n        /* Lint recursively each branch */\n        for (const branch of branches) {\n            this._lintBranchBody(branch, isMatching);\n        }\n    }\n    /* Check that there is at most one wildcard/variable pattern at the end */\n    _branchesCheckWildcardAndVariable(branches) {\n        let i = 0;\n        const n = branches.length;\n        for (const branch of branches) {\n            if (branch.pattern.tag === N_PatternWildcard && i !== n - 1) {\n                this._lintCheck(branch.pattern.startPos, branch.pattern.endPos, 'wildcard-pattern-should-be-last', []);\n            }\n            if (branch.pattern.tag === N_PatternVariable && i !== n - 1) {\n                this._lintCheck(branch.pattern.startPos, branch.pattern.endPos, 'variable-pattern-should-be-last', [branch.pattern.variableName.value]);\n            }\n            i++;\n        }\n    }\n    /* Check that there are no repeated constructors in a sequence\n     * of branches. */\n    _branchesCheckNoRepeats(branches) {\n        const coveredNumbers = {};\n        const coveredConstructors = {};\n        const coveredTuples = {};\n        let coveredTimeout = false;\n        for (const branch of branches) {\n            switch (branch.pattern.tag) {\n                case N_PatternWildcard:\n                case N_PatternVariable:\n                    /* Already checked in _switchBranchesCheckWildcardAndVariable */\n                    break;\n                case N_PatternNumber: {\n                    const number = branch.pattern.number.value;\n                    if (number in coveredNumbers) {\n                        this._lintCheck(branch.pattern.startPos, branch.pattern.endPos, 'numeric-pattern-repeats-number', [number]);\n                    }\n                    coveredNumbers[number] = true;\n                    break;\n                }\n                case N_PatternStructure: {\n                    const constructorName = branch.pattern.constructorName.value;\n                    if (constructorName in coveredConstructors) {\n                        this._lintCheck(branch.pattern.startPos, branch.pattern.endPos, 'structure-pattern-repeats-constructor', [constructorName]);\n                    }\n                    coveredConstructors[constructorName] = true;\n                    break;\n                }\n                case N_PatternTuple: {\n                    const arity = branch.pattern.boundVariables.length;\n                    if (arity in coveredTuples) {\n                        this._lintCheck(branch.pattern.startPos, branch.pattern.endPos, 'structure-pattern-repeats-tuple-arity', [arity]);\n                    }\n                    coveredTuples[arity] = true;\n                    break;\n                }\n                case N_PatternTimeout: {\n                    if (coveredTimeout) {\n                        this._lintCheck(branch.pattern.startPos, branch.pattern.endPos, 'structure-pattern-repeats-timeout', []);\n                    }\n                    coveredTimeout = true;\n                    break;\n                }\n                default:\n                    throw Error('Linter: pattern \"' +\n                        Symbol.keyFor(branch.pattern.tag) +\n                        '\" not implemented.');\n            }\n        }\n    }\n    /* Check that constructors are compatible,\n     * i.e. that they belong to the same type */\n    _branchesCheckCompatible(branches) {\n        let expectedType;\n        for (const branch of branches) {\n            const patternType = this._patternType(branch.pattern);\n            if (expectedType === undefined) {\n                expectedType = patternType;\n            }\n            else if (patternType !== undefined && expectedType !== patternType) {\n                this._lintCheck(branch.pattern.startPos, branch.pattern.endPos, 'pattern-does-not-match-type', [i18nF('<pattern-type>')(expectedType), i18nF('<pattern-type>')(patternType)]);\n            }\n        }\n    }\n    /* Check that there are patterns are of type Event */\n    _branchesCheckTypeEvent(branches) {\n        for (const branch of branches) {\n            const patternType = this._patternType(branch.pattern);\n            if (patternType !== undefined && patternType !== i18n('TYPE:Event')) {\n                this._lintCheck(branch.pattern.startPos, branch.pattern.endPos, 'patterns-in-interactive-program-must-be-events', []);\n            }\n            if (branch.pattern.tag === N_PatternVariable) {\n                this._lintCheck(branch.pattern.startPos, branch.pattern.endPos, 'patterns-in-interactive-program-cannot-be-variables', []);\n            }\n        }\n    }\n    /* Check that there are no patterns of type Event */\n    _branchesCheckTypeNotEvent(branches) {\n        for (const branch of branches) {\n            const patternType = this._patternType(branch.pattern);\n            if (patternType === i18n('TYPE:Event')) {\n                this._lintCheck(branch.pattern.startPos, branch.pattern.endPos, 'patterns-in-switch-must-not-be-events', []);\n            }\n        }\n    }\n    /* Recursively lint the body of each branch. Locally bind variables. */\n    _lintBranchBody(branch, isMatching) {\n        for (const variable of branch.pattern.boundVariables) {\n            this._symtable.addNewLocalName(variable, LocalParameter);\n        }\n        if (isMatching) {\n            this._lintExpression(branch.body);\n        }\n        else {\n            this._lintStatement(branch.body);\n        }\n        for (const variable of branch.pattern.boundVariables) {\n            this._symtable.removeLocalName(variable);\n        }\n    }\n    /* Return a description of the type of a pattern */\n    _patternType(pattern) {\n        switch (pattern.tag) {\n            case N_PatternWildcard:\n            case N_PatternVariable:\n                return undefined;\n            case N_PatternNumber:\n                return toStr$1(i18n('TYPE:Integer'));\n            case N_PatternStructure:\n                return this._symtable.constructorType(pattern.constructorName.value);\n            case N_PatternTuple:\n                return '_TUPLE_' + pattern.boundVariables.length.toString();\n            case N_PatternTimeout:\n                return toStr$1(i18n('TYPE:Event'));\n            default:\n                throw Error('Linter: pattern \"' + Symbol.keyFor(pattern.tag) + '\" not implemented.');\n        }\n    }\n    _lintStmtAssignVariable(statement) {\n        this._symtable.setLocalName(statement.variable, LocalVariable);\n        this._lintExpression(statement.value);\n    }\n    _lintStmtAssignTuple(statement) {\n        const variables = {};\n        for (const variable of statement.variables) {\n            this._symtable.setLocalName(variable, LocalVariable);\n            if (variable.value in variables) {\n                this._lintCheck(variable.startPos, variable.endPos, 'repeated-variable-in-tuple-assignment', [variable.value]);\n            }\n            variables[variable.value] = true;\n        }\n        this._lintExpression(statement.value);\n    }\n    _lintStmtProcedureCall(statement) {\n        const name = statement.procedureName.value;\n        /* Check that it is a procedure */\n        if (!this._symtable.isProcedure(name)) {\n            if (this._symtable.isConstructor(name)) {\n                this._lintCheck(statement.startPos, statement.endPos, 'constructor-used-as-procedure', [name, this._symtable.constructorType(name)]);\n            }\n            else {\n                this._lintCheck(statement.startPos, statement.endPos, 'undefined-procedure', [\n                    name\n                ]);\n            }\n        }\n        /* Check that the number of argument coincides */\n        const expected = this._symtable.procedureParameters(name).length;\n        const received = statement.args.length;\n        if (expected !== received) {\n            this._lintCheck(statement.startPos, statement.endPos, 'procedure-arity-mismatch', [\n                name,\n                expected,\n                received\n            ]);\n        }\n        /* Check all the arguments */\n        for (const argument of statement.args) {\n            this._lintExpression(argument);\n        }\n    }\n    /** Patterns **/\n    _lintPattern(pattern) {\n        switch (pattern.tag) {\n            case N_PatternWildcard:\n                return this._lintPatternWildcard();\n            case N_PatternVariable:\n                return this._lintPatternVariable();\n            case N_PatternNumber:\n                return this._lintPatternNumber();\n            case N_PatternStructure:\n                return this._lintPatternStructure(pattern);\n            case N_PatternTuple:\n                return this._lintPatternTuple();\n            case N_PatternTimeout:\n                return this._lintPatternTimeout();\n            default:\n                throw Error('Linter: pattern \"' + Symbol.keyFor(pattern.tag) + '\" not implemented.');\n        }\n    }\n    _lintPatternWildcard() {\n        /* No restrictions */\n    }\n    _lintPatternVariable() {\n        /* No restrictions */\n    }\n    _lintPatternNumber() {\n        /* No restrictions */\n    }\n    _lintPatternStructure(pattern) {\n        const name = pattern.constructorName.value;\n        /* Check that the constructor exists */\n        if (!this._symtable.isConstructor(name)) {\n            this._failExpectedConstructorButGot(\n            // throws\n            pattern.startPos, pattern.endPos, name);\n            return;\n        }\n        /* Check that the number of parameters match.\n         * Note: constructor patterns with 0 arguments are always allowed.\n         */\n        const expected = this._symtable.constructorFields(name).length;\n        const received = pattern.boundVariables.length;\n        if (received > 0 && expected !== received) {\n            this._lintCheck(pattern.startPos, pattern.endPos, 'structure-pattern-arity-mismatch', [\n                name,\n                expected,\n                received\n            ]);\n        }\n    }\n    _lintPatternTuple() {\n        /* No restrictions */\n    }\n    _lintPatternTimeout() {\n        /* No restrictions */\n    }\n    /** Expressions **/\n    // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n    _lintExpression(expression) {\n        switch (expression.tag) {\n            case N_ExprVariable:\n                return this._lintExprVariable();\n            case N_ExprConstantNumber:\n                return this._lintExprConstantNumber();\n            case N_ExprConstantString:\n                return this._lintExprConstantString();\n            case N_ExprChoose:\n                return this._lintExprChoose(expression);\n            case N_ExprMatching:\n                return this._lintExprMatching(expression);\n            case N_ExprList:\n                return this._lintExprList(expression);\n            case N_ExprRange:\n                return this._lintExprRange(expression);\n            case N_ExprTuple:\n                return this._lintExprTuple(expression);\n            case N_ExprStructure:\n                return this._lintExprStructure(expression);\n            case N_ExprStructureUpdate:\n                return this._lintExprStructureUpdate(expression);\n            case N_ExprFunctionCall:\n                return this._lintExprFunctionCall(expression);\n            default:\n                throw Error('Linter: Expression not implemented: ' + Symbol.keyFor(expression.tag));\n        }\n    }\n    _lintExprVariable() {\n        /* No restrictions.\n         * Note: the restriction that a variable is defined before it is used\n         * is a dynamic constraint . */\n    }\n    _lintExprConstantNumber() {\n        /* No restrictions */\n    }\n    _lintExprConstantString() {\n        /* No restrictions */\n    }\n    _lintExprChoose(expression) {\n        this._lintExpression(expression.condition);\n        this._lintExpression(expression.trueExpr);\n        this._lintExpression(expression.falseExpr);\n    }\n    _lintExprMatching(expression) {\n        this._lintExpression(expression.subject);\n        this._lintMatchingBranches(expression.branches);\n    }\n    _lintMatchingBranches(branches) {\n        this._lintBranches(branches, false /* !isInteractiveProgram */, true /* isMatching */);\n    }\n    _lintExprList(expression) {\n        for (const element of expression.elements) {\n            this._lintExpression(element);\n        }\n    }\n    _lintExprRange(expression) {\n        this._lintExpression(expression.first);\n        if (expression.second !== undefined) {\n            this._lintExpression(expression.second);\n        }\n        this._lintExpression(expression.last);\n    }\n    _lintExprTuple(expression) {\n        for (const element of expression.elements) {\n            this._lintExpression(element);\n        }\n    }\n    _lintExprStructure(expression) {\n        this._lintExprStructureOrUpdate(expression, undefined);\n    }\n    _lintExprStructureUpdate(expression) {\n        this._lintExprStructureOrUpdate(expression, expression.original);\n    }\n    /* Check a structure construction: C(x1 <- e1, ..., xN <- eN)\n     * or a structure update: C(original | x1 <- e1, ..., xN <- eN).\n     *\n     * If original is undefined, it is a structure construction.\n     * If original is not undefined, it is the updated expression.\n     * */\n    // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n    _lintExprStructureOrUpdate(expression, original) {\n        /* Check that constructor exists */\n        const constructorName = expression.constructorName.value;\n        if (!this._symtable.isConstructor(constructorName)) {\n            this._failExpectedConstructorButGot(\n            // throws\n            expression.startPos, expression.endPos, constructorName);\n            return;\n        }\n        this._checkStructureTypeNotEvent(constructorName, expression);\n        this._checkStructureNoRepeatedFields(constructorName, expression);\n        this._checkStructureBindingsCorrect(constructorName, expression);\n        /* If it is a structure construction, check that the fields are complete */\n        if (original === undefined) {\n            this._checkStructureBindingsComplete(constructorName, expression);\n        }\n        /* If it is an update, recursively check the original expression */\n        if (original !== undefined) {\n            this._lintExpression(original);\n        }\n        /* Recursively check expressions in field bindings */\n        for (const fieldBinding of expression.fieldBindings) {\n            this._lintExpression(fieldBinding.value);\n        }\n    }\n    /* Check that there are no repeated fields in a structure\n     * construction/update */\n    _checkStructureNoRepeatedFields(constructorName, expression) {\n        const declaredFields = expression.fieldNames();\n        const seen = {};\n        for (const fieldName of declaredFields) {\n            if (fieldName in seen) {\n                this._lintCheck(expression.startPos, expression.endPos, 'structure-construction-repeated-field', [constructorName, fieldName]);\n            }\n            seen[fieldName] = true;\n        }\n    }\n    /* Check that all bindings in a structure construction/update\n     * correspond to existing fields */\n    _checkStructureBindingsCorrect(constructorName, expression) {\n        const declaredFields = expression.fieldNames();\n        const constructorFields = this._symtable.constructorFields(constructorName);\n        for (const fieldName of declaredFields) {\n            if (constructorFields.indexOf(fieldName) === -1) {\n                this._lintCheck(expression.startPos, expression.endPos, 'structure-construction-invalid-field', [constructorName, fieldName]);\n            }\n        }\n    }\n    /* Check that bindings in a structure construction/update\n     * cover all existing fields */\n    _checkStructureBindingsComplete(constructorName, expression) {\n        const declaredFields = expression.fieldNames();\n        const constructorFields = this._symtable.constructorFields(constructorName);\n        for (const fieldName of constructorFields) {\n            if (declaredFields.indexOf(fieldName) === -1) {\n                this._lintCheck(expression.startPos, expression.endPos, 'structure-construction-missing-field', [constructorName, fieldName]);\n            }\n        }\n    }\n    /* Check that a structure construction/update does not involve\n     * constructors of the Event type, which should only be\n     * handled implicitly in an interactive program. */\n    _checkStructureTypeNotEvent(constructorName, expression) {\n        const constructorType = this._symtable.constructorType(constructorName);\n        if (constructorType === i18n('TYPE:Event')) {\n            this._lintCheck(expression.startPos, expression.endPos, 'structure-construction-cannot-be-an-event', [constructorName]);\n        }\n    }\n    _lintExprFunctionCall(expression) {\n        /* Check that it is a function or a field */\n        const name = expression.functionName.value;\n        if (!this._symtable.isFunction(name) && !this._symtable.isField(name)) {\n            this._lintCheck(expression.startPos, expression.endPos, 'undefined-function', [name]);\n        }\n        /* Check that the number of argument coincides */\n        let expected;\n        if (this._symtable.isFunction(name)) {\n            expected = this._symtable.functionParameters(name).length;\n        }\n        else {\n            /* Fields always have exactly one parameter */\n            expected = 1;\n        }\n        const received = expression.args.length;\n        if (expected !== received) {\n            this._lintCheck(expression.startPos, expression.endPos, 'function-arity-mismatch', [\n                name,\n                expected,\n                received\n            ]);\n        }\n        /* Recursively check arguments */\n        for (const argument of expression.args) {\n            this._lintExpression(argument);\n        }\n    }\n    _disableRecursion(ast) {\n        if (this._enabledLinterChecks['forbidden-extension-allow-recursion']) {\n            const cycle = new RecursionChecker().callCycle(ast);\n            if (cycle !== undefined) {\n                this._lintCheck(cycle[0].location.startPos, cycle[0].location.endPos, 'forbidden-extension-allow-recursion', [cycle]);\n            }\n        }\n    }\n    /* Throw a syntax error indicating that we expected the name of a\n     * constructor, but we got a name which is not a constructor.\n     *\n     * If the name is a type or a procedure, provide a more helpful\n     * error message. (Coinciding constructor and procedure names are\n     * not forbidden, but it is probably a mistake). */\n    _failExpectedConstructorButGot(startPos, endPos, name) {\n        if (this._symtable.isType(name)) {\n            this._lintCheck(startPos, endPos, 'type-used-as-constructor', [\n                name,\n                this._symtable.typeConstructors(name)\n            ]);\n        }\n        else if (this._symtable.isProcedure(name)) {\n            this._lintCheck(startPos, endPos, 'procedure-used-as-constructor', [name]);\n        }\n        else {\n            this._lintCheck(startPos, endPos, 'undeclared-constructor', [name]);\n        }\n    }\n}\n\n/* eslint-disable no-underscore-dangle */\nconst isWhitespace = (chr) => chr === ' ' || chr === '\\t' || chr === '\\r' || chr === '\\n';\nconst isDigit = (chr) => chr >= '0' && chr <= '9';\n/* We define a character to be alphabetic if it has two distinct forms:\n * an uppercase form and a lowercase form.\n *\n * This accepts alphabetic Unicode characters but rejects numbers and symbols.\n */\nconst isAlpha = (chr) => chr.toUpperCase() !== chr.toLowerCase();\n/* An uppercase character is an alphabetic character that coincides with\n * its uppercase form */\nconst isUpper = (chr) => isAlpha(chr) && chr.toUpperCase() === chr;\n/* A lowercase character is an alphabetic character that coincides with\n * its lowercase form */\nconst isLower = (chr) => isAlpha(chr) && chr.toLowerCase() === chr;\nconst isIdent = (chr) => isAlpha(chr) || isDigit(chr) || chr === '_' || chr === \"'\";\nconst KEYWORDS = {\n    program: T_PROGRAM,\n    interactive: T_INTERACTIVE,\n    procedure: T_PROCEDURE,\n    function: T_FUNCTION,\n    return: T_RETURN,\n    /* Control structures */\n    if: T_IF,\n    then: T_THEN,\n    elseif: T_ELSEIF,\n    else: T_ELSE,\n    choose: T_CHOOSE,\n    when: T_WHEN,\n    otherwise: T_OTHERWISE,\n    repeat: T_REPEAT,\n    foreach: T_FOREACH,\n    in: T_IN,\n    while: T_WHILE,\n    switch: T_SWITCH,\n    to: T_TO,\n    matching: T_MATCHING,\n    select: T_SELECT,\n    on: T_ON,\n    /* Assignment */\n    let: T_LET,\n    /* Operators */\n    not: T_NOT,\n    div: T_DIV,\n    mod: T_MOD,\n    /* Records/variants */\n    type: T_TYPE,\n    is: T_IS,\n    record: T_RECORD,\n    variant: T_VARIANT,\n    case: T_CASE,\n    field: T_FIELD,\n    /* Default case in a switch/match */\n    _: T_UNDERSCORE\n};\n/* Pattern for timeouts in an interactive program */\n// eslint-disable-next-line @typescript-eslint/ban-types\nconst i = i18n('CONS:TIMEOUT');\nconst t = typeof i === 'string' ? i : '';\nKEYWORDS[t] = T_TIMEOUT;\n/* Note: the order is relevant so that the 'maximal munch' rule applies. */\nconst SYMBOLS = [\n    /* Various delimiters */\n    { symbol: '(', tag: T_LPAREN },\n    { symbol: ')', tag: T_RPAREN },\n    { symbol: '{', tag: T_LBRACE },\n    { symbol: '}', tag: T_RBRACE },\n    { symbol: '[', tag: T_LBRACK },\n    { symbol: ']', tag: T_RBRACK },\n    { symbol: ',', tag: T_COMMA },\n    { symbol: ';', tag: T_SEMICOLON },\n    { symbol: '...', tag: T_ELLIPSIS },\n    /* Range operator */\n    { symbol: '..', tag: T_RANGE },\n    /* Assignment */\n    { symbol: ':=', tag: T_ASSIGN },\n    /* Logical operators */\n    { symbol: '&&', tag: T_AND },\n    { symbol: '||', tag: T_OR },\n    /* Fields */\n    { symbol: '<-', tag: T_GETS },\n    { symbol: '|', tag: T_PIPE },\n    /* Pattern matching */\n    { symbol: '->', tag: T_ARROW },\n    /* Relational operators */\n    { symbol: '==', tag: T_EQ },\n    { symbol: '/=', tag: T_NE },\n    { symbol: '<=', tag: T_LE },\n    { symbol: '>=', tag: T_GE },\n    { symbol: '<', tag: T_LT },\n    { symbol: '>', tag: T_GT },\n    /* Functions */\n    { symbol: '++', tag: T_CONCAT },\n    { symbol: '+', tag: T_PLUS },\n    { symbol: '-', tag: T_MINUS },\n    { symbol: '*', tag: T_TIMES },\n    { symbol: '^', tag: T_POW }\n];\n/* Valid language options accepted by the LANGUAGE pragma */\nconst LANGUAGE_OPTIONS = ['DestructuringForeach', 'AllowRecursion'];\nconst leadingZeroes = (string) => string.length >= 0 && string[0] === '0';\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nfunction fail$1(startPos, endPos, reason, args) {\n    throw new GbsSyntaxError(startPos, endPos, reason, args);\n}\nconst CLOSING_DELIMITERS = {\n    '(': ')',\n    '[': ']',\n    '{': '}'\n};\n/* An instance of Lexer scans source code for tokens.\n * Example:\n *\n *     let tok = new Lexer('if (a)');\n *     tok.nextToken(); // ~~> new Token(T_IF, null, ...)\n *     tok.nextToken(); // ~~> new Token(T_LPAREN, null, ...)\n *     tok.nextToken(); // ~~> new Token(T_LOWERID, 'a', ...)\n *     tok.nextToken(); // ~~> new Token(T_RPAREN, null, ...)\n *     tok.nextToken(); // ~~> new Token(T_EOF, null, ...)\n *\n * The 'input' parameter is either a string or a mapping\n * from filenames to strings.\n */\nclass Lexer {\n    constructor(input) {\n        this._multifileReader = new MultifileReader(input);\n        this._reader = this._multifileReader.readCurrentFile();\n        this._warnings = [];\n        /* A stack of tokens '(', '[' and '{', to provide more helpful\n         * error reporting if delimiters are not balanced. */\n        this._delimiterStack = [];\n        /* A dictionary of pending attributes, set by the ATTRIBUTE pragma.\n         * Pending attributes are used by the parser to decorate any procedure\n         * or function definition. */\n        this._pendingAttributes = {};\n        /* A list of language options, enabled by the LANGUAGE pragma.\n         * Language options are interpreted by the runner to initialize.\n         * the remaining modules (linter, compiler, runtime, ...)\n         * accordingly. */\n        this._languageOptions = [];\n    }\n    /* Return the next token from the input */\n    nextToken() {\n        if (!this._findNextToken()) {\n            const token = new Token(T_EOF, undefined, this._reader, this._reader);\n            this._checkBalancedDelimiters(token);\n            return token;\n        }\n        if (isDigit(this._reader.peek())) {\n            const startPos = this._reader;\n            const value = this._readStringWhile(isDigit);\n            const endPos = this._reader;\n            if (leadingZeroes(value) && value.length > 1) {\n                fail$1(startPos, endPos, 'numeric-constant-should-not-have-leading-zeroes', []);\n            }\n            return new Token(T_NUM, value, startPos, endPos);\n        }\n        else if (isIdent(this._reader.peek())) {\n            const startPos = this._reader;\n            const value = this._readStringWhile(isIdent);\n            const endPos = this._reader;\n            if (value in KEYWORDS) {\n                return new Token(KEYWORDS[value], value, startPos, endPos);\n            }\n            else if (isUpper(value[0])) {\n                return new Token(T_UPPERID, value, startPos, endPos);\n            }\n            else if (isLower(value[0])) {\n                return new Token(T_LOWERID, value, startPos, endPos);\n            }\n            else {\n                fail$1(startPos, endPos, 'identifier-must-start-with-alphabetic-character', []);\n            }\n        }\n        else if (this._reader.peek() === '\"') {\n            return this._readStringConstant();\n        }\n        else {\n            return this._readSymbol();\n        }\n    }\n    /* When tokenization is done, this function returns the list of all\n     * the warnings collected during tokenization */\n    warnings() {\n        return this._warnings;\n    }\n    /* Skip whitespace and advance through files until the start of the next\n     * token is found. Return false if EOF is found. */\n    _findNextToken() {\n        for (;;) {\n            this._ignoreWhitespaceAndComments();\n            if (!this._reader.eof()) {\n                break;\n            }\n            if (this._multifileReader.moreFiles()) {\n                this._multifileReader.nextFile();\n                this._reader = this._multifileReader.readCurrentFile();\n            }\n            else {\n                return false;\n            }\n        }\n        return true;\n    }\n    /* Read a string while the given condition holds for the current\n     * character */\n    // eslint-disable-next-line @typescript-eslint/ban-types\n    _readStringWhile(condition) {\n        const result = [];\n        while (!this._reader.eof()) {\n            if (!condition(this._reader.peek())) {\n                break;\n            }\n            result.push(this._reader.peek());\n            this._reader = this._reader.consumeCharacter();\n        }\n        return result.join('');\n    }\n    /* Reads a quote-delimited string constant.\n     * Escapes are recognized. */\n    _readStringConstant() {\n        const startPos = this._reader;\n        const result = [];\n        this._reader = this._reader.consumeCharacter();\n        while (!this._reader.eof()) {\n            const c = this._reader.peek();\n            if (c === '\"') {\n                this._reader = this._reader.consumeCharacter();\n                return new Token(T_STRING, result.join(''), startPos, this._reader);\n            }\n            else if (c === '\\\\') {\n                this._reader = this._reader.consumeCharacter();\n                if (this._reader.eof()) {\n                    break;\n                }\n                const c2 = this._reader.peek();\n                this._reader = this._reader.consumeCharacter();\n                switch (c2) {\n                    case 'a':\n                        result.push('\\u0007');\n                        break;\n                    case 'b':\n                        result.push('\\u0008');\n                        break;\n                    case 'f':\n                        result.push('\\u000c');\n                        break;\n                    case 'n':\n                        result.push('\\u000a');\n                        break;\n                    case 'r':\n                        result.push('\\u000d');\n                        break;\n                    case 't':\n                        result.push('\\u0009');\n                        break;\n                    case 'v':\n                        result.push('\\u000b');\n                        break;\n                    default:\n                        result.push(c2);\n                        break;\n                }\n            }\n            else {\n                result.push(c);\n                this._reader = this._reader.consumeCharacter();\n            }\n        }\n        fail$1(startPos, this._reader, 'unclosed-string-constant', []);\n    }\n    /* Read a symbol */\n    _readSymbol() {\n        for (const { symbol, tag } of SYMBOLS) {\n            if (this._reader.startsWith(symbol)) {\n                const startPos = this._reader;\n                this._reader = this._reader.consumeString(symbol);\n                const endPos = this._reader;\n                const token = new Token(tag, symbol, startPos, endPos);\n                this._checkBalancedDelimiters(token);\n                return token;\n            }\n        }\n        fail$1(this._reader, this._reader, 'unknown-token', [this._reader.peek()]);\n    }\n    _ignoreWhitespaceAndComments() {\n        while (this._ignoreWhitespace() || this._ignoreComments()) {\n            /* continue */\n        }\n    }\n    _ignoreWhitespace() {\n        if (!this._reader.eof() && isWhitespace(this._reader.peek())) {\n            this._reader = this._reader.consumeCharacter();\n            return true;\n        }\n        else {\n            return false;\n        }\n    }\n    /* Skips comments and pragmas, returns false if there are no comments */\n    _ignoreComments() {\n        if (this._startSingleLineComment()) {\n            this._ignoreSingleLineComment();\n            return true;\n        }\n        else if (this._reader.startsWith('/*@')) {\n            const startPos = this._reader;\n            this._evaluatePragma(startPos, this._readInvisiblePragma('/*', '*/', '@'));\n            return true;\n        }\n        else if (this._reader.startsWith('{-')) {\n            this._ignoreMultilineComment('{-', '-}');\n            return true;\n        }\n        else if (this._reader.startsWith('/*')) {\n            this._ignoreMultilineComment('/*', '*/');\n            return true;\n        }\n        else {\n            return false;\n        }\n    }\n    /* Returns true if a single-line comment starts here */\n    _startSingleLineComment() {\n        return (this._reader.startsWith('--') ||\n            this._reader.startsWith('//') ||\n            this._reader.startsWith('#'));\n    }\n    /* Skips a single-line comment */\n    _ignoreSingleLineComment() {\n        while (!this._reader.eof()) {\n            this._reader = this._reader.consumeCharacter();\n            if (this._reader.peek() === '\\n') {\n                break;\n            }\n        }\n    }\n    /* Skips a multiline comment with the given left/right delimiters.\n     * Multi-line comments may be nested. */\n    _ignoreMultilineComment(left, right) {\n        let nesting = 0;\n        const startPos = this._reader;\n        while (!this._reader.eof()) {\n            if (this._reader.startsWith(left)) {\n                this._reader = this._reader.consumeString(left);\n                nesting++;\n            }\n            else if (this._reader.startsWith(right)) {\n                this._reader = this._reader.consumeString(right);\n                nesting--;\n                if (nesting === 0) {\n                    return;\n                }\n            }\n            else {\n                this._reader = this._reader.consumeCharacter();\n            }\n        }\n        fail$1(startPos, this._reader, 'unclosed-multiline-comment', []);\n    }\n    /* Read a pragma. A pragma is a comment delimited by the\n     * given left   / *\n     * and right    * /\n     * comment delimiters.\n     * It has N >= 0 parts delimited by the pragma delimiter   @\n     *   @part1@part2@...@partN@\n     */\n    _readInvisiblePragma(left, right, pragmaDelim) {\n        const pragma = [];\n        const startPos = this._reader;\n        this._reader = this._reader.consumeInvisibleString(left);\n        this._reader = this._reader.consumeInvisibleString(pragmaDelim);\n        while (!this._reader.eof()) {\n            pragma.push(this._readInvisibleStringUntilDelimiter(pragmaDelim));\n            this._reader = this._reader.consumeInvisibleString(pragmaDelim);\n            if (this._reader.startsWith(right)) {\n                this._reader = this._reader.consumeInvisibleString(right);\n                return pragma;\n            }\n        }\n        fail$1(startPos, this._reader, 'unclosed-multiline-comment', []);\n    }\n    /* Read an invisible string until the given delimiter is found */\n    _readInvisibleStringUntilDelimiter(delimiter) {\n        const startPos = this._reader;\n        const result = [];\n        while (!this._reader.eof()) {\n            if (this._reader.peek() === delimiter) {\n                return result.join('');\n            }\n            result.push(this._reader.peek());\n            this._reader = this._reader.consumeInvisibleCharacter();\n        }\n        fail$1(startPos, this._reader, 'unclosed-multiline-comment', []);\n    }\n    _evaluatePragma(startPos, pragma) {\n        if (pragma.length === 0) {\n            this._emitWarning(startPos, this._reader, 'empty-pragma', []);\n        }\n        else if (pragma[0] === 'BEGIN_REGION') {\n            const region = pragma[1];\n            this._reader = this._reader.beginRegion(region);\n        }\n        else if (pragma[0] === 'END_REGION') {\n            this._reader = this._reader.endRegion();\n        }\n        else if (pragma[0] === 'ATTRIBUTE' && pragma.length >= 2) {\n            const key = pragma[1];\n            const value = pragma.slice(2, pragma.length).join('@');\n            this.setAttribute(key, value);\n        }\n        else if (pragma[0] === 'LANGUAGE' && pragma.length === 2) {\n            const languageOption = pragma[1];\n            this.addLanguageOption(languageOption);\n        }\n        else {\n            this._emitWarning(startPos, this._reader, 'unknown-pragma', [pragma[0]]);\n        }\n    }\n    _emitWarning(startPos, endPos, reason, args) {\n        this._warnings.push(new GbsWarning(startPos, endPos, reason, args));\n    }\n    /* Check that reading a delimiter keeps the delimiter stack balanced. */\n    _checkBalancedDelimiters(token) {\n        if (token.tag === T_EOF && this._delimiterStack.length > 0) {\n            const openingDelimiter = this._delimiterStack.pop();\n            fail$1(openingDelimiter.startPos, openingDelimiter.endPos, 'unmatched-opening-delimiter', [openingDelimiter.value]);\n        }\n        else if (token.tag === T_LPAREN || token.tag === T_LBRACE || token.tag === T_LBRACK) {\n            this._delimiterStack.push(token);\n        }\n        else if (token.tag === T_RPAREN || token.tag === T_RBRACE || token.tag === T_RBRACK) {\n            if (this._delimiterStack.length === 0) {\n                fail$1(token.startPos, token.endPos, 'unmatched-closing-delimiter', [token.value]);\n            }\n            const openingDelimiter = this._delimiterStack.pop();\n            if (CLOSING_DELIMITERS[openingDelimiter.value] !== token.value) {\n                fail$1(openingDelimiter.startPos, openingDelimiter.endPos, 'unmatched-opening-delimiter', [openingDelimiter.value]);\n            }\n        }\n    }\n    /*\n     * Interface for handling attributes.\n     *\n     * The pragma ATTRIBUTE@key@value\n     * establishes the attribute given by <key> to <value>.\n     *\n     * Whenever the parser finds a definition of the following kinds:\n     *   procedure\n     *   function\n     *   program\n     *   interactive program\n     *   type\n     * it gets decorated with the pending attributes.\n     */\n    getPendingAttributes() {\n        const a = this._pendingAttributes;\n        this._pendingAttributes = {};\n        return a;\n    }\n    // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n    setAttribute(key, value) {\n        this._pendingAttributes[key] = value;\n    }\n    /*\n     * Interface for handling language options.\n     *\n     * The pragma LANGUAGE@option sets the given option.\n     *\n     * The runner module reads these options to initialize the\n     * linter/compiler/runtime.\n     */\n    getLanguageOptions() {\n        return this._languageOptions;\n    }\n    addLanguageOption(option) {\n        if (LANGUAGE_OPTIONS.indexOf(option) !== -1) {\n            this._languageOptions.push(option);\n        }\n        else {\n            fail$1(this._reader, this._reader, 'unknown-language-option', [option]);\n        }\n    }\n}\n\n/* eslint-disable camelcase */\n// Only for typing purposes\n// eslint-disable-next-line @typescript-eslint/ban-types\nconst toFunc = (x) => x;\n// Only for typing purposes\n// eslint-disable-next-line @typescript-eslint/ban-types\nconst toStr = (x) => x;\nconst Infix = Symbol.for('Infix');\nconst InfixL = Symbol.for('InfixL');\nconst InfixR = Symbol.for('InfixR');\nconst Prefix = Symbol.for('Prefix');\nclass PrecedenceLevel {\n    /* Operators should be a dictionary mapping operator tags to\n     * their function names */\n    constructor(fixity, operators) {\n        this._fixity = fixity;\n        this._operators = operators;\n    }\n    get fixity() {\n        return this._fixity;\n    }\n    isOperator(token) {\n        return Symbol.keyFor(token.tag) in this._operators;\n    }\n    functionName(token) {\n        return new Token(T_LOWERID, this._operators[Symbol.keyFor(token.tag)], token.startPos, token.endPos);\n    }\n}\n/* OPERATORS is a list of precedence levels.\n * Precedence levels are ordered from lesser to greater precedence.\n */\nconst OPERATORS = [\n    /* Logical operators */\n    new PrecedenceLevel(InfixR, {\n        T_OR: '||'\n    }),\n    new PrecedenceLevel(InfixR, {\n        T_AND: '&&'\n    }),\n    new PrecedenceLevel(Prefix, {\n        T_NOT: 'not'\n    }),\n    /* Relational operators */\n    new PrecedenceLevel(Infix, {\n        T_EQ: '==',\n        T_NE: '/=',\n        T_LE: '<=',\n        T_GE: '>=',\n        T_LT: '<',\n        T_GT: '>'\n    }),\n    /* List concatenation */\n    new PrecedenceLevel(InfixL, {\n        T_CONCAT: '++'\n    }),\n    /* Additive operators */\n    new PrecedenceLevel(InfixL, {\n        T_PLUS: '+',\n        T_MINUS: '-'\n    }),\n    /* Multiplicative operators */\n    new PrecedenceLevel(InfixL, {\n        T_TIMES: '*'\n    }),\n    /* Division operators */\n    new PrecedenceLevel(InfixL, {\n        T_DIV: 'div',\n        T_MOD: 'mod'\n    }),\n    /* Exponential operators */\n    new PrecedenceLevel(InfixR, {\n        T_POW: '^'\n    }),\n    /* Unary minus */\n    new PrecedenceLevel(Prefix, {\n        T_MINUS: '-(unary)'\n    })\n];\nfunction fail(startPos, endPos, reason, args) {\n    throw new GbsSyntaxError(startPos, endPos, reason, args);\n}\n/* Represents a parser for a Gobstones/XGobstones program.\n * It is structured as a straightforward recursive-descent parser.\n *\n * The parameter 'input' may be either a string or a dictionary\n * mapping filenames to strings.\n *\n * All the \"parseFoo\" methods agree to the following convention:\n * - parseFoo returns an AST for a Foo construction,\n * - parseFoo consumes a fragment of the input by successively requesting\n *   the next token from the lexer,\n * - when calling parseFoo, the current token should already be located\n *   on the first token of the corresponding construction,\n * - when parseFoo returns, the current token is already located on\n *   the following token, after the corresponding construction.\n */\nclass Parser {\n    constructor(input) {\n        this._lexer = new Lexer(input);\n        this._nextToken();\n    }\n    /* Return the AST that results from parsing a full program */\n    parse() {\n        const definitions = [];\n        while (this._currentToken.tag !== T_EOF) {\n            definitions.push(this._parseDefinition());\n        }\n        return new ASTMain(definitions);\n    }\n    /* Return the list of all language options collected by the tokenizer.\n     * Language options are set by the LANGUAGE pragma. */\n    getLanguageOptions() {\n        return this._lexer.getLanguageOptions();\n    }\n    /** Definitions **/\n    _parseDefinition() {\n        switch (this._currentToken.tag) {\n            case T_PROGRAM:\n                return this._parseDefProgram();\n            case T_INTERACTIVE:\n                return this._parseDefInteractiveProgram();\n            case T_PROCEDURE:\n                return this._parseDefProcedure();\n            case T_FUNCTION:\n                return this._parseDefFunction();\n            case T_TYPE:\n                return this._parseDefType();\n            default:\n                fail(this._currentToken.startPos, this._currentToken.endPos, 'expected-but-found', [\n                    i18n('definition'),\n                    i18n(Symbol.keyFor(this._currentToken.tag))\n                ]);\n        }\n    }\n    _parseDefProgram() {\n        const startPos = this._currentToken.startPos;\n        this._match(T_PROGRAM);\n        const attributes = this._lexer.getPendingAttributes();\n        const block = this._parseStmtBlock();\n        const result = new ASTDefProgram(block);\n        result.startPos = startPos;\n        result.endPos = block.endPos;\n        result.attributes = attributes;\n        return result;\n    }\n    _parseDefInteractiveProgram() {\n        const startPos = this._currentToken.startPos;\n        this._match(T_INTERACTIVE);\n        this._match(T_PROGRAM);\n        const attributes = this._lexer.getPendingAttributes();\n        this._match(T_LBRACE);\n        const branches = this._parseSwitchBranches();\n        const endPos = this._currentToken.startPos;\n        this._match(T_RBRACE);\n        const result = new ASTDefInteractiveProgram(branches);\n        result.startPos = startPos;\n        result.endPos = endPos;\n        result.attributes = attributes;\n        return result;\n    }\n    _parseDefProcedure() {\n        const startPos = this._currentToken.startPos;\n        this._match(T_PROCEDURE);\n        const name = this._parseUpperid();\n        this._match(T_LPAREN);\n        const parameters = this._parseLoweridSeq();\n        this._match(T_RPAREN);\n        const attributes = this._lexer.getPendingAttributes();\n        const block = this._parseStmtBlock();\n        const result = new ASTDefProcedure(name, parameters, block);\n        result.startPos = startPos;\n        result.endPos = block.endPos;\n        result.attributes = attributes;\n        return result;\n    }\n    _parseDefFunction() {\n        const startPos = this._currentToken.startPos;\n        this._match(T_FUNCTION);\n        const name = this._currentToken;\n        this._match(T_LOWERID);\n        this._match(T_LPAREN);\n        const parameters = this._parseLoweridSeq();\n        this._match(T_RPAREN);\n        const attributes = this._lexer.getPendingAttributes();\n        const block = this._parseStmtBlock();\n        const result = new ASTDefFunction(name, parameters, block);\n        result.startPos = startPos;\n        result.endPos = block.endPos;\n        result.attributes = attributes;\n        return result;\n    }\n    _parseDefType() {\n        const startPos = this._currentToken.startPos;\n        this._match(T_TYPE);\n        const typeName = this._parseUpperid();\n        this._match(T_IS);\n        switch (this._currentToken.tag) {\n            case T_RECORD:\n                return this._parseDefTypeRecord(startPos, typeName);\n            case T_VARIANT:\n                return this._parseDefTypeVariant(startPos, typeName);\n            default:\n                fail(this._currentToken.startPos, this._currentToken.endPos, 'expected-but-found', [\n                    toFunc(i18n('<alternative>'))([i18n('T_RECORD'), i18n('T_VARIANT')]),\n                    i18n(Symbol.keyFor(this._currentToken.tag))\n                ]);\n        }\n    }\n    _parseDefTypeRecord(startPos, typeName) {\n        this._match(T_RECORD);\n        const attributes = this._lexer.getPendingAttributes();\n        this._match(T_LBRACE);\n        const fieldNames = this._parseFieldNames();\n        const endPos = this._currentToken.startPos;\n        this._matchExpected(T_RBRACE, [T_FIELD, T_RBRACE]);\n        const result = new ASTDefType(typeName, [\n            new ASTConstructorDeclaration(typeName, fieldNames)\n        ]);\n        result.startPos = startPos;\n        result.endPos = endPos;\n        result.attributes = attributes;\n        return result;\n    }\n    _parseDefTypeVariant(startPos, typeName) {\n        const constructorDeclarations = [];\n        this._match(T_VARIANT);\n        const attributes = this._lexer.getPendingAttributes();\n        this._match(T_LBRACE);\n        while (this._currentToken.tag === T_CASE) {\n            constructorDeclarations.push(this._parseConstructorDeclaration());\n        }\n        const endPos = this._currentToken.startPos;\n        this._matchExpected(T_RBRACE, [T_CASE, T_RBRACE]);\n        const result = new ASTDefType(typeName, constructorDeclarations);\n        result.startPos = startPos;\n        result.endPos = endPos;\n        result.attributes = attributes;\n        return result;\n    }\n    _parseConstructorDeclaration() {\n        const startPos = this._currentToken.startPos;\n        this._match(T_CASE);\n        const constructorName = this._parseUpperid();\n        this._match(T_LBRACE);\n        const fieldNames = this._parseFieldNames();\n        const endPos = this._currentToken.startPos;\n        this._matchExpected(T_RBRACE, [T_FIELD, T_RBRACE]);\n        const result = new ASTConstructorDeclaration(constructorName, fieldNames);\n        result.startPos = startPos;\n        result.endPos = endPos;\n        return result;\n    }\n    _parseFieldNames() {\n        const fieldNames = [];\n        while (this._currentToken.tag === T_FIELD) {\n            this._match(T_FIELD);\n            fieldNames.push(this._parseLowerid());\n        }\n        return fieldNames;\n    }\n    /** Statements **/\n    /* Statement, optionally followed by semicolon */\n    _parseStatement() {\n        const statement = this._parsePureStatement();\n        if (this._currentToken.tag === T_SEMICOLON) {\n            this._match(T_SEMICOLON);\n        }\n        return statement;\n    }\n    /* Statement (not followed by semicolon) */\n    _parsePureStatement() {\n        switch (this._currentToken.tag) {\n            case T_ELLIPSIS:\n                return this._parseStmtEllipsis();\n            case T_RETURN:\n                return this._parseStmtReturn();\n            case T_IF:\n                return this._parseStmtIf(true /* expectInitialIf */);\n            case T_REPEAT:\n                return this._parseStmtRepeat();\n            case T_FOREACH:\n                return this._parseStmtForeach();\n            case T_WHILE:\n                return this._parseStmtWhile();\n            case T_SWITCH:\n                return this._parseStmtSwitch();\n            case T_LET:\n                return this._parseStmtLet();\n            case T_LBRACE:\n                return this._parseStmtBlock();\n            case T_LOWERID:\n                return this._parseStmtAssignVariable();\n            case T_UPPERID:\n                return this._parseStmtProcedureCall();\n            case T_LPAREN:\n                /* Special error for rejecting tuple assignments\n                 *   (x1, ..., xN) := expression\n                 * in favour of\n                 *   let (x1, ..., xN) := expression\n                 */\n                fail(this._currentToken.startPos, this._currentToken.endPos, 'obsolete-tuple-assignment', []);\n                return;\n            default:\n                fail(this._currentToken.startPos, this._currentToken.endPos, 'expected-but-found', [\n                    i18n('statement'),\n                    i18n(Symbol.keyFor(this._currentToken.tag))\n                ]);\n        }\n    }\n    _parseStmtBlock() {\n        const startPos = this._currentToken.startPos;\n        const statements = [];\n        this._match(T_LBRACE);\n        while (this._currentToken.tag !== T_RBRACE) {\n            statements.push(this._parseStatement());\n            if (this._currentToken.tag === T_SEMICOLON) {\n                this._match(T_SEMICOLON);\n            }\n        }\n        const endPos = this._currentToken.startPos;\n        this._match(T_RBRACE);\n        const result = new ASTStmtBlock(statements);\n        result.startPos = startPos;\n        result.endPos = endPos;\n        return result;\n    }\n    _parseStmtEllipsis() {\n        const startPos = this._currentToken.startPos;\n        this._match(T_ELLIPSIS);\n        const result = new ASTStmtProcedureCall(new Token(T_UPPERID, toStr(i18n('PRIM:BOOM')), startPos, startPos), [new ASTExprConstantString(new Token(T_STRING, toStr(i18n('errmsg:ellipsis'))))]);\n        result.startPos = startPos;\n        result.endPos = this._currentToken.startPos;\n        return result;\n    }\n    _parseStmtReturn() {\n        const startPos = this._currentToken.startPos;\n        this._match(T_RETURN);\n        const tuple = this._parseExprTuple(false /* possiblyEmpty */);\n        const result = new ASTStmtReturn(tuple);\n        result.startPos = startPos;\n        result.endPos = tuple.endPos;\n        return result;\n    }\n    _parseStmtIf(expectInitialIf) {\n        const startPos = this._currentToken.startPos;\n        if (expectInitialIf) {\n            this._match(T_IF);\n        }\n        this._match(T_LPAREN);\n        const condition = this._parseExpression();\n        this._match(T_RPAREN);\n        /* Optional 'then' */\n        if (this._currentToken.tag === T_THEN) {\n            this._match(T_THEN);\n        }\n        const thenBlock = this._parseStmtBlock();\n        let endPos;\n        let elseBlock;\n        if (this._currentToken.tag === T_ELSEIF) {\n            this._match(T_ELSEIF);\n            elseBlock = this._parseStmtIf(false /* expectInitialIf */);\n            endPos = elseBlock.endPos;\n        }\n        else if (this._currentToken.tag === T_ELSE) {\n            this._match(T_ELSE);\n            elseBlock = this._parseStmtBlock();\n            endPos = elseBlock.endPos;\n        }\n        else {\n            elseBlock = undefined;\n            endPos = thenBlock.endPos;\n        }\n        const result = new ASTStmtIf(condition, thenBlock, elseBlock);\n        result.startPos = startPos;\n        result.endPos = endPos;\n        return result;\n    }\n    _parseStmtRepeat() {\n        const startPos = this._currentToken.startPos;\n        this._match(T_REPEAT);\n        this._match(T_LPAREN);\n        const times = this._parseExpression();\n        this._match(T_RPAREN);\n        const body = this._parseStmtBlock();\n        const result = new ASTStmtRepeat(times, body);\n        result.startPos = startPos;\n        result.endPos = body.endPos;\n        return result;\n    }\n    _parseStmtForeach() {\n        const startPos = this._currentToken.startPos;\n        this._match(T_FOREACH);\n        const pattern = this._parsePattern();\n        this._match(T_IN);\n        const range = this._parseExpression();\n        const body = this._parseStmtBlock();\n        const result = new ASTStmtForeach(pattern, range, body);\n        result.startPos = startPos;\n        result.endPos = body.endPos;\n        return result;\n    }\n    _parseStmtWhile() {\n        const startPos = this._currentToken.startPos;\n        this._match(T_WHILE);\n        this._match(T_LPAREN);\n        const condition = this._parseExpression();\n        this._match(T_RPAREN);\n        const body = this._parseStmtBlock();\n        const result = new ASTStmtWhile(condition, body);\n        result.startPos = startPos;\n        result.endPos = body.endPos;\n        return result;\n    }\n    _parseStmtSwitch() {\n        const startPos = this._currentToken.startPos;\n        this._match(T_SWITCH);\n        this._match(T_LPAREN);\n        const subject = this._parseExpression();\n        this._match(T_RPAREN);\n        if (this._currentToken.tag === T_TO) {\n            this._match(T_TO);\n        }\n        this._match(T_LBRACE);\n        const branches = this._parseSwitchBranches();\n        const endPos = this._currentToken.startPos;\n        this._match(T_RBRACE);\n        const result = new ASTStmtSwitch(subject, branches);\n        result.startPos = startPos;\n        result.endPos = endPos;\n        return result;\n    }\n    _parseStmtLet() {\n        const startPos = this._currentToken.startPos;\n        this._match(T_LET);\n        let result;\n        if (this._currentToken.tag === T_LOWERID) {\n            result = this._parseStmtAssignVariable();\n        }\n        else if (this._currentToken.tag === T_LPAREN) {\n            result = this._parseStmtAssignTuple();\n        }\n        else {\n            fail(this._currentToken.startPos, this._currentToken.endPos, 'expected-but-found', [\n                toFunc(i18n('<alternative>'))(i18n('T_LOWERID'), i18n('T_LPAREN')),\n                toStr(i18n(Symbol.keyFor(this._currentToken.tag)))\n            ]);\n        }\n        result.startPos = startPos;\n        return result;\n    }\n    _parseStmtAssignVariable() {\n        const variable = this._parseLowerid();\n        this._match(T_ASSIGN);\n        const value = this._parseExpression();\n        const result = new ASTStmtAssignVariable(variable, value);\n        result.startPos = variable.startPos;\n        result.endPos = value.endPos;\n        return result;\n    }\n    _parseStmtAssignTuple() {\n        const startPos = this._currentToken.startPos;\n        this._match(T_LPAREN);\n        const variables = this._parseLoweridSeq();\n        if (variables.length === 1) {\n            fail(startPos, this._currentToken.endPos, 'assignment-tuple-cannot-be-singleton', []);\n        }\n        this._match(T_RPAREN);\n        this._match(T_ASSIGN);\n        const value = this._parseExpression();\n        const result = new ASTStmtAssignTuple(variables, value);\n        result.startPos = startPos;\n        result.endPos = value.endPos;\n        return result;\n    }\n    _parseStmtProcedureCall() {\n        const procedureName = this._parseUpperid();\n        this._match(T_LPAREN);\n        const args = this._parseDelimitedSeq(T_RPAREN, T_COMMA, () => this._parseExpression());\n        const endPos = this._currentToken.startPos;\n        this._match(T_RPAREN);\n        const result = new ASTStmtProcedureCall(procedureName, args);\n        result.startPos = procedureName.startPos;\n        result.endPos = endPos;\n        return result;\n    }\n    /** Patterns **/\n    _parsePattern() {\n        switch (this._currentToken.tag) {\n            case T_UNDERSCORE:\n                return this._parsePatternWildcard();\n            case T_LOWERID:\n                return this._parsePatternVariable();\n            case T_NUM:\n            case T_MINUS:\n                return this._parsePatternNumber();\n            case T_UPPERID:\n                return this._parsePatternStructure();\n            case T_LPAREN:\n                return this._parsePatternTuple();\n            case T_TIMEOUT:\n                return this._parsePatternTimeout();\n            default:\n                fail(this._currentToken.startPos, this._currentToken.endPos, 'expected-but-found', [\n                    i18n('pattern'),\n                    i18n(Symbol.keyFor(this._currentToken.tag))\n                ]);\n        }\n    }\n    _parsePatternWildcard() {\n        const startPos = this._currentToken.startPos;\n        this._match(T_UNDERSCORE);\n        const result = new ASTPatternWildcard();\n        const endPos = startPos;\n        result.startPos = startPos;\n        result.endPos = endPos;\n        return result;\n    }\n    _parsePatternVariable() {\n        const startPos = this._currentToken.startPos;\n        const id = this._parseLowerid();\n        const result = new ASTPatternVariable(id);\n        result.startPos = startPos;\n        result.endPos = id.endPos;\n        return result;\n    }\n    _parsePatternNumber() {\n        const startPos = this._currentToken.startPos;\n        let sign = '';\n        if (this._currentToken.tag === T_MINUS) {\n            this._match(T_MINUS);\n            sign = '-';\n        }\n        let number = this._currentToken;\n        this._match(T_NUM);\n        const value = sign + number.value;\n        if (value === '-0') {\n            fail(startPos, number.endPos, 'pattern-number-cannot-be-negative-zero', []);\n        }\n        number = new Token(T_NUM, value, number.startPos, number.endPos);\n        const result = new ASTPatternNumber(number);\n        result.startPos = startPos;\n        result.endPos = number.endPos;\n        return result;\n    }\n    _parsePatternStructure() {\n        const startPos = this._currentToken.startPos;\n        let endPos = this._currentToken.startPos;\n        const constructor = this._parseUpperid();\n        let parameters;\n        if (this._currentToken.tag === T_LPAREN) {\n            this._match(T_LPAREN);\n            parameters = this._parseLoweridSeq();\n            endPos = this._currentToken.startPos;\n            this._match(T_RPAREN);\n        }\n        else {\n            parameters = [];\n        }\n        const result = new ASTPatternStructure(constructor, parameters);\n        result.startPos = startPos;\n        result.endPos = endPos;\n        return result;\n    }\n    _parsePatternTuple() {\n        const startPos = this._currentToken.startPos;\n        this._match(T_LPAREN);\n        const parameters = this._parseLoweridSeq();\n        if (parameters.length === 1) {\n            fail(startPos, this._currentToken.endPos, 'pattern-tuple-cannot-be-singleton', []);\n        }\n        const endPos = this._currentToken.startPos;\n        this._match(T_RPAREN);\n        const result = new ASTPatternTuple(parameters);\n        result.startPos = startPos;\n        result.endPos = endPos;\n        return result;\n    }\n    _parsePatternTimeout() {\n        const startPos = this._currentToken.startPos;\n        this._match(T_TIMEOUT);\n        this._match(T_LPAREN);\n        const timeout = this._currentToken;\n        this._match(T_NUM);\n        const endPos = this._currentToken.startPos;\n        this._match(T_RPAREN);\n        const result = new ASTPatternTimeout(timeout);\n        result.startPos = startPos;\n        result.endPos = endPos;\n        return result;\n    }\n    /** Expressions **/\n    _parseExpression() {\n        return this._parseExprOperator(0);\n    }\n    /* Read an expression of the given level.\n     *\n     * If the list OPERATORS of precedence levels has N elements, then:\n     * - Expressions of level 0 are arbitrary expressions.\n     * - Expressions of level N are atomic expressions.\n     * - In general, expressions of level I involve operators\n     *   of levels I, I+1, ..., N-1,\n     *   and they can only include operators of the lower levels\n     *   by surrounding them in parentheses.\n     */\n    _parseExprOperator(level) {\n        if (level === OPERATORS.length) {\n            return this._parseExprAtom();\n        }\n        switch (OPERATORS[level].fixity) {\n            case Infix:\n                return this._parseExprOperatorInfix(level);\n            case InfixL:\n                return this._parseExprOperatorInfixL(level);\n            case InfixR:\n                return this._parseExprOperatorInfixR(level);\n            case Prefix:\n                return this._parseExprOperatorPrefix(level);\n            default:\n                throw Error('Invalid operator.');\n        }\n    }\n    _parseExprOperatorInfix(level) {\n        const left = this._parseExprOperator(level + 1);\n        if (OPERATORS[level].isOperator(this._currentToken)) {\n            const op = this._currentToken;\n            this._nextToken();\n            const right = this._parseExprOperator(level + 1);\n            /* Check that it is not used associatively */\n            if (OPERATORS[level].isOperator(this._currentToken)) {\n                fail(this._currentToken.startPos, this._currentToken.endPos, 'operators-are-not-associative', [i18n(Symbol.keyFor(op.tag)), i18n(Symbol.keyFor(this._currentToken.tag))]);\n            }\n            const result = new ASTExprFunctionCall(OPERATORS[level].functionName(op), [\n                left,\n                right\n            ]);\n            result.startPos = left.startPos;\n            result.endPos = right.endPos;\n            return result;\n        }\n        else {\n            return left;\n        }\n    }\n    _parseExprOperatorInfixL(level) {\n        let result = this._parseExprOperator(level + 1);\n        while (OPERATORS[level].isOperator(this._currentToken)) {\n            const op = this._currentToken;\n            this._nextToken();\n            const right = this._parseExprOperator(level + 1);\n            const result2 = new ASTExprFunctionCall(OPERATORS[level].functionName(op), [\n                result,\n                right\n            ]);\n            result2.startPos = result.startPos;\n            result2.endPos = right.endPos;\n            result = result2;\n        }\n        return result;\n    }\n    _parseExprOperatorInfixR(level) {\n        const left = this._parseExprOperator(level + 1);\n        if (OPERATORS[level].isOperator(this._currentToken)) {\n            const op = this._currentToken;\n            this._nextToken();\n            const right = this._parseExprOperator(level); /* same level */\n            const result = new ASTExprFunctionCall(OPERATORS[level].functionName(op), [\n                left,\n                right\n            ]);\n            result.startPos = left.startPos;\n            result.endPos = right.endPos;\n            return result;\n        }\n        else {\n            return left;\n        }\n    }\n    _parseExprOperatorPrefix(level) {\n        if (OPERATORS[level].isOperator(this._currentToken)) {\n            const op = this._currentToken;\n            this._nextToken();\n            const inner = this._parseExprOperator(level); /* same level */\n            const result = new ASTExprFunctionCall(OPERATORS[level].functionName(op), [inner]);\n            result.startPos = op.startPos;\n            result.endPos = inner.endPos;\n            return result;\n        }\n        else {\n            return this._parseExprOperator(level + 1);\n        }\n    }\n    /* Parse an atomic expression.\n     * I.e. all the operators must be surrounded by parentheses */\n    _parseExprAtom() {\n        switch (this._currentToken.tag) {\n            case T_ELLIPSIS:\n                return this._parseExprEllipsis();\n            case T_LOWERID:\n                return this._parseExprVariableOrFunctionCall();\n            case T_NUM:\n                return this._parseExprConstantNumber();\n            case T_STRING:\n                return this._parseExprConstantString();\n            case T_CHOOSE:\n                return this._parseExprChoose(true /* expectInitialChoose */);\n            case T_MATCHING:\n                return this._parseExprMatching();\n            case T_UPPERID:\n                return this._parseExprStructureOrStructureUpdate();\n            case T_LPAREN:\n                return this._parseExprTuple(true /* possiblyEmpty */);\n            case T_LBRACK:\n                return this._parseExprListOrRange();\n            default:\n                fail(this._currentToken.startPos, this._currentToken.endPos, 'expected-but-found', [\n                    i18n('expression'),\n                    i18n(Symbol.keyFor(this._currentToken.tag))\n                ]);\n        }\n    }\n    _parseExprEllipsis() {\n        const startPos = this._currentToken.startPos;\n        this._match(T_ELLIPSIS);\n        const result = new ASTExprFunctionCall(new Token(T_LOWERID, toStr(i18n('PRIM:boom')), startPos, startPos), [new ASTExprConstantString(new Token(T_STRING, toStr(i18n('errmsg:ellipsis'))))]);\n        result.startPos = startPos;\n        result.endPos = this._currentToken.startPos;\n        return result;\n    }\n    _parseExprVariableOrFunctionCall() {\n        const id = this._parseLowerid();\n        let result;\n        let endPos;\n        if (this._currentToken.tag === T_LPAREN) {\n            this._match(T_LPAREN);\n            const args = this._parseExpressionSeq(T_RPAREN);\n            result = new ASTExprFunctionCall(id, args);\n            endPos = this._currentToken.startPos;\n            this._match(T_RPAREN);\n        }\n        else {\n            result = new ASTExprVariable(id);\n            endPos = id.endPos;\n        }\n        result.startPos = id.startPos;\n        result.endPos = endPos;\n        return result;\n    }\n    _parseExprConstantNumber() {\n        const number = this._currentToken;\n        this._match(T_NUM);\n        const result = new ASTExprConstantNumber(number);\n        result.startPos = number.startPos;\n        result.endPos = number.endPos;\n        return result;\n    }\n    _parseExprConstantString() {\n        const string = this._currentToken;\n        this._match(T_STRING);\n        const result = new ASTExprConstantString(string);\n        result.startPos = string.startPos;\n        result.endPos = string.endPos;\n        return result;\n    }\n    _parseExprChoose(expectInitialChoose) {\n        const startPos = this._currentToken.startPos;\n        if (expectInitialChoose) {\n            this._match(T_CHOOSE);\n        }\n        const expr1 = this._parseExpression();\n        if (this._currentToken.tag === T_WHEN) {\n            this._match(T_WHEN);\n            this._match(T_LPAREN);\n            const condition = this._parseExpression();\n            this._match(T_RPAREN);\n            const expr2 = this._parseExprChoose(false /* expectInitialChoose */);\n            const result = new ASTExprChoose(condition, expr1, expr2);\n            result.startPos = startPos;\n            result.endPos = expr2.endPos;\n            return result;\n        }\n        else {\n            const endPos = this._currentToken.endPos;\n            this._match(T_OTHERWISE);\n            expr1.startPos = startPos;\n            expr1.endPos = endPos;\n            return expr1;\n        }\n    }\n    _parseExprMatching() {\n        const startPos = this._currentToken.startPos;\n        this._match(T_MATCHING);\n        this._match(T_LPAREN);\n        const subject = this._parseExpression();\n        this._match(T_RPAREN);\n        this._match(T_SELECT);\n        const branches = this._parseMatchingBranches();\n        const result = new ASTExprMatching(subject, branches);\n        result.startPos = startPos;\n        // result.endPos = result.endPos;\n        return result;\n    }\n    /*\n     * Parse any of the following constructions:\n     * (1) Structure with no arguments: \"Norte\"\n     * (2) Structure with no arguments and explicit parentheses: \"Nil()\"\n     * (3) Structure with arguments: \"Coord(x <- 1, y <- 2)\"\n     * (4) Update structure with arguments: \"Coord(expression | x <- 2)\"\n     *\n     * Deciding between (3) and (4) unfortunately cannot be done with one\n     * token of lookahead, so after reading the constructor and a left\n     * parenthesis we resort to the following workaround:\n     *\n     * - Parse an expression.\n     * - If the next token is GETS (\"<-\") we are in case (3).\n     *   We must then ensure that the expression is just a variable\n     *   and recover its name.\n     * - If the next token is PIPE (\"|\") we are in case (4), and we go on.\n     */\n    _parseExprStructureOrStructureUpdate() {\n        const constructorName = this._parseUpperid();\n        if (this._currentToken.tag !== T_LPAREN) {\n            /* Structure with no arguments, e.g. \"Norte\" */\n            const result = new ASTExprStructure(constructorName, []);\n            result.startPos = constructorName.startPos;\n            result.endPos = constructorName.endPos;\n            return result;\n        }\n        this._match(T_LPAREN);\n        if (this._currentToken.tag === T_RPAREN) {\n            /* Structure with no arguments with explicit parentheses,\n             * e.g. \"Nil()\" */\n            const result = new ASTExprStructure(constructorName, []);\n            const endPos = this._currentToken.startPos;\n            this._match(T_RPAREN);\n            result.startPos = constructorName.startPos;\n            result.endPos = endPos;\n            return result;\n        }\n        const subject = this._parseExpression();\n        switch (this._currentToken.tag) {\n            case T_GETS:\n                if (subject.tag !== N_ExprVariable) {\n                    fail(this._currentToken.startPos, this._currentToken.endPos, 'expected-but-found', [i18n('T_PIPE'), i18n('T_GETS')]);\n                    return;\n                }\n                return this._parseStructure(constructorName, subject.variableName);\n            case T_PIPE:\n                return this._parseStructureUpdate(constructorName, subject);\n            case T_COMMA:\n            case T_RPAREN:\n                /* Issue a specific error message to deal with a common\n                 * programming error, namely calling a procedure name\n                 * where an expression is expected. */\n                fail(constructorName.startPos, constructorName.endPos, 'expected-but-found', [\n                    i18n('expression'),\n                    i18n('procedure call')\n                ]);\n                return;\n            default: {\n                let expected;\n                if (subject.tag === N_ExprVariable) {\n                    expected = toFunc(i18n('<alternative>'))([i18n('T_GETS'), i18n('T_PIPE')]);\n                }\n                else {\n                    expected = toStr(i18n('T_PIPE'));\n                }\n                fail(constructorName.startPos, constructorName.endPos, 'expected-but-found', [\n                    expected,\n                    i18n(Symbol.keyFor(this._currentToken.tag))\n                ]);\n            }\n        }\n    }\n    /* Parse a structure   A(x1 <- expr1, ..., xN <- exprN)\n     * where N >= 1,\n     * assuming that  \"A(x1\" has already been read.\n     *\n     * - constructorName and fieldName1 correspond to \"A\" and \"x1\"\n     *   respectively.\n     */\n    _parseStructure(constructorName, fieldName1) {\n        /* Read \"<- expr1\" */\n        this._match(T_GETS);\n        const value1 = this._parseExpression();\n        const fieldBinding1 = new ASTFieldBinding(fieldName1, value1);\n        fieldBinding1.startPos = fieldName1.startPos;\n        fieldBinding1.endPos = value1.endPos;\n        /* Read \"x2 <- expr2, ..., xN <- exprN\" (this might be empty) */\n        const fieldBindings = this._parseNonEmptyDelimitedSeq(T_RPAREN, T_COMMA, [fieldBinding1], () => this._parseFieldBinding());\n        /* Read \")\" */\n        const endPos = this._currentToken.startPos;\n        this._match(T_RPAREN);\n        /* Return an ExprStructure node */\n        const result = new ASTExprStructure(constructorName, fieldBindings);\n        result.startPos = constructorName.startPos;\n        result.endPos = endPos;\n        return result;\n    }\n    /* Parse a structure update  A(e | x1 <- expr1, ..., xN <- exprN)\n     * where N >= 1,\n     * assuming that \"A(e\" has already been read.\n     *\n     * constructorName and original correspond to \"A\" and \"e\"\n     * respectively.\n     */\n    _parseStructureUpdate(constructorName, original) {\n        /* Read \"|\" */\n        this._match(T_PIPE);\n        /* Read \"x2 <- expr2, ..., xN <- exprN\" (this might be empty) */\n        const fieldBindings = this._parseDelimitedSeq(T_RPAREN, T_COMMA, () => this._parseFieldBinding());\n        /* Read \")\" */\n        const endPos = this._currentToken.startPos;\n        this._match(T_RPAREN);\n        /* Return an ExprStructureUpdate node */\n        const result = new ASTExprStructureUpdate(constructorName, original, fieldBindings);\n        result.startPos = constructorName.startPos;\n        result.endPos = endPos;\n        return result;\n    }\n    /* Read a list\n     *   [expr1, ..., exprN]\n     * a range expression\n     *   [first .. last]\n     * or a range expression with step\n     *   [first, second .. last]\n     */\n    _parseExprListOrRange() {\n        const startPos = this._currentToken.startPos;\n        this._match(T_LBRACK);\n        if (this._currentToken.tag === T_RBRACK) {\n            return this._parseExprListRemainder(startPos, []);\n        }\n        const first = this._parseExpression();\n        switch (this._currentToken.tag) {\n            case T_RBRACK:\n                return this._parseExprListRemainder(startPos, [first]);\n            case T_RANGE:\n                return this._parseExprRange(startPos, first);\n            case T_COMMA: {\n                this._match(T_COMMA);\n                const second = this._parseExpression();\n                switch (this._currentToken.tag) {\n                    case T_RBRACK:\n                    case T_COMMA:\n                        return this._parseExprListRemainder(startPos, [first, second]);\n                    case T_RANGE:\n                        return this._parseExprRange(startPos, first, second);\n                    default:\n                        fail(this._currentToken.startPos, this._currentToken.endPos, 'expected-but-found', [\n                            toFunc(i18n('<alternative>'))([\n                                i18n('T_COMMA'),\n                                i18n('T_RANGE'),\n                                i18n('T_RBRACK')\n                            ]),\n                            i18n(Symbol.keyFor(this._currentToken.tag))\n                        ]);\n                        return;\n                }\n            }\n            default:\n                fail(this._currentToken.startPos, this._currentToken.endPos, 'expected-but-found', [\n                    toFunc(i18n('<alternative>'))([\n                        i18n('T_COMMA'),\n                        i18n('T_RANGE'),\n                        i18n('T_RBRACK')\n                    ]),\n                    i18n(Symbol.keyFor(this._currentToken.tag))\n                ]);\n                return;\n        }\n    }\n    /* Read the end of a list \"[expr1, ..., exprN]\" assumming we have\n     * already read \"[expr1, ..., exprK\" up to some point K >= 1.\n     * - startPos is the position of \"[\"\n     * - prefix is the list of elements we have already read\n     */\n    _parseExprListRemainder(startPos, prefix) {\n        const elements = this._parseNonEmptyDelimitedSeq(T_RBRACK, T_COMMA, prefix, () => this._parseExpression());\n        const endPos = this._currentToken.startPos;\n        this._match(T_RBRACK);\n        const result = new ASTExprList(elements);\n        result.startPos = startPos;\n        result.endPos = endPos;\n        return result;\n    }\n    /* Read a range \"[first..last]\" or \"[first,second..last]\"\n     * assumming we are left to read \"..last]\"\n     * - startPos is the position of \"[\".\n     * - second may be null */\n    _parseExprRange(startPos, first, second) {\n        this._match(T_RANGE);\n        const last = this._parseExpression();\n        const endPos = this._currentToken.startPos;\n        this._match(T_RBRACK);\n        const result = new ASTExprRange(first, second, last);\n        result.startPos = startPos;\n        result.endPos = endPos;\n        return result;\n    }\n    /* Read a list of expressions separated by commas and delimited\n     * by parentheses. If there is a single expression, return the\n     * expression itself. If there are 0 or >=2 expressions, return\n     * a tuple.\n     */\n    _parseExprTuple(possiblyEmpty) {\n        const startPos = this._currentToken.startPos;\n        this._match(T_LPAREN);\n        const expressionList = this._parseExpressionSeq(T_RPAREN);\n        const endPos = this._currentToken.startPos;\n        this._match(T_RPAREN);\n        if (!possiblyEmpty && expressionList.length === 0) {\n            fail(startPos, endPos, 'return-tuple-cannot-be-empty', []);\n        }\n        let result;\n        if (expressionList.length === 1) {\n            result = expressionList[0];\n        }\n        else {\n            result = new ASTExprTuple(expressionList);\n        }\n        result.startPos = startPos;\n        result.endPos = endPos;\n        return result;\n    }\n    /** SwitchBranch **/\n    _parseSwitchBranches() {\n        const branches = [];\n        while (this._currentToken.tag !== T_RBRACE) {\n            branches.push(this._parseSwitchBranch());\n        }\n        return branches;\n    }\n    _parseSwitchBranch() {\n        const pattern = this._parsePattern();\n        this._match(T_ARROW);\n        const body = this._parseStmtBlock();\n        const result = new ASTSwitchBranch(pattern, body);\n        result.startPos = pattern.startPos;\n        result.endPos = body.endPos;\n        return result;\n    }\n    /** MatchingBranch **/\n    _parseMatchingBranches() {\n        const branches = [];\n        while (this._currentToken.tag !== T_OTHERWISE) {\n            branches.push(this._parseMatchingBranch());\n        }\n        this._match(T_OTHERWISE);\n        return branches;\n    }\n    _parseMatchingBranch() {\n        const body = this._parseExpression();\n        switch (this._currentToken.tag) {\n            case T_ON: {\n                this._match(T_ON);\n                const pattern = this._parsePattern();\n                const result = new ASTMatchingBranch(pattern, body);\n                result.startPos = body.startPos;\n                result.endPos = pattern.endPos;\n                return result;\n            }\n            case T_OTHERWISE: {\n                const pattern = new ASTPatternWildcard();\n                pattern.startPos = this._currentToken.startPos;\n                pattern.endPos = this._currentToken.endPos;\n                const result = new ASTMatchingBranch(pattern, body);\n                result.startPos = body.startPos;\n                result.endPos = this._currentToken.endPos;\n                return result;\n            }\n            default:\n                fail(this._currentToken.startPos, this._currentToken.endPos, 'expected-but-found', [\n                    toFunc(i18n('<alternative>'))([i18n('T_ON'), i18n('T_OTHERWISE')]),\n                    i18n(Symbol.keyFor(this._currentToken.tag))\n                ]);\n        }\n    }\n    /** FieldBinding **/\n    _parseFieldBinding() {\n        const fieldName = this._parseLowerid();\n        this._match(T_GETS);\n        const value = this._parseExpression();\n        const result = new ASTFieldBinding(fieldName, value);\n        result.startPos = fieldName.startPos;\n        result.endPos = value.endPos;\n        return result;\n    }\n    /** Helpers **/\n    /* Advance to the next token */\n    _nextToken() {\n        this._currentToken = this._lexer.nextToken();\n    }\n    /* Check that the current token has the expected tag.\n     * Then advance to the next token. */\n    _match(tokenTag) {\n        if (this._currentToken.tag !== tokenTag) {\n            fail(this._currentToken.startPos, this._currentToken.endPos, 'expected-but-found', [\n                i18n(Symbol.keyFor(tokenTag)),\n                i18n(Symbol.keyFor(this._currentToken.tag))\n            ]);\n        }\n        this._nextToken();\n    }\n    /* Check that the current token has the expected tag.\n     * Then advance to the next token.\n     * Otherwise report that any of the alternatives in the tagList\n     * was expected.\n     */\n    _matchExpected(tokenTag, tagList) {\n        if (this._currentToken.tag !== tokenTag) {\n            fail(this._currentToken.startPos, this._currentToken.endPos, 'expected-but-found', [\n                toFunc(i18n('<alternative>'))(tagList.map((tag) => i18n(Symbol.keyFor(tag)))),\n                i18n(Symbol.keyFor(this._currentToken.tag))\n            ]);\n        }\n        this._nextToken();\n    }\n    /* Parse a delimited list:\n     *   rightDelimiter: token tag for the right delimiter\n     *   separator: token tag for the separator\n     *   parseElement: function that parses one element */\n    _parseDelimitedSeq(rightDelimiter, separator, parseElement) {\n        if (this._currentToken.tag === rightDelimiter) {\n            return []; /* Empty case */\n        }\n        const first = parseElement();\n        return this._parseNonEmptyDelimitedSeq(rightDelimiter, separator, [first], parseElement);\n    }\n    /* Parse a delimited list, assuming the first elements are already given.\n     *   rightDelimiter: token tag for the right delimiter\n     *   separator: token tag for the separator\n     *   prefix: non-empty list of all the first elements (already given)\n     *   parseElement: function that parses one element */\n    _parseNonEmptyDelimitedSeq(rightDelimiter, separator, prefix, parseElement) {\n        const list = prefix;\n        while (this._currentToken.tag === separator) {\n            this._match(separator);\n            list.push(parseElement());\n        }\n        if (this._currentToken.tag !== rightDelimiter) {\n            fail(this._currentToken.startPos, this._currentToken.endPos, 'expected-but-found', [\n                toFunc(i18n('<alternative>'))([\n                    i18n(Symbol.keyFor(separator)),\n                    i18n(Symbol.keyFor(rightDelimiter))\n                ]),\n                i18n(Symbol.keyFor(this._currentToken.tag))\n            ]);\n        }\n        return list;\n    }\n    _parseLowerid() {\n        const lowerid = this._currentToken;\n        this._match(T_LOWERID);\n        return lowerid;\n    }\n    _parseUpperid() {\n        const upperid = this._currentToken;\n        this._match(T_UPPERID);\n        return upperid;\n    }\n    _parseLoweridSeq() {\n        return this._parseDelimitedSeq(T_RPAREN, T_COMMA, () => this._parseLowerid());\n    }\n    /* Parse a list of expressions delimited by the given right delimiter\n     * e.g. T_RPAREN or T_RBRACK, without consuming the delimiter. */\n    _parseExpressionSeq(rightDelimiter) {\n        return this._parseDelimitedSeq(rightDelimiter, T_COMMA, () => this._parseExpression());\n    }\n}\n\nexport { ASTConstructorDeclaration, ASTDefFunction, ASTDefInteractiveProgram, ASTDefProcedure, ASTDefProgram, ASTDefType, ASTExprChoose, ASTExprConstantNumber, ASTExprConstantString, ASTExprFunctionCall, ASTExprList, ASTExprMatching, ASTExprRange, ASTExprStructure, ASTExprStructureUpdate, ASTExprTuple, ASTExprVariable, ASTFieldBinding, ASTMain, ASTMatchingBranch, ASTNode, ASTNodeWithBranches, ASTNodeWithPattern, ASTPatternNumber, ASTPatternStructure, ASTPatternTimeout, ASTPatternTuple, ASTPatternVariable, ASTPatternWildcard, ASTStmtAssignTuple, ASTStmtAssignVariable, ASTStmtBlock, ASTStmtForeach, ASTStmtIf, ASTStmtProcedureCall, ASTStmtRepeat, ASTStmtReturn, ASTStmtSwitch, ASTStmtWhile, ASTSwitchBranch, GbsInterpreterException, GbsRuntimeError, GbsSyntaxError, GbsWarning, Linter, LocalIndex, LocalParameter, LocalVariable, MultifileReader, N_ConstructorDeclaration, N_DefFunction, N_DefInteractiveProgram, N_DefProcedure, N_DefProgram, N_DefType, N_ExprChoose, N_ExprConstantNumber, N_ExprConstantString, N_ExprFunctionCall, N_ExprList, N_ExprMatching, N_ExprRange, N_ExprStructure, N_ExprStructureUpdate, N_ExprTuple, N_ExprVariable, N_FieldBinding, N_Main, N_MatchingBranch, N_PatternNumber, N_PatternStructure, N_PatternTimeout, N_PatternTuple, N_PatternVariable, N_PatternWildcard, N_StmtAssignTuple, N_StmtAssignVariable, N_StmtBlock, N_StmtForeach, N_StmtIf, N_StmtProcedureCall, N_StmtRepeat, N_StmtReturn, N_StmtSwitch, N_StmtWhile, N_SwitchBranch, Parser, SourceReader, SymbolTable, T_AND, T_ARROW, T_ASSIGN, T_CASE, T_CHOOSE, T_COMMA, T_CONCAT, T_DIV, T_ELLIPSIS, T_ELSE, T_ELSEIF, T_EOF, T_EQ, T_FIELD, T_FOREACH, T_FUNCTION, T_GE, T_GETS, T_GT, T_IF, T_IN, T_INTERACTIVE, T_IS, T_LBRACE, T_LBRACK, T_LE, T_LET, T_LOWERID, T_LPAREN, T_LT, T_MATCHING, T_MINUS, T_MOD, T_NE, T_NOT, T_NUM, T_ON, T_OR, T_OTHERWISE, T_PIPE, T_PLUS, T_POW, T_PROCEDURE, T_PROGRAM, T_RANGE, T_RBRACE, T_RBRACK, T_RECORD, T_REPEAT, T_RETURN, T_RPAREN, T_SELECT, T_SEMICOLON, T_STRING, T_SWITCH, T_THEN, T_TIMEOUT, T_TIMES, T_TO, T_TYPE, T_UNDERSCORE, T_UPPERID, T_VARIANT, T_WHEN, T_WHILE, Token, UnknownPosition };\n//# sourceMappingURL=index.js.map\n",null,null,null,null,null,null,null,null,null,null],"names":["keyword$1","pluralize$1","ordinalNumber","describeType","describeTypeSingular","typeAsNoun","typeAsQualifierSingular","typeAsQualifierPlural","listOfTypes","openingDelimiterName","formatTypes","LOCALE_ES","LOCALE_EN","keyword","toFunc$1","pluralize","LOCALE_PT","CURRENT_LANGUAGE","dictionaries","i18n","fail$1","toFunc","fail"],"mappings":"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"}