--- source: src/main.rs expression: parsed input_file: test-data/lua5.4-tests/calls.lua --- [ Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing functions and calls\"", ), ], ], ), ], line: 4, }, Variable { names: [ ( "debug", false, ), ], values: [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"debug\"", ), ], ], ), ], line: 6, }, ], ], line: 6, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Symbol( "1", ), Operator( ( "<", true, ), ), Symbol( "2", ), ], ], ), ], line: 10, }, Operator( ( "==", true, ), ), Symbol( "'boolean'", ), ], ], ), ], line: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Symbol( "true", ), ], ], ), ], line: 11, }, Operator( ( "==", true, ), ), Symbol( "'boolean'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Symbol( "false", ), ], ], ), ], line: 11, }, Operator( ( "==", true, ), ), Symbol( "'boolean'", ), ], ], ), ], line: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Symbol( "nil", ), ], ], ), ], line: 12, }, Operator( ( "==", true, ), ), Symbol( "'nil'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "3", ), ], ], ), ], line: 13, }, Operator( ( "==", true, ), ), Symbol( "'number'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Symbol( "'x'", ), ], ], ), ], line: 14, }, Operator( ( "==", true, ), ), Symbol( "'string'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Table { data: [], line: 15, column: 4, }, ], ], ), ], line: 15, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "type", ), ], line: 16, }, ], ], ), ], line: 16, }, Operator( ( "==", true, ), ), Symbol( "'function'", ), ], ], ), ], line: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "assert", ), ], line: 18, }, ], ], ), ], line: 18, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "print", ), ], line: 18, }, ], ], ), ], line: 18, }, ], ], ), ], line: 16, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "x", ], body: CodeBlock { start: 88, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ":", ), Symbol( "x", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 19, }, ], ], ), ], line: 19, }, ], ], ), ), ], end: 96, }, line: 19, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 20, }, ], ], ), ], line: 20, }, Operator( ( "==", true, ), ), Symbol( "'function'", ), ], ], ), ], line: 19, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "type", ), ], line: 21, }, ], ], ), ], line: 21, }, ], ], ), ], line: 20, }, Alter { names: [ Ident { expr: [ Symbol( "fact", ), ], line: 21, }, ], values: [ [ Symbol( "false", ), ], ], line: 26, column: 0, }, DoBlock( CodeBlock { start: 117, code: [ Variable { names: [ ( "res", false, ), ], values: [ [ Symbol( "1", ), ], ], line: 28, column: 0, }, Function { local: true, name: [ Symbol( "fact", ), ], args: [ "n", ], body: CodeBlock { start: 10, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 29, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "res", ), ], line: 29, }, ], ], ), ), ], end: 8, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 8, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "n", ), ], line: 30, }, Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "fact", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 30, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 30, }, ], ], ), ), ], end: 18, }, next: None, line: 31, column: 1, }, ), line: 31, column: 1, }, ], end: 29, }, line: 32, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "fact", ), Call( [ [ Symbol( "5", ), ], ], ), ], line: 33, }, Operator( ( "==", true, ), ), Symbol( "120", ), ], ], ), ], line: 32, }, ], end: 156, }, ), Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "fact", ), ], line: 35, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 34, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 35, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "i", ), ], ), [ Symbol( "10", ), ], ), ], line: 38, column: 7, }, ], ], line: 38, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "self", ), ], line: 38, }, ], values: [ [ Symbol( "20", ), ], ], line: 40, column: 0, }, Function { local: false, name: [ Symbol( "a", ), Symbol( ":", ), Symbol( "x", ), ], args: [ "x", ], body: CodeBlock { start: 179, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 40, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "self", ), Symbol( ".", ), Symbol( "i", ), ], line: 40, }, ], ], ), ), ], end: 186, }, line: 40, column: 14, }, Function { local: false, name: [ Symbol( "a", ), Symbol( ".", ), Symbol( "y", ), ], args: [ "x", ], body: CodeBlock { start: 193, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 41, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "self", ), ], line: 41, }, ], ], ), ), ], end: 198, }, line: 41, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ":", ), Symbol( "x", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 43, }, Operator( ( "+", true, ), ), Symbol( "10", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "y", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 43, }, ], ], ), ], line: 41, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "t", ), ], line: 43, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "i", ), ], ), [ Operator( ( "-", false, ), ), Symbol( "100", ), ], ), ], line: 45, column: 10, }, ], ], line: 45, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "\"t\"", ), ], ), Symbol( "]", ), Symbol( ".", ), Symbol( "x", ), ], line: 45, }, ], values: [ [ Lambda { args: [ "self", "a", "b", ], body: CodeBlock { start: 241, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "self", ), Symbol( ".", ), Symbol( "i", ), ], line: 46, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 46, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 46, }, ], ], ), ), ], end: 250, }, line: 46, column: 24, }, ], ], line: 46, column: 24, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "t", ), Symbol( ":", ), Symbol( "x", ), Call( [ [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), ], line: 48, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "95", ), ], ], ), ], line: 46, }, DoBlock( CodeBlock { start: 267, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Symbol( "0", ), ], ), ], line: 51, column: 8, }, ], ], line: 52, column: 0, }, Function { local: false, name: [ Symbol( "a", ), Symbol( ":", ), Symbol( "add", ), ], args: [ "x", ], body: CodeBlock { start: 15, code: [ Alter { names: [ Ident { expr: [ Symbol( "self", ), Symbol( ".", ), Symbol( "x", ), ], line: 52, }, Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "y", ), ], line: 52, }, ], values: [ [ Ident { expr: [ Symbol( "self", ), Symbol( ".", ), Symbol( "x", ), ], line: 52, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 52, }, ], [ Symbol( "20", ), ], ], line: 52, column: 16, }, Return( Some( [ [ Ident { expr: [ Symbol( "self", ), ], line: 52, }, ], ], ), ), ], end: 34, }, line: 52, column: 26, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ":", ), Symbol( "add", ), Call( [ [ Symbol( "10", ), ], ], ), Symbol( ":", ), Symbol( "add", ), Call( [ [ Symbol( "20", ), ], ], ), Symbol( ":", ), Symbol( "add", ), Call( [ [ Symbol( "30", ), ], ], ), Symbol( ".", ), Symbol( "x", ), ], line: 53, }, Operator( ( "==", true, ), ), Symbol( "60", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "y", ), ], line: 53, }, Operator( ( "==", true, ), ), Symbol( "20", ), ], ], ), ], line: 52, }, ], end: 331, }, ), Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [ ( Some( [ Symbol( "b", ), ], ), [ Table { data: [ ( Some( [ Symbol( "c", ), ], ), [ Table { data: [], line: 56, column: 11, }, ], ), ], line: 56, column: 12, }, ], ), ], line: 56, column: 13, }, ], ], line: 58, column: 0, }, Function { local: false, name: [ Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), Symbol( ".", ), Symbol( "c", ), Symbol( ".", ), Symbol( "f1", ), ], args: [ "x", ], body: CodeBlock { start: 355, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 58, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ), ], end: 360, }, line: 58, column: 16, }, Function { local: false, name: [ Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), Symbol( ".", ), Symbol( "c", ), Symbol( ":", ), Symbol( "f2", ), ], args: [ "x", "y", ], body: CodeBlock { start: 373, code: [ Alter { names: [ Ident { expr: [ Symbol( "self", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "x", ), ], line: 59, }, ], ), Symbol( "]", ), ], line: 59, }, ], values: [ [ Ident { expr: [ Symbol( "y", ), ], line: 59, }, ], ], line: 59, column: 6, }, ], end: 380, }, line: 59, column: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), Symbol( ".", ), Symbol( "c", ), Symbol( ".", ), Symbol( "f1", ), Call( [ [ Symbol( "4", ), ], ], ), ], line: 60, }, Operator( ( "==", true, ), ), Symbol( "5", ), ], ], ), ], line: 59, }, Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), Symbol( ".", ), Symbol( "c", ), Symbol( ":", ), Symbol( "f2", ), Call( [ [ Symbol( "'k'", ), ], [ Symbol( "12", ), ], ], ), ], line: 60, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), Symbol( ".", ), Symbol( "c", ), Symbol( ".", ), Symbol( "k", ), ], line: 61, }, Operator( ( "==", true, ), ), Symbol( "12", ), ], ], ), ], line: 61, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 61, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 63, }, ], values: [ [ Symbol( "nil", ), ], ], line: 66, column: 0, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "a", "b", "c", ], body: CodeBlock { start: 436, code: [ Variable { names: [ ( "d", false, ), ], values: [ [ Symbol( "'a'", ), ], ], line: 66, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 66, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 66, }, ], ), ( None, [ Ident { expr: [ Symbol( "b", ), ], line: 66, }, ], ), ( None, [ Ident { expr: [ Symbol( "c", ), ], line: 66, }, ], ), ( None, [ Ident { expr: [ Symbol( "d", ), ], line: 66, }, ], ), ], line: 66, column: 16, }, ], ], line: 66, column: 16, }, ], end: 453, }, line: 66, column: 26, }, Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], ], ), ], line: 66, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 70, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 70, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 70, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "4", ), ], ), Symbol( "]", ), ], line: 70, }, Operator( ( "==", true, ), ), Symbol( "'a'", ), ], ], ), ], line: 69, }, Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], ], ), ], line: 70, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 73, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 73, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 73, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "4", ), ], ), Symbol( "]", ), ], line: 73, }, Operator( ( "==", true, ), ), Symbol( "'a'", ), ], ], ), ], line: 72, }, Function { local: false, name: [ Symbol( "fat", ), ], args: [ "x", ], body: CodeBlock { start: 534, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "x", ), ], line: 76, }, Operator( ( "<=", true, ), ), Symbol( "1", ), ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Symbol( "1", ), ], ], ), ), ], end: 8, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 8, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 77, }, Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"return fat(\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 77, }, Operator( ( "-", true, ), ), Symbol( "1", ), Operator( ( "..", true, ), ), Symbol( "\")\"", ), ], [ Symbol( "\"\"", ), ], ], ), Call( [], ), ], line: 77, }, ], ], ), ), ], end: 26, }, next: None, line: 78, column: 1, }, ), line: 78, column: 1, }, ], end: 561, }, line: 79, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"load 'assert(fat(6)==720)' () \"", ), ], ], ), ], line: 81, }, ], ], ), Call( [], ), ], line: 79, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 81, }, ], values: [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "'return fat(5), 3'", ), ], ], ), ], line: 82, }, ], ], line: 82, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 82, }, Ident { expr: [ Symbol( "b", ), ], line: 83, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), Call( [], ), ], line: 83, }, ], ], line: 83, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 84, }, Operator( ( "==", true, ), ), Symbol( "120", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 84, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 83, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 84, }, Function { local: false, name: [ Symbol( "err_on_n", ), ], args: [ "n", ], body: CodeBlock { start: 600, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 88, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Ident { expr: [ Symbol( "error", ), Call( [], ), ], line: 88, }, Ident { expr: [ Symbol( "exit", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 88, }, ], end: 15, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 15, code: [ Ident { expr: [ Symbol( "err_on_n", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 89, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 89, }, Ident { expr: [ Symbol( "exit", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 89, }, ], end: 28, }, next: None, line: 90, column: 1, }, ), line: 90, column: 1, }, ], end: 629, }, line: 91, column: 1, }, DoBlock( CodeBlock { start: 630, code: [ Function { local: false, name: [ Symbol( "dummy", ), ], args: [ "n", ], body: CodeBlock { start: 5, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 95, }, Operator( ( ">", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "err_on_n", ), ], line: 96, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 96, }, ], ], ), ], line: 96, }, ], ], ), ], line: 96, }, Ident { expr: [ Symbol( "dummy", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 97, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 96, }, ], end: 22, }, next: None, line: 98, column: 1, }, ], end: 28, }, line: 99, column: 1, }, ], end: 659, }, ), Ident { expr: [ Symbol( "dummy", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 100, }, Function { local: false, name: [ Symbol( "deep", ), ], args: [ "n", ], body: CodeBlock { start: 668, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 105, }, Operator( ( ">", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Ident { expr: [ Symbol( "deep", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 105, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 105, }, ], end: 12, }, next: None, line: 105, column: 12, }, ], end: 681, }, line: 106, column: 1, }, Ident { expr: [ Symbol( "deep", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 106, }, Ident { expr: [ Symbol( "deep", ), Call( [ [ Symbol( "180", ), ], ], ), ], line: 107, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing tail calls\"", ), ], ], ), ], line: 108, }, Function { local: false, name: [ Symbol( "deep", ), ], args: [ "n", ], body: CodeBlock { start: 696, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 113, }, Operator( ( ">", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "deep", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 113, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 113, }, ], ], ), ), ], end: 13, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 13, code: [ Return( Some( [ [ Symbol( "101", ), ], ], ), ), ], end: 16, }, next: None, line: 113, column: 16, }, ), line: 113, column: 16, }, ], end: 713, }, line: 113, column: 22, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "deep", ), Call( [ [ Symbol( "30000", ), ], ], ), ], line: 114, }, Operator( ( "==", true, ), ), Symbol( "101", ), ], ], ), ], line: 113, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 114, }, ], values: [ [ Table { data: [], line: 115, column: 4, }, ], ], line: 116, column: 0, }, Function { local: false, name: [ Symbol( "a", ), Symbol( ":", ), Symbol( "deep", ), ], args: [ "n", ], body: CodeBlock { start: 733, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 116, }, Operator( ( ">", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "self", ), Symbol( ":", ), Symbol( "deep", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 116, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 116, }, ], ], ), ), ], end: 15, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 15, code: [ Return( Some( [ [ Symbol( "101", ), ], ], ), ), ], end: 18, }, next: None, line: 116, column: 18, }, ), line: 116, column: 18, }, ], end: 752, }, line: 116, column: 26, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ":", ), Symbol( "deep", ), Call( [ [ Symbol( "30000", ), ], ], ), ], line: 117, }, Operator( ( "==", true, ), ), Symbol( "101", ), ], ], ), ], line: 116, }, DoBlock( CodeBlock { start: 764, code: [ Function { local: true, name: [ Symbol( "foo", ), ], args: [ "x", "...", ], body: CodeBlock { start: 8, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "...", ), ], ), ], line: 120, column: 6, }, ], ], line: 120, column: 7, }, Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 120, }, ], [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 120, }, ], [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 120, }, ], ], ), ), ], end: 28, }, line: 120, column: 28, }, Function { local: true, name: [ Symbol( "foo1", ), ], args: [ "x", ], body: CodeBlock { start: 34, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "foo", ), Call( [ [ Symbol( "10", ), ], [ Ident { expr: [ Symbol( "x", ), ], line: 122, }, ], [ Ident { expr: [ Symbol( "x", ), ], line: 122, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 122, }, ], ], ), ), ], end: 46, }, line: 122, column: 18, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ( "c", false, ), ], values: [ [ Ident { expr: [ Symbol( "foo1", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "2", ), ], ], ), ], line: 124, }, ], ], line: 124, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 125, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 125, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 125, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 124, }, Variable { names: [ ( "t", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 128, column: 7, }, ], [ Table { data: [ ( Some( [ Symbol( "__call", ), ], ), [ Ident { expr: [ Symbol( "foo", ), ], line: 128, }, ], ), ], line: 128, column: 13, }, ], ], ), ], line: 128, }, ], ], line: 129, column: 0, }, Function { local: true, name: [ Symbol( "foo2", ), ], args: [ "x", ], body: CodeBlock { start: 94, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "t", ), Call( [ [ Symbol( "10", ), ], [ Ident { expr: [ Symbol( "x", ), ], line: 129, }, ], ], ), ], line: 129, }, ], ], ), ), ], end: 102, }, line: 129, column: 14, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 129, }, Ident { expr: [ Symbol( "b", ), ], line: 130, }, Ident { expr: [ Symbol( "c", ), ], line: 130, }, ], values: [ [ Ident { expr: [ Symbol( "foo2", ), Call( [ [ Symbol( "100", ), ], ], ), ], line: 130, }, ], ], line: 130, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 131, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "t", ), ], line: 131, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 131, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 131, }, Operator( ( "==", true, ), ), Symbol( "100", ), ], ], ), ], line: 130, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 131, }, Ident { expr: [ Symbol( "b", ), ], line: 133, }, ], values: [ [ Expr( [ Lambda { args: [], body: CodeBlock { start: 134, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "foo", ), Call( [], ), ], line: 133, }, ], ], ), ), ], end: 139, }, line: 133, column: 13, }, ], ), Ident { expr: [ Call( [], ), ], line: 133, }, ], ], line: 133, column: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 134, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 134, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 133, }, Variable { names: [ ( "X", false, ), ( "Y", false, ), ( "A", false, ), ], values: [], line: 136, column: 6, }, Function { local: true, name: [ Symbol( "foo", ), ], args: [ "x", "y", "...", ], body: CodeBlock { start: 168, code: [ Alter { names: [ Ident { expr: [ Symbol( "X", ), ], line: 137, }, ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 137, }, ], ], line: 137, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "Y", ), ], line: 137, }, ], values: [ [ Ident { expr: [ Symbol( "y", ), ], line: 137, }, ], ], line: 137, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "A", ), ], line: 137, }, ], values: [ [ Table { data: [ ( None, [ Symbol( "...", ), ], ), ], line: 137, column: 13, }, ], ], line: 137, column: 13, }, ], end: 182, }, line: 137, column: 24, }, Function { local: true, name: [ Symbol( "foo1", ), ], args: [ "...", ], body: CodeBlock { start: 188, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "foo", ), Call( [ [ Symbol( "...", ), ], ], ), ], line: 138, }, ], ], ), ), ], end: 194, }, line: 138, column: 12, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ( "c", false, ), ], values: [ [ Ident { expr: [ Symbol( "foo1", ), Call( [], ), ], line: 140, }, ], ], line: 140, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "X", ), ], line: 141, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "Y", ), ], line: 141, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "A", ), ], line: 141, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 140, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 141, }, Ident { expr: [ Symbol( "b", ), ], line: 143, }, Ident { expr: [ Symbol( "c", ), ], line: 143, }, ], values: [ [ Ident { expr: [ Symbol( "foo1", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 143, }, ], ], line: 143, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "X", ), ], line: 144, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "Y", ), ], line: 144, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "A", ), ], line: 144, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 143, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 144, }, Ident { expr: [ Symbol( "b", ), ], line: 146, }, Ident { expr: [ Symbol( "c", ), ], line: 146, }, ], values: [ [ Ident { expr: [ Symbol( "foo1", ), Call( [ [ Symbol( "10", ), ], [ Symbol( "20", ), ], ], ), ], line: 146, }, ], ], line: 146, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "X", ), ], line: 147, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "Y", ), ], line: 147, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "A", ), ], line: 147, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 146, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 147, }, Ident { expr: [ Symbol( "b", ), ], line: 149, }, Ident { expr: [ Symbol( "c", ), ], line: 149, }, ], values: [ [ Ident { expr: [ Symbol( "foo1", ), Call( [ [ Symbol( "10", ), ], [ Symbol( "20", ), ], [ Symbol( "30", ), ], ], ), ], line: 149, }, ], ], line: 149, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "X", ), ], line: 150, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "Y", ), ], line: 150, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "A", ), ], line: 150, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "A", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 150, }, Operator( ( "==", true, ), ), Symbol( "30", ), ], ], ), ], line: 149, }, ], end: 1072, }, ), DoBlock( CodeBlock { start: 1073, code: [ Variable { names: [ ( "n", false, ), ], values: [ [ Symbol( "10000", ), ], ], line: 158, column: 0, }, Function { local: true, name: [ Symbol( "foo", ), ], args: [], body: CodeBlock { start: 9, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 159, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Symbol( "1023", ), ], ], ), ), ], end: 8, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 8, code: [ Alter { names: [ Ident { expr: [ Symbol( "n", ), ], line: 160, }, ], values: [ [ Ident { expr: [ Symbol( "n", ), ], line: 160, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], line: 160, column: 6, }, Return( Some( [ [ Ident { expr: [ Symbol( "foo", ), Call( [], ), ], line: 160, }, ], ], ), ), ], end: 19, }, next: None, line: 161, column: 1, }, ), line: 161, column: 1, }, ], end: 29, }, line: 162, column: 1, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "100", ), ], step: None, code: CodeBlock { start: 36, code: [ Alter { names: [ Ident { expr: [ Symbol( "foo", ), ], line: 166, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 166, column: 6, }, ], [ Table { data: [ ( Some( [ Symbol( "__call", ), ], ), [ Ident { expr: [ Symbol( "foo", ), ], line: 166, }, ], ), ], line: 166, column: 12, }, ], ], ), ], line: 166, }, ], ], line: 166, column: 13, }, ], end: 50, }, line: 167, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "coroutine", ), Symbol( ".", ), Symbol( "wrap", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 59, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "foo", ), Call( [], ), ], line: 171, }, ], ], ), ), ], end: 64, }, line: 171, column: 14, }, ], ], ), Call( [], ), ], line: 171, }, Operator( ( "==", true, ), ), Symbol( "1023", ), ], ], ), ], line: 167, }, ], end: 1144, }, ), Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 172, }, DoBlock( CodeBlock { start: 1149, code: [ Variable { names: [ ( "N", false, ), ], values: [ [ Symbol( "20", ), ], ], line: 179, column: 0, }, Variable { names: [ ( "u", false, ), ], values: [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "pack", ), ], line: 179, }, ], ], line: 180, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "N", ), ], line: 180, }, ], step: None, code: CodeBlock { start: 17, code: [ Alter { names: [ Ident { expr: [ Symbol( "u", ), ], line: 181, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "i", ), ], line: 181, }, ], ), ], line: 181, column: 7, }, ], [ Table { data: [ ( Some( [ Symbol( "__call", ), ], ), [ Ident { expr: [ Symbol( "u", ), ], line: 181, }, ], ), ], line: 181, column: 13, }, ], ], ), ], line: 181, }, ], ], line: 181, column: 14, }, ], end: 32, }, line: 182, column: 1, }, Variable { names: [ ( "Res", false, ), ], values: [ [ Ident { expr: [ Symbol( "u", ), Call( [ [ Symbol( "\"a\"", ), ], [ Symbol( "\"b\"", ), ], [ Symbol( "\"c\"", ), ], ], ), ], line: 184, }, ], ], line: 184, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "Res", ), Symbol( ".", ), Symbol( "n", ), ], line: 186, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "N", ), ], line: 186, }, Operator( ( "+", true, ), ), Symbol( "3", ), ], ], ), ], line: 184, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "N", ), ], line: 187, }, ], step: None, code: CodeBlock { start: 60, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "Res", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 188, }, ], ), Symbol( "]", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 188, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 188, }, ], ], ), ], line: 188, }, ], end: 73, }, line: 189, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "Res", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "N", ), ], line: 190, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 190, }, Operator( ( "==", true, ), ), Symbol( "\"a\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "Res", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "N", ), ], line: 190, }, Operator( ( "+", true, ), ), Symbol( "2", ), ], ), Symbol( "]", ), ], line: 190, }, Operator( ( "==", true, ), ), Symbol( "\"b\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "Res", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "N", ), ], line: 190, }, Operator( ( "+", true, ), ), Symbol( "3", ), ], ), Symbol( "]", ), ], line: 190, }, Operator( ( "==", true, ), ), Symbol( "\"c\"", ), ], ], ), ], line: 189, }, ], end: 1252, }, ), Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 191, }, ], values: [ [ Symbol( "nil", ), Expr( [ Lambda { args: [ "x", ], body: CodeBlock { start: 1260, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 195, }, ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 195, }, ], ], line: 195, column: 3, }, ], end: 1264, }, line: 195, column: 9, }, ], ), Ident { expr: [ Call( [ [ Symbol( "23", ), ], ], ), ], line: 195, }, ], ], line: 195, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 196, }, Operator( ( "==", true, ), ), Symbol( "23", ), Operator( ( "and", true, ), ), Expr( [ Lambda { args: [ "x", ], body: CodeBlock { start: 1279, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 196, }, Operator( ( "*", true, ), ), Symbol( "2", ), ], ], ), ), ], end: 1284, }, line: 196, column: 16, }, ], ), Ident { expr: [ Call( [ [ Symbol( "20", ), ], ], ), ], line: 196, }, Operator( ( "==", true, ), ), Symbol( "40", ), ], ], ), ], line: 195, }, Alter { names: [ Ident { expr: [ Symbol( "Z", ), ], line: 196, }, ], values: [ [ Lambda { args: [ "le", ], body: CodeBlock { start: 1297, code: [ Function { local: true, name: [ Symbol( "a", ), ], args: [ "f", ], body: CodeBlock { start: 6, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "le", ), Call( [ [ Lambda { args: [ "x", ], body: CodeBlock { start: 7, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 204, }, ], ], ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 204, }, ], ], ), ], line: 204, }, ], ], ), ), ], end: 16, }, line: 204, column: 16, }, ], ], ), ], line: 204, }, ], ], ), ), ], end: 24, }, line: 205, column: 1, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 206, }, ], ], ), ], line: 206, }, ], ], ), ), ], end: 1327, }, line: 207, column: 1, }, ], ], line: 207, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "F", ), ], line: 207, }, ], values: [ [ Lambda { args: [ "f", ], body: CodeBlock { start: 1333, code: [ Return( Some( [ [ Lambda { args: [ "n", ], body: CodeBlock { start: 5, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 214, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Symbol( "1", ), ], ], ), ), ], end: 8, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 8, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "n", ), ], line: 215, }, Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 215, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 215, }, ], ], ), ), ], end: 18, }, next: None, line: 215, column: 11, }, ), line: 215, column: 11, }, ], end: 24, }, line: 216, column: 1, }, ], ], ), ), ], end: 1358, }, line: 217, column: 1, }, ], ], line: 217, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "fat", ), ], line: 217, }, ], values: [ [ Ident { expr: [ Symbol( "Z", ), Call( [ [ Ident { expr: [ Symbol( "F", ), ], line: 219, }, ], ], ), ], line: 219, }, ], ], line: 219, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "fat", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 221, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "fat", ), Call( [ [ Symbol( "4", ), ], ], ), ], line: 221, }, Operator( ( "==", true, ), ), Symbol( "24", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "Z", ), Call( [ [ Ident { expr: [ Symbol( "F", ), ], line: 221, }, ], ], ), Call( [ [ Symbol( "5", ), ], ], ), ], line: 221, }, Operator( ( "==", true, ), ), Symbol( "5", ), Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "Z", ), Call( [ [ Ident { expr: [ Symbol( "F", ), ], line: 221, }, ], ], ), Call( [ [ Symbol( "4", ), ], ], ), ], line: 221, }, ], ], ), ], line: 219, }, Function { local: true, name: [ Symbol( "g", ), ], args: [ "z", ], body: CodeBlock { start: 1404, code: [ Function { local: true, name: [ Symbol( "f", ), ], args: [ "a", "b", "c", "d", ], body: CodeBlock { start: 12, code: [ Return( Some( [ [ Lambda { args: [ "x", "y", ], body: CodeBlock { start: 7, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 225, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 225, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 225, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 225, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 225, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 225, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 225, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "z", ), ], line: 225, }, ], ], ), ), ], end: 24, }, line: 225, column: 24, }, ], ], ), ), ], end: 37, }, line: 226, column: 1, }, Return( Some( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "z", ), ], line: 227, }, ], [ Ident { expr: [ Symbol( "z", ), ], line: 227, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], [ Ident { expr: [ Symbol( "z", ), ], line: 227, }, Operator( ( "+", true, ), ), Symbol( "2", ), ], [ Ident { expr: [ Symbol( "z", ), ], line: 227, }, Operator( ( "+", true, ), ), Symbol( "3", ), ], ], ), ], line: 227, }, ], ], ), ), ], end: 1459, }, line: 228, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 228, }, ], values: [ [ Ident { expr: [ Symbol( "g", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 230, }, ], ], line: 230, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "9", ), ], [ Symbol( "16", ), ], ], ), ], line: 231, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "+", true, ), ), Symbol( "11", ), Operator( ( "+", true, ), ), Symbol( "12", ), Operator( ( "+", true, ), ), Symbol( "13", ), Operator( ( "+", true, ), ), Symbol( "10", ), Operator( ( "+", true, ), ), Symbol( "9", ), Operator( ( "+", true, ), ), Symbol( "16", ), Operator( ( "+", true, ), ), Symbol( "10", ), ], ], ), ], line: 230, }, Alter { names: [ Ident { expr: [ Symbol( "Z", ), ], line: 231, }, Ident { expr: [ Symbol( "F", ), ], line: 233, }, Ident { expr: [ Symbol( "f", ), ], line: 233, }, ], values: [ [ Symbol( "nil", ), ], ], line: 233, column: 7, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 233, }, Function { local: false, name: [ Symbol( "unlpack", ), ], args: [ "t", "i", ], body: CodeBlock { start: 1508, code: [ Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 239, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 239, }, Operator( ( "or", true, ), ), Symbol( "1", ), ], ], line: 240, column: 0, }, IfStatement { condition: [ Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 240, }, Operator( ( "<=", true, ), ), Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 240, }, ], ), Ident { expr: [], line: 240, }, ], body: CodeBlock { start: 13, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 241, }, ], ), Symbol( "]", ), ], line: 241, }, ], [ Ident { expr: [ Symbol( "unlpack", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 241, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 241, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 241, }, ], ], ), ), ], end: 28, }, next: None, line: 242, column: 1, }, ], end: 1537, }, line: 243, column: 1, }, Function { local: false, name: [ Symbol( "equaltab", ), ], args: [ "t1", "t2", ], body: CodeBlock { start: 1544, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t1", ), ], line: 246, }, Operator( ( "==", true, ), ), Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t2", ), ], line: 246, }, ], ], ), ], line: 246, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t1", ), ], line: 247, }, ], step: None, code: CodeBlock { start: 16, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t1", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 248, }, ], ), Symbol( "]", ), ], line: 248, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "t2", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 248, }, ], ), Symbol( "]", ), ], line: 248, }, ], ], ), ], line: 248, }, ], end: 29, }, line: 249, column: 1, }, ], end: 1574, }, line: 250, column: 1, }, Variable { names: [ ( "pack", false, ), ], values: [ [ Lambda { args: [ "...", ], body: CodeBlock { start: 1581, code: [ Return( Some( [ [ Expr( [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "pack", ), Call( [ [ Symbol( "...", ), ], ], ), ], line: 252, }, ], ), Ident { expr: [], line: 252, }, ], ], ), ), ], end: 1591, }, line: 252, column: 17, }, ], ], line: 254, column: 0, }, Function { local: false, name: [ Symbol( "f", ), ], args: [], body: CodeBlock { start: 1595, code: [ Return( Some( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "30", ), ], [ Symbol( "4", ), ], ], ), ), ], end: 1604, }, line: 254, column: 13, }, Function { local: false, name: [ Symbol( "ret2", ), ], args: [ "a", "b", ], body: CodeBlock { start: 1611, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 255, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 255, }, ], ], ), ), ], end: 1616, }, line: 255, column: 12, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ( "c", false, ), ( "d", false, ), ], values: [ [ Ident { expr: [ Symbol( "unlpack", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 257, column: 17, }, ], ], ), ], line: 257, }, ], ], line: 257, column: 17, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 258, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 258, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 258, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 258, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 257, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 258, }, ], values: [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ( None, [ Symbol( "false", ), ], ), ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "'alo'", ), ], ), ( None, [ Symbol( "false", ), ], ), ( None, [ Ident { expr: [ Symbol( "assert", ), ], line: 259, }, ], ), ], line: 259, column: 21, }, ], ], line: 259, column: 21, }, Ident { expr: [ Symbol( "equaltab", ), Call( [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "unlpack", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 260, }, ], ], ), ], line: 260, }, ], ], ), ], line: 260, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 260, }, ], ], ), ], line: 259, }, Ident { expr: [ Symbol( "equaltab", ), Call( [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "unlpack", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 261, }, ], ], ), ], line: 261, }, ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 261, }, ], [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ), ], line: 261, column: 19, }, ], ], ), ], line: 260, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 261, }, Ident { expr: [ Symbol( "b", ), ], line: 262, }, Ident { expr: [ Symbol( "c", ), ], line: 262, }, Ident { expr: [ Symbol( "d", ), ], line: 262, }, ], values: [ [ Ident { expr: [ Symbol( "ret2", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 262, }, ], ], ), ], line: 262, }, ], [ Ident { expr: [ Symbol( "ret2", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 262, }, ], ], ), ], line: 262, }, ], ], line: 262, column: 21, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 263, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 263, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 263, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 263, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 262, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 263, }, Ident { expr: [ Symbol( "b", ), ], line: 264, }, Ident { expr: [ Symbol( "c", ), ], line: 264, }, Ident { expr: [ Symbol( "d", ), ], line: 264, }, ], values: [ [ Ident { expr: [ Symbol( "unlpack", ), Call( [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "ret2", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 264, }, ], ], ), ], line: 264, }, ], [ Ident { expr: [ Symbol( "ret2", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 264, }, ], ], ), ], line: 264, }, ], ], ), ], line: 264, }, ], ], ), ], line: 264, }, ], ], line: 264, column: 27, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 265, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 265, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 265, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 265, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 264, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 265, }, Ident { expr: [ Symbol( "b", ), ], line: 266, }, Ident { expr: [ Symbol( "c", ), ], line: 266, }, Ident { expr: [ Symbol( "d", ), ], line: 266, }, ], values: [ [ Ident { expr: [ Symbol( "unlpack", ), Call( [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "ret2", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 266, }, ], ], ), ], line: 266, }, ], [ Expr( [ Ident { expr: [ Symbol( "ret2", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 266, }, ], ], ), ], line: 266, }, ], ), Ident { expr: [], line: 266, }, ], ], ), ], line: 266, }, ], ], ), ], line: 266, }, ], ], line: 266, column: 29, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 267, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 267, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 267, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 267, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 266, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 267, }, ], values: [ [ Ident { expr: [ Symbol( "ret2", ), Call( [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "unlpack", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 269, column: 12, }, ], ], ), ], line: 269, }, ], ), ( None, [ Ident { expr: [ Symbol( "unlpack", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "1", ), ], ), ], line: 269, column: 21, }, ], ], ), ], line: 269, }, ], ), ( None, [ Ident { expr: [ Symbol( "unlpack", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"a\"", ), ], ), ( None, [ Symbol( "\"b\"", ), ], ), ], line: 269, column: 28, }, ], ], ), ], line: 269, }, ], ), ], line: 269, column: 29, }, ], ], ), ], line: 269, }, ], ], line: 269, column: 29, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 270, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 270, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 270, }, Operator( ( "==", true, ), ), Symbol( "\"a\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "4", ), ], ), Symbol( "]", ), ], line: 270, }, Operator( ( "==", true, ), ), Symbol( "\"b\"", ), ], ], ), ], line: 269, }, Ident { expr: [ Symbol( "rawget", ), Call( [ [ Table { data: [], line: 274, column: 4, }, ], [ Symbol( "\"x\"", ), ], [ Symbol( "1", ), ], ], ), ], line: 270, }, Ident { expr: [ Symbol( "rawset", ), Call( [ [ Table { data: [], line: 275, column: 4, }, ], [ Symbol( "\"x\"", ), ], [ Symbol( "1", ), ], [ Symbol( "2", ), ], ], ), ], line: 274, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "sin", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], ], ), ], line: 276, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "sin", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 276, }, ], ], ), ], line: 275, }, Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "sort", ), Call( [ [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "9", ), ], ), ( None, [ Symbol( "8", ), ], ), ( None, [ Symbol( "4", ), ], ), ( None, [ Symbol( "19", ), ], ), ( None, [ Symbol( "23", ), ], ), ( None, [ Symbol( "0", ), ], ), ( None, [ Symbol( "0", ), ], ), ], line: 277, column: 21, }, ], [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 1960, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 277, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 277, }, ], ], ), ), ], end: 1965, }, line: 277, column: 33, }, ], [ Symbol( "\"extra arg\"", ), ], ], ), ], line: 276, }, Variable { names: [ ( "x", false, ), ], values: [ [ Symbol( "\"-- a comment\\0\\0\\0\\n x = 10 + \\n23; \\\n local a = function () x = 'hi' end; \\\n return '\\0'\"", ), ], ], line: 284, column: 0, }, Function { local: false, name: [ Symbol( "read1", ), ], args: [ "x", ], body: CodeBlock { start: 1977, code: [ Variable { names: [ ( "i", false, ), ], values: [ [ Symbol( "0", ), ], ], line: 286, column: 0, }, Return( Some( [ [ Lambda { args: [], body: CodeBlock { start: 8, code: [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 287, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 287, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 288, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 289, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 289, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 289, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 289, }, ], ], ), ], line: 289, }, ], ], ), ), ], end: 28, }, line: 290, column: 1, }, ], ], ), ), ], end: 2006, }, line: 291, column: 1, }, Function { local: false, name: [ Symbol( "cannotload", ), ], args: [ "msg", "a", "b", ], body: CodeBlock { start: 2015, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 294, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 294, }, ], [ Ident { expr: [ Symbol( "msg", ), ], line: 294, }, ], ], ), ], line: 294, }, ], ], ), ], line: 294, }, ], end: 2030, }, line: 295, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 295, }, ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "read1", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 297, }, ], ], ), ], line: 297, }, ], [ Symbol( "\"modname\"", ), ], [ Symbol( "\"t\"", ), ], [ Ident { expr: [ Symbol( "_G", ), ], line: 297, }, ], ], ), ], line: 297, }, ], ], ), ], line: 297, }, ], ], line: 297, column: 18, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Call( [], ), ], line: 298, }, Operator( ( "==", true, ), ), Symbol( "\"\\0\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "x", ), ], line: 298, }, Operator( ( "==", true, ), ), Symbol( "33", ), ], ], ), ], line: 297, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getinfo", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 299, }, ], ], ), Symbol( ".", ), Symbol( "source", ), ], line: 299, }, Operator( ( "==", true, ), ), Symbol( "\"modname\"", ), ], ], ), ], line: 298, }, Ident { expr: [ Symbol( "cannotload", ), Call( [ [ Symbol( "\"attempt to load a text chunk\"", ), ], [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "read1", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 301, }, ], ], ), ], line: 301, }, ], [ Symbol( "\"modname\"", ), ], [ Symbol( "\"b\"", ), ], [ Table { data: [], line: 301, column: 17, }, ], ], ), ], line: 301, }, ], ], ), ], line: 299, }, Ident { expr: [ Symbol( "cannotload", ), Call( [ [ Symbol( "\"attempt to load a text chunk\"", ), ], [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 302, }, ], [ Symbol( "\"modname\"", ), ], [ Symbol( "\"b\"", ), ], ], ), ], line: 302, }, ], ], ), ], line: 301, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 302, }, ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 2116, code: [ Return( Some( [ [ Symbol( "nil", ), ], ], ), ), ], end: 2119, }, line: 304, column: 12, }, ], ], ), ], line: 304, }, ], ], ), ], line: 304, }, ], ], line: 304, column: 14, }, Ident { expr: [ Symbol( "a", ), Call( [], ), ], line: 304, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "load", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 2132, code: [ Return( Some( [ [ Symbol( "true", ), ], ], ), ), ], end: 2135, }, line: 307, column: 11, }, ], ], ), ], line: 307, }, ], ], ), ], line: 305, }, Variable { names: [ ( "t", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "nil", ), ], ), ( None, [ Symbol( "\"return \"", ), ], ), ( None, [ Symbol( "\"3\"", ), ], ), ], line: 311, column: 10, }, ], ], line: 311, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 311, }, Ident { expr: [ Symbol( "msg", ), ], line: 312, }, ], values: [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 2156, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "remove", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 312, }, ], [ Symbol( "1", ), ], ], ), ], line: 312, }, ], ], ), ), ], end: 2166, }, line: 312, column: 19, }, ], ], ), ], line: 312, }, ], ], line: 312, column: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 313, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 312, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 313, }, ], values: [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "dump", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 2186, code: [ Return( Some( [ [ Symbol( "1", ), ], ], ), ), ], end: 2189, }, line: 316, column: 14, }, ], ], ), ], line: 316, }, ], [ Symbol( "nil", ), ], [ Symbol( "\"b\"", ), ], [ Table { data: [], line: 316, column: 22, }, ], ], ), ], line: 316, }, ], ], line: 316, column: 23, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 317, }, ], ], ), ], line: 317, }, Operator( ( "==", true, ), ), Symbol( "\"function\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 317, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 316, }, DoBlock( CodeBlock { start: 2214, code: [ Variable { names: [ ( "f", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "dump", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 10, code: [ Return( Some( [ [ Symbol( "'01234567890123456789012345678901234567890123456789'", ), ], ], ), ), ], end: 13, }, line: 324, column: 1, }, ], ], ), ], line: 322, }, ], ], line: 324, column: 2, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 324, }, ], values: [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "read1", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 325, }, ], ], ), ], line: 325, }, ], ], ), ], line: 325, }, ], ], line: 325, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 326, }, Operator( ( "==", true, ), ), Symbol( "'01234567890123456789012345678901234567890123456789'", ), ], ], ), ], line: 325, }, ], end: 2246, }, ), Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 327, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "dump", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"x = 1; return x\"", ), ], ], ), ], line: 330, }, ], ], ), ], line: 330, }, ], ], line: 330, column: 11, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 330, }, ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "read1", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 331, }, ], ], ), ], line: 331, }, ], [ Symbol( "nil", ), ], [ Symbol( "\"b\"", ), ], ], ), ], line: 331, }, ], ], ), ], line: 331, }, ], ], line: 331, column: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Call( [], ), ], line: 332, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "x", ), ], line: 332, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 331, }, Ident { expr: [ Symbol( "cannotload", ), Call( [ [ Symbol( "\"attempt to load a binary chunk\"", ), ], [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "read1", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 333, }, ], ], ), ], line: 333, }, ], [ Symbol( "nil", ), ], [ Symbol( "\"t\"", ), ], ], ), ], line: 333, }, ], ], ), ], line: 332, }, Ident { expr: [ Symbol( "cannotload", ), Call( [ [ Symbol( "\"attempt to load a binary chunk\"", ), ], [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 334, }, ], [ Symbol( "nil", ), ], [ Symbol( "\"t\"", ), ], ], ), ], line: 334, }, ], ], ), ], line: 333, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "dump", ), ], line: 336, }, ], [ Ident { expr: [ Symbol( "print", ), ], line: 336, }, ], ], ), ], line: 336, }, ], ], ), ], line: 334, }, Ident { expr: [ Symbol( "cannotload", ), Call( [ [ Symbol( "\"unexpected symbol\"", ), ], [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "read1", ), Call( [ [ Symbol( "\"*a = 123\"", ), ], ], ), ], line: 338, }, ], ], ), ], line: 338, }, ], ], ), ], line: 336, }, Ident { expr: [ Symbol( "cannotload", ), Call( [ [ Symbol( "\"unexpected symbol\"", ), ], [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"*a = 123\"", ), ], ], ), ], line: 339, }, ], ], ), ], line: 338, }, Ident { expr: [ Symbol( "cannotload", ), Call( [ [ Symbol( "\"hhi\"", ), ], [ Ident { expr: [ Symbol( "load", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 2358, code: [ Ident { expr: [ Symbol( "error", ), Call( [ [ Symbol( "\"hhi\"", ), ], ], ), ], line: 340, }, ], end: 2363, }, line: 340, column: 14, }, ], ], ), ], line: 340, }, ], ], ), ], line: 339, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"return _ENV\"", ), ], [ Symbol( "nil", ), ], [ Symbol( "nil", ), ], [ Symbol( "123", ), ], ], ), Call( [], ), ], line: 343, }, Operator( ( "==", true, ), ), Symbol( "123", ), ], ], ), ], line: 340, }, Variable { names: [ ( "x", false, ), ], values: [], line: 347, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "XX", ), ], line: 347, }, ], values: [ [ Symbol( "123", ), ], ], line: 348, column: 0, }, Function { local: true, name: [ Symbol( "h", ), ], args: [], body: CodeBlock { start: 2393, code: [ Variable { names: [ ( "y", false, ), ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 349, }, ], ], line: 350, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "XX", ), ], line: 350, }, ], ], ), ), ], end: 2400, }, line: 351, column: 1, }, Variable { names: [ ( "d", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "dump", ), Call( [ [ Ident { expr: [ Symbol( "h", ), ], line: 352, }, ], ], ), ], line: 352, }, ], ], line: 352, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 352, }, ], values: [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "d", ), ], line: 353, }, ], [ Symbol( "\"\"", ), ], [ Symbol( "\"b\"", ), ], ], ), ], line: 353, }, ], ], line: 353, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getupvalue", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 354, }, ], [ Symbol( "2", ), ], ], ), ], line: 354, }, Operator( ( "==", true, ), ), Symbol( "'_ENV'", ), ], ], ), ], line: 353, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setupvalue", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 355, }, ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "_G", ), ], line: 355, }, ], ], ), ], line: 354, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Call( [], ), ], line: 356, }, Operator( ( "==", true, ), ), Symbol( "123", ), ], ], ), ], line: 355, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"return XX + ...\"", ), ], [ Symbol( "nil", ), ], [ Symbol( "nil", ), ], [ Table { data: [ ( Some( [ Symbol( "XX", ), ], ), [ Symbol( "13", ), ], ), ], line: 358, column: 17, }, ], ], ), ], line: 358, }, ], ], ), Call( [ [ Symbol( "4", ), ], ], ), ], line: 358, }, Operator( ( "==", true, ), ), Symbol( "17", ), ], ], ), ], line: 356, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 358, }, ], values: [ [ MultilineString( "[[\n return function (x)\n return function (y)\n return function (z)\n return x+y+z\n end\n end\n end\n]]", ), ], ], line: 370, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 370, }, ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "read1", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 371, }, ], ], ), ], line: 371, }, ], [ Symbol( "\"read\"", ), ], [ Symbol( "\"t\"", ), ], ], ), ], line: 371, }, ], ], ), ], line: 371, }, ], ], line: 371, column: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Call( [], ), Call( [ [ Symbol( "2", ), ], ], ), Call( [ [ Symbol( "3", ), ], ], ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 372, }, Operator( ( "==", true, ), ), Symbol( "15", ), ], ], ), ], line: 371, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 372, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "dump", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 375, }, ], ], ), ], line: 375, }, ], ], line: 375, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 375, }, ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "read1", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 376, }, ], ], ), ], line: 376, }, ], [ Symbol( "\"read\"", ), ], [ Symbol( "\"b\"", ), ], ], ), ], line: 376, }, ], ], ), ], line: 376, }, ], ], line: 376, column: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Call( [], ), Call( [ [ Symbol( "2", ), ], ], ), Call( [ [ Symbol( "3", ), ], ], ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 377, }, Operator( ( "==", true, ), ), Symbol( "15", ), ], ], ), ], line: 376, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Symbol( "20", ), ], [ Symbol( "30", ), ], ], line: 381, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 381, }, ], values: [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "dump", ), Call( [ [ Lambda { args: [ "x", ], body: CodeBlock { start: 2572, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "x", ), ], line: 383, }, Operator( ( "==", true, ), ), Symbol( "\"set\"", ), ], body: CodeBlock { start: 5, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 383, }, ], values: [ [ Symbol( "10", ), Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 383, }, ], ], line: 383, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 383, }, ], values: [ [ Ident { expr: [ Symbol( "b", ), ], line: 383, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 383, column: 11, }, ], end: 17, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 17, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 384, }, ], ], ), ), ], end: 20, }, next: None, line: 385, column: 1, }, ), line: 385, column: 1, }, ], end: 2593, }, line: 386, column: 1, }, ], ], ), ], line: 382, }, ], [ Symbol( "\"\"", ), ], [ Symbol( "\"b\"", ), ], [ Symbol( "nil", ), ], ], ), ], line: 382, }, ], ], line: 386, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Call( [], ), ], line: 387, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 386, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setupvalue", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 388, }, ], [ Symbol( "1", ), ], [ Symbol( "\"hi\"", ), ], ], ), ], line: 388, }, Operator( ( "==", true, ), ), Symbol( "\"a\"", ), ], ], ), ], line: 387, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Call( [], ), ], line: 389, }, Operator( ( "==", true, ), ), Symbol( "\"hi\"", ), ], ], ), ], line: 388, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setupvalue", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 390, }, ], [ Symbol( "2", ), ], [ Symbol( "13", ), ], ], ), ], line: 390, }, Operator( ( "==", true, ), ), Symbol( "\"b\"", ), ], ], ), ], line: 389, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setupvalue", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 391, }, ], [ Symbol( "3", ), ], [ Symbol( "10", ), ], ], ), ], line: 391, }, ], ], ), ], line: 390, }, Ident { expr: [ Symbol( "x", ), Call( [ [ Symbol( "\"set\"", ), ], ], ), ], line: 391, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Call( [], ), ], line: 393, }, Operator( ( "==", true, ), ), Symbol( "23", ), ], ], ), ], line: 392, }, Ident { expr: [ Symbol( "x", ), Call( [ [ Symbol( "\"set\"", ), ], ], ), ], line: 393, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Call( [], ), ], line: 395, }, Operator( ( "==", true, ), ), Symbol( "24", ), ], ], ), ], line: 394, }, DoBlock( CodeBlock { start: 2686, code: [ Variable { names: [ ( "nup", false, ), ], values: [ [ Symbol( "200", ), ], ], line: 400, column: 0, }, Variable { names: [ ( "prog", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "\"local a1\"", ), ], ), ], line: 400, column: 6, }, ], ], line: 401, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "2", ), ], end: [ Ident { expr: [ Symbol( "nup", ), ], line: 401, }, ], step: None, code: CodeBlock { start: 17, code: [ Alter { names: [ Ident { expr: [ Symbol( "prog", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 401, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 401, }, ], values: [ [ Symbol( "\", a\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 401, }, ], ], line: 401, column: 11, }, ], end: 29, }, line: 401, column: 19, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 402, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 401, }, ], values: [ [ Symbol( "\" = 1\"", ), ], ], line: 403, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "2", ), ], end: [ Ident { expr: [ Symbol( "nup", ), ], line: 403, }, ], step: None, code: CodeBlock { start: 45, code: [ Alter { names: [ Ident { expr: [ Symbol( "prog", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 403, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 403, }, ], values: [ [ Symbol( "\", \"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 403, }, ], ], line: 403, column: 11, }, ], end: 57, }, line: 403, column: 19, }, Variable { names: [ ( "sum", false, ), ], values: [ [ Symbol( "1", ), ], ], line: 404, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 405, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 404, }, ], values: [ [ Symbol( "\"; return function () return a1\"", ), ], ], line: 406, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "2", ), ], end: [ Ident { expr: [ Symbol( "nup", ), ], line: 406, }, ], step: None, code: CodeBlock { start: 77, code: [ Alter { names: [ Ident { expr: [ Symbol( "prog", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 406, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 406, }, ], values: [ [ Symbol( "\" + a\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 406, }, ], ], line: 406, column: 12, }, Alter { names: [ Ident { expr: [ Symbol( "sum", ), ], line: 406, }, ], values: [ [ Ident { expr: [ Symbol( "sum", ), ], line: 406, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 406, }, ], ], line: 406, column: 17, }, ], end: 95, }, line: 406, column: 25, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 407, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 406, }, ], values: [ [ Symbol( "\" end\"", ), ], ], line: 407, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), ], line: 407, }, ], values: [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "concat", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 408, }, ], ], ), ], line: 408, }, ], ], line: 409, column: 0, }, Variable { names: [ ( "f", false, ), ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 409, }, ], ], ), ], line: 409, }, ], ], ), Call( [], ), ], line: 409, }, ], ], line: 409, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 410, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "sum", ), ], line: 410, }, ], ], ), ], line: 409, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 410, }, ], values: [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "dump", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 412, }, ], ], ), ], line: 412, }, ], ], ), ], line: 412, }, ], ], line: 413, column: 0, }, Variable { names: [ ( "a", false, ), ], values: [ [ Symbol( "10", ), ], ], line: 414, column: 0, }, Variable { names: [ ( "h", false, ), ], values: [ [ Lambda { args: [], body: CodeBlock { start: 153, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 414, }, ], ], ), ), ], end: 156, }, line: 414, column: 9, }, ], ], line: 415, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "nup", ), ], line: 415, }, ], step: None, code: CodeBlock { start: 163, code: [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "upvaluejoin", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 416, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 416, }, ], [ Ident { expr: [ Symbol( "h", ), ], line: 416, }, ], [ Symbol( "1", ), ], ], ), ], line: 416, }, ], end: 176, }, line: 417, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 418, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "nup", ), ], line: 418, }, ], ], ), ], line: 417, }, ], end: 2873, }, ), DoBlock( CodeBlock { start: 2874, code: [ Variable { names: [ ( "t", false, ), ], values: [ [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Symbol( "1", ), ], ), ], line: 423, column: 8, }, ], ], line: 424, column: 0, }, Function { local: false, name: [ Symbol( "t", ), Symbol( ":", ), Symbol( "_012345678901234567890123456789012345678901234567890123456789", ), ], args: [], body: CodeBlock { start: 14, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "self", ), Symbol( ".", ), Symbol( "x", ), ], line: 425, }, ], ], ), ), ], end: 19, }, line: 426, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( ":", ), Symbol( "_012345678901234567890123456789012345678901234567890123456789", ), Call( [], ), ], line: 427, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 426, }, ], end: 2904, }, ), Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Lambda { args: [], body: CodeBlock { start: 2910, code: [ Return( Some( [ [ Symbol( "nil", ), ], ], ), ), ], end: 2913, }, line: 432, column: 9, }, ], ), Ident { expr: [ Call( [ [ Symbol( "4", ), ], ], ), ], line: 432, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 428, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Lambda { args: [], body: CodeBlock { start: 2926, code: [ Variable { names: [ ( "a", false, ), ], values: [], line: 433, column: 3, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 433, }, ], ], ), ), ], end: 2932, }, line: 433, column: 12, }, ], ), Ident { expr: [ Call( [ [ Symbol( "4", ), ], ], ), ], line: 433, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 432, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Lambda { args: [ "a", ], body: CodeBlock { start: 2946, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 434, }, ], ], ), ), ], end: 2949, }, line: 434, column: 10, }, ], ), Ident { expr: [ Call( [], ), ], line: 434, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 433, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing binary chunks\"", ), ], ], ), ], line: 434, }, DoBlock( CodeBlock { start: 2960, code: [ Variable { names: [ ( "header", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "pack", ), Call( [ [ Symbol( "\"c4BBc6BBB\"", ), ], [ Symbol( "\"\\27Lua\"", ), ], [ Symbol( "0x54", ), ], [ Symbol( "0", ), ], [ Symbol( "\"\\x19\\x93\\r\\n\\x1a\\n\"", ), ], [ Symbol( "4", ), ], [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "packsize", ), Call( [ [ Symbol( "\"j\"", ), ], ], ), ], line: 444, }, ], [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "packsize", ), Call( [ [ Symbol( "\"n\"", ), ], ], ), ], line: 445, }, ], ], ), ], line: 439, }, ], ], line: 448, column: 0, }, Variable { names: [ ( "c", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "dump", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 43, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Symbol( "1", ), ], ], line: 449, column: 5, }, Variable { names: [ ( "b", false, ), ], values: [ [ Symbol( "3", ), ], ], line: 449, column: 10, }, Variable { names: [ ( "f", false, ), ], values: [ [ Lambda { args: [], body: CodeBlock { start: 16, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 450, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 450, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "_ENV", ), Symbol( ".", ), Symbol( "c", ), ], line: 450, }, ], ], ), ), ], end: 26, }, line: 450, column: 16, }, ], ], line: 451, column: 0, }, Variable { names: [ ( "s1", false, ), ], values: [ [ Symbol( "\"a constant\"", ), ], ], line: 452, column: 0, }, Variable { names: [ ( "s2", false, ), ], values: [ [ Symbol( "\"another constant\"", ), ], ], line: 453, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 453, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 453, }, Operator( ( "*", true, ), ), Symbol( "3", ), ], ], ), ), ], end: 84, }, line: 454, column: 1, }, ], ], ), ], line: 448, }, ], ], line: 454, column: 2, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 456, }, ], ], ), ], line: 456, }, ], ], ), Call( [], ), ], line: 456, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 454, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 459, }, ], [ Symbol( "1", ), ], [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "header", ), ], line: 459, }, ], ], ), ], line: 459, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "header", ), ], line: 459, }, ], ], ), ], line: 456, }, Variable { names: [ ( "ci", false, ), ( "cn", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "unpack", ), Call( [ [ Symbol( "\"jn\"", ), ], [ Ident { expr: [ Symbol( "c", ), ], line: 461, }, ], [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "header", ), ], line: 461, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 461, }, ], ], line: 461, column: 18, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "ci", ), ], line: 462, }, Operator( ( "==", true, ), ), Symbol( "0x5678", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cn", ), ], line: 462, }, Operator( ( "==", true, ), ), Symbol( "370.5", ), ], ], ), ], line: 461, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "header", ), ], line: 465, }, ], step: None, code: CodeBlock { start: 151, code: [ Variable { names: [ ( "s", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 466, }, ], [ Symbol( "1", ), ], [ Ident { expr: [ Symbol( "i", ), ], line: 466, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 466, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "char", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "byte", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 467, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 467, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 467, }, ], ], ), ], line: 467, }, ], ], ), ], line: 467, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 466, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 468, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 468, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 467, }, ], ], line: 468, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "s", ), ], line: 469, }, Operator( ( "==", true, ), ), Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "c", ), ], line: 469, }, ], ], ), ], line: 468, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 470, }, ], ], ), ], line: 470, }, ], ], ), ], line: 469, }, ], end: 220, }, line: 471, column: 1, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "c", ), ], line: 474, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], step: None, code: CodeBlock { start: 230, code: [ Variable { names: [ ( "st", false, ), ( "msg", false, ), ], values: [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 475, }, ], [ Symbol( "1", ), ], [ Ident { expr: [ Symbol( "i", ), ], line: 475, }, ], ], ), ], line: 475, }, ], ], ), ], line: 475, }, ], ], line: 475, column: 18, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "st", ), ], line: 476, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "msg", ), ], line: 476, }, ], [ Symbol( "\"truncated\"", ), ], ], ), ], line: 476, }, ], ], ), ], line: 475, }, ], end: 263, }, line: 477, column: 1, }, ], end: 3224, }, ), Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'OK'", ), ], ], ), ], line: 478, }, Return( Some( [ [ Ident { expr: [ Symbol( "deep", ), ], line: 481, }, ], ], ), ), ]