--- source: src/main.rs expression: parsed input_file: test-data/lua5.1-tests/constructs.lua --- [ Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing syntax\"", ), ], ], ), ], line: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "3", ), Operator( ( "^", true, ), ), Symbol( "2", ), Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "^", true, ), ), Expr( [ Symbol( "3", ), Operator( ( "^", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 5, }, ], ], ), ], line: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "3", ), Operator( ( "*", true, ), ), Symbol( "4", ), Operator( ( "==", true, ), ), Expr( [ Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "3", ), ], ), Ident { expr: [], line: 6, }, Operator( ( "*", true, ), ), Symbol( "4", ), ], ], ), ], line: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "2", ), Operator( ( "^", true, ), ), Operator( ( "-", false, ), ), Symbol( "2", ), Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "/", true, ), ), Symbol( "4", ), Operator( ( "and", true, ), ), Operator( ( "-", false, ), ), Symbol( "2", ), Operator( ( "^", true, ), ), Operator( ( "-", false, ), ), Operator( ( "-", true, ), ), Symbol( "2", ), Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Operator( ( "-", true, ), ), Operator( ( "-", false, ), ), Symbol( "4", ), ], ], ), ], line: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Symbol( "2", ), Operator( ( ">", true, ), ), Symbol( "3", ), Operator( ( "or", true, ), ), Symbol( "3", ), Operator( ( "<", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 8, }, ], ], ), ], line: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "3", ), Operator( ( "-", true, ), ), Symbol( "1", ), Operator( ( "-", true, ), ), Symbol( "5", ), Operator( ( "==", true, ), ), Symbol( "0", ), Operator( ( "+", true, ), ), Symbol( "0", ), Operator( ( "-", true, ), ), Symbol( "9", ), ], ], ), ], line: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "2", ), Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "4", ), Operator( ( "and", true, ), ), Expr( [ Operator( ( "-", false, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 10, }, Operator( ( "^", true, ), ), Symbol( "2", ), Operator( ( "==", true, ), ), Symbol( "4", ), Operator( ( "and", true, ), ), Symbol( "2", ), Operator( ( "*", true, ), ), Symbol( "2", ), Operator( ( "-", true, ), ), Symbol( "3", ), Operator( ( "-", true, ), ), Symbol( "1", ), Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "2", ), Operator( ( "*", true, ), ), Symbol( "1", ), Operator( ( "+", true, ), ), Symbol( "3", ), Operator( ( "/", true, ), ), Symbol( "3", ), Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Symbol( "1", ), Operator( ( "+", true, ), ), Symbol( "2", ), Operator( ( "..", true, ), ), Symbol( "3", ), Operator( ( "*", true, ), ), Symbol( "1", ), Operator( ( "==", true, ), ), Symbol( "\"33\"", ), ], ], ), ], line: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Symbol( "2", ), Operator( ( "+", true, ), ), Symbol( "1", ), Operator( ( ">", true, ), ), Symbol( "3", ), Operator( ( "*", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 12, }, Operator( ( "and", true, ), ), Symbol( "\"a\"", ), Operator( ( "..", true, ), ), Symbol( "\"b\"", ), Operator( ( ">", true, ), ), Symbol( "\"a\"", ), ], ], ), ], line: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Expr( [ Symbol( "true", ), Operator( ( "or", true, ), ), Symbol( "false", ), ], ), Ident { expr: [], line: 14, }, Operator( ( "and", true, ), ), Symbol( "nil", ), ], ), Ident { expr: [], line: 14, }, ], ], ), ], line: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "true", ), Operator( ( "or", true, ), ), Symbol( "false", ), Operator( ( "and", true, ), ), Symbol( "nil", ), ], ], ), ], line: 14, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Symbol( "1", ), ], [ Symbol( "nil", ), ], ], line: 17, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "-", false, ), ), Expr( [ Symbol( "1", ), Operator( ( "or", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 18, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Expr( [ Symbol( "1", ), Operator( ( "and", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 18, }, Operator( ( "+", true, ), ), Expr( [ Operator( ( "-", false, ), ), Symbol( "1.25", ), Operator( ( "or", true, ), ), Operator( ( "-", false, ), ), Symbol( "4", ), ], ), Ident { expr: [], line: 18, }, Operator( ( "==", true, ), ), Symbol( "0.75", ), ], ], ), ], line: 17, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 18, }, ], values: [ [ Expr( [ Expr( [ Ident { expr: [ Symbol( "b", ), ], line: 19, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 19, }, ], ), Ident { expr: [], line: 19, }, Operator( ( "+", true, ), ), Symbol( "1", ), Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Expr( [ Symbol( "10", ), Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 19, }, ], ), Ident { expr: [], line: 19, }, Operator( ( "+", true, ), ), Symbol( "1", ), Operator( ( "==", true, ), ), Symbol( "11", ), ], ), Ident { expr: [], line: 19, }, ], ], line: 19, column: 24, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 19, }, ], ], ), ], line: 19, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 19, }, ], values: [ [ Expr( [ Expr( [ Expr( [ Symbol( "2", ), Operator( ( "<", true, ), ), Symbol( "3", ), ], ), Ident { expr: [], line: 20, }, Operator( ( "or", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 20, }, Operator( ( "==", true, ), ), Symbol( "true", ), Operator( ( "and", true, ), ), Expr( [ Symbol( "2", ), Operator( ( "<", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Symbol( "4", ), ], ), Ident { expr: [], line: 20, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ), Ident { expr: [], line: 20, }, ], ], line: 20, column: 26, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 20, }, ], ], ), ], line: 20, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 20, }, Ident { expr: [ Symbol( "y", ), ], line: 22, }, ], values: [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], ], line: 22, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Ident { expr: [ Symbol( "x", ), ], line: 23, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 23, }, ], ), Ident { expr: [], line: 23, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 23, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 23, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 22, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 23, }, Ident { expr: [ Symbol( "y", ), ], line: 24, }, ], values: [ [ Symbol( "2", ), ], [ Symbol( "1", ), ], ], line: 24, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Ident { expr: [ Symbol( "x", ), ], line: 25, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 25, }, ], ), Ident { expr: [], line: 25, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 25, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 25, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 24, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "1234567890", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "'1234567890'", ), ], ], ), ], line: 27, }, Operator( ( "and", true, ), ), Symbol( "1234567890", ), Operator( ( "+", true, ), ), Symbol( "1", ), Operator( ( "==", true, ), ), Symbol( "1234567891", ), ], ], ), ], line: 25, }, RepeatLoop { condition: [ Symbol( "1", ), ], body: CodeBlock { start: 349, code: [], end: 350, }, line: 31, column: 3, }, RepeatLoop { condition: [ Symbol( "true", ), ], body: CodeBlock { start: 353, code: [], end: 354, }, line: 31, column: 7, }, WhileLoop { condition: [ Symbol( "false", ), ], body: CodeBlock { start: 359, code: [], end: 360, }, line: 32, column: 4, }, WhileLoop { condition: [ Symbol( "nil", ), ], body: CodeBlock { start: 364, code: [], end: 365, }, line: 32, column: 9, }, DoBlock( CodeBlock { start: 367, code: [ Variable { names: [ ( "a", false, ), ], values: [], line: 35, column: 3, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "x", ], body: CodeBlock { start: 8, code: [ Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 35, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "a", ), ], ), [ Symbol( "1", ), ], ), ], line: 35, column: 7, }, ], ], line: 35, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 35, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Symbol( "1", ), ], ), ], line: 35, column: 15, }, ], ], line: 35, column: 16, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 35, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "G", ), ], ), [ Symbol( "1", ), ], ), ], line: 35, column: 23, }, ], ], line: 35, column: 23, }, ], end: 32, }, line: 35, column: 32, }, ], end: 400, }, ), Function { local: false, name: [ Symbol( "f", ), ], args: [ "i", ], body: CodeBlock { start: 405, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 39, }, ], ], ), ], line: 39, }, Operator( ( "~=", true, ), ), Symbol( "'number'", ), ], body: CodeBlock { start: 8, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "i", ), ], line: 39, }, ], [ Symbol( "'jojo'", ), ], ], ), ), ], end: 14, }, next: None, line: 39, column: 14, }, IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 40, }, Operator( ( ">", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 20, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "i", ), ], line: 40, }, ], [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 40, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 40, }, ], ], ), ), ], end: 31, }, next: None, line: 40, column: 16, }, ], end: 438, }, line: 41, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 41, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "3", ), ], ], ), ], line: 43, }, ], ), ( None, [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "5", ), ], ], ), ], line: 43, }, ], ), ( None, [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 43, }, ], ), ], line: 43, column: 19, }, ], ], line: 43, column: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 44, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 44, }, Operator( ( "==", true, ), ), Symbol( "5", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 44, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "4", ), ], ), Symbol( "]", ), ], line: 44, }, Operator( ( "==", true, ), ), Symbol( "9", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "12", ), ], ), Symbol( "]", ), ], line: 44, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 43, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "nil", ), ], ), Symbol( "]", ), ], line: 45, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 44, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 45, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "'alo'", ), ], ], ), ], line: 46, }, ], ), ( None, [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "'xixi'", ), ], ], ), ], line: 46, }, ], ), ( None, [ Symbol( "nil", ), ], ), ], line: 46, column: 11, }, ], ], line: 46, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 47, }, Operator( ( "==", true, ), ), Symbol( "'alo'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 47, }, Operator( ( "==", true, ), ), Symbol( "'xixi'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 47, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 46, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 47, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "'alo'", ), ], ], ), ], line: 48, }, Operator( ( "..", true, ), ), Symbol( "'xixi'", ), ], ), ], line: 48, column: 8, }, ], ], line: 48, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 49, }, Operator( ( "==", true, ), ), Symbol( "'aloxixi'", ), ], ], ), ], line: 48, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 49, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "f", ), Call( [ [ Table { data: [], line: 50, column: 6, }, ], ], ), ], line: 50, }, ], ), ], line: 50, column: 7, }, ], ], line: 50, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 51, }, Operator( ( "==", true, ), ), Symbol( "'jojo'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 51, }, ], ], ), ], line: 51, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], ], ), ], line: 50, }, Variable { names: [ ( "f", false, ), ], values: [ [ Lambda { args: [ "i", ], body: CodeBlock { start: 592, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 55, }, Operator( ( "<", true, ), ), Symbol( "10", ), ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Symbol( "'a'", ), ], ], ), ), ], end: 9, }, next: Some( IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 56, }, Operator( ( "<", true, ), ), Symbol( "20", ), ], body: CodeBlock { start: 13, code: [ Return( Some( [ [ Symbol( "'b'", ), ], ], ), ), ], end: 17, }, next: Some( IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 57, }, Operator( ( "<", true, ), ), Symbol( "30", ), ], body: CodeBlock { start: 21, code: [ Return( Some( [ [ Symbol( "'c'", ), ], ], ), ), ], end: 25, }, next: None, line: 58, column: 1, }, ), line: 58, column: 1, }, ), line: 58, column: 1, }, ], end: 619, }, line: 59, column: 1, }, ], ], line: 59, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "3", ), ], ], ), ], line: 61, }, Operator( ( "==", true, ), ), Symbol( "'a'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "12", ), ], ], ), ], line: 61, }, Operator( ( "==", true, ), ), Symbol( "'b'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "26", ), ], ], ), ], line: 61, }, Operator( ( "==", true, ), ), Symbol( "'c'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "100", ), ], ], ), ], line: 61, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 59, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "1000", ), ], step: None, code: CodeBlock { start: 656, code: [ Break, ], end: 659, }, line: 63, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "n", ), ], line: 63, }, ], values: [ [ Symbol( "100", ), ], ], line: 64, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 64, }, ], values: [ [ Symbol( "3", ), ], ], line: 65, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 65, }, ], values: [ [ Table { data: [], line: 66, column: 4, }, ], ], line: 66, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 66, }, ], values: [ [ Symbol( "nil", ), ], ], line: 68, column: 0, }, WhileLoop { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 68, }, ], body: CodeBlock { start: 680, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 69, }, ], values: [ [ Symbol( "0", ), ], ], line: 69, column: 4, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "n", ), ], line: 69, }, ], step: None, code: CodeBlock { start: 11, code: [ ForLoop { iter: "i", start: [ Ident { expr: [ Symbol( "i", ), ], line: 69, }, ], end: [ Symbol( "1", ), ], step: Some( [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ), code: CodeBlock { start: 10, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 69, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), ], line: 69, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 69, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 69, }, ], ), Symbol( "]", ), ], line: 69, }, ], values: [ [ Symbol( "1", ), ], ], line: 69, column: 13, }, ], end: 24, }, line: 69, column: 24, }, ], end: 37, }, line: 69, column: 37, }, ], end: 719, }, line: 70, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 71, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "n", ), ], line: 71, }, Operator( ( "*", true, ), ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 71, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 71, }, Operator( ( "/", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 71, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 70, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 72, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 72, }, ], ), Symbol( "]", ), ], line: 72, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 72, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 72, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 72, }, ], ], ), ], line: 71, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "b", ], body: CodeBlock { start: 769, code: [ Variable { names: [ ( "x", false, ), ], values: [ [ Symbol( "1", ), ], ], line: 75, column: 5, }, RepeatLoop { condition: [ Ident { expr: [ Symbol( "x", ), ], line: 83, }, Operator( ( ">=", true, ), ), Symbol( "12", ), ], body: CodeBlock { start: 6, code: [ Variable { names: [ ( "a", false, ), ], values: [], line: 77, column: 3, }, IfStatement { condition: [ Ident { expr: [ Symbol( "b", ), ], line: 78, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], body: CodeBlock { start: 8, code: [ Variable { names: [ ( "b", false, ), ], values: [ [ Symbol( "1", ), ], ], line: 78, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 78, }, ], values: [ [ Symbol( "10", ), ], ], line: 78, column: 9, }, Break, ], end: 19, }, next: Some( IfStatement { condition: [ Ident { expr: [ Symbol( "b", ), ], line: 79, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], body: CodeBlock { start: 23, code: [ Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 79, }, ], values: [ [ Symbol( "20", ), ], ], line: 79, column: 4, }, Break, ], end: 30, }, next: Some( IfStatement { condition: [ Ident { expr: [ Symbol( "b", ), ], line: 80, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], body: CodeBlock { start: 34, code: [ Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 80, }, ], values: [ [ Symbol( "30", ), ], ], line: 80, column: 4, }, ], end: 39, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 39, code: [ Variable { names: [ ( "a", false, ), ( "b", false, ), ( "c", false, ), ( "d", false, ), ], values: [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "sin", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 81, }, ], ], line: 81, column: 16, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 81, }, ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 81, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 81, column: 22, }, ], end: 62, }, next: None, line: 82, column: 1, }, ), line: 82, column: 1, }, ), line: 82, column: 1, }, ), line: 82, column: 1, }, ], end: 69, }, line: 83, column: 4, }, Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 84, }, ], ], ), ), ], end: 846, }, line: 85, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 87, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 87, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "3", ), ], ], ), ], line: 87, }, Operator( ( "==", true, ), ), Symbol( "30", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "4", ), ], ], ), ], line: 87, }, Operator( ( "==", true, ), ), Symbol( "12", ), ], ], ), ], line: 85, }, Variable { names: [ ( "f", false, ), ], values: [ [ Lambda { args: [ "i", ], body: CodeBlock { start: 884, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 91, }, Operator( ( "<", true, ), ), Symbol( "10", ), ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Symbol( "'a'", ), ], ], ), ), ], end: 8, }, next: Some( IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 92, }, Operator( ( "<", true, ), ), Symbol( "20", ), ], body: CodeBlock { start: 12, code: [ Return( Some( [ [ Symbol( "'b'", ), ], ], ), ), ], end: 15, }, next: Some( IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 93, }, Operator( ( "<", true, ), ), Symbol( "30", ), ], body: CodeBlock { start: 19, code: [ Return( Some( [ [ Symbol( "'c'", ), ], ], ), ), ], end: 22, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 22, code: [ Return( Some( [ [ Symbol( "8", ), ], ], ), ), ], end: 25, }, next: None, line: 95, column: 1, }, ), line: 95, column: 1, }, ), line: 95, column: 1, }, ), line: 95, column: 1, }, ], end: 910, }, line: 96, column: 1, }, ], ], line: 96, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "3", ), ], ], ), ], line: 98, }, Operator( ( "==", true, ), ), Symbol( "'a'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "12", ), ], ], ), ], line: 98, }, Operator( ( "==", true, ), ), Symbol( "'b'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "26", ), ], ], ), ], line: 98, }, Operator( ( "==", true, ), ), Symbol( "'c'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "100", ), ], ], ), ], line: 98, }, Operator( ( "==", true, ), ), Symbol( "8", ), ], ], ), ], line: 96, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Symbol( "nil", ), ], [ Symbol( "23", ), ], ], line: 100, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 100, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "100", ), ], ], ), ], line: 101, }, Operator( ( "*", true, ), ), Symbol( "2", ), Operator( ( "+", true, ), ), Symbol( "3", ), Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 101, }, ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 101, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 101, }, Operator( ( "+", true, ), ), Symbol( "2", ), ], ), ], line: 101, column: 20, }, ], ], line: 101, column: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 102, }, Operator( ( "==", true, ), ), Symbol( "19", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 102, }, Operator( ( "==", true, ), ), Symbol( "25", ), ], ], ), ], line: 101, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 102, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "f", ), ], ), [ Symbol( "2", ), Operator( ( "+", true, ), ), Symbol( "3", ), Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 103, }, ], ), ( Some( [ Symbol( "a", ), ], ), [ Ident { expr: [ Symbol( "b", ), ], line: 103, }, Operator( ( "+", true, ), ), Symbol( "2", ), ], ), ], line: 103, column: 17, }, ], ], line: 103, column: 17, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( ".", ), Symbol( "f", ), ], line: 104, }, Operator( ( "==", true, ), ), Symbol( "5", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( ".", ), Symbol( "a", ), ], line: 104, }, Operator( ( "==", true, ), ), Symbol( "25", ), ], ], ), ], line: 103, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 104, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "y", ), ], ), [ Symbol( "1", ), ], ), ], line: 106, column: 7, }, ], ], line: 106, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 106, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "y", ), ], line: 107, }, ], ), ], line: 107, column: 7, }, ], ], line: 107, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 108, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 107, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "i", ], body: CodeBlock { start: 1043, code: [ WhileLoop { condition: [ Symbol( "1", ), ], body: CodeBlock { start: 3, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 112, }, Operator( ( ">", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 112, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 112, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], line: 112, column: 6, }, ], end: 12, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 12, code: [ Return( None, ), ], end: 15, }, next: None, line: 113, column: 4, }, ), line: 113, column: 4, }, ], end: 20, }, line: 114, column: 1, }, ], end: 1065, }, line: 115, column: 1, }, Function { local: false, name: [ Symbol( "g", ), ], args: [ "i", ], body: CodeBlock { start: 1071, code: [ WhileLoop { condition: [ Symbol( "1", ), ], body: CodeBlock { start: 3, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 119, }, Operator( ( ">", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 119, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 119, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], line: 119, column: 5, }, ], end: 11, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 11, code: [ Return( None, ), ], end: 13, }, next: None, line: 120, column: 3, }, ), line: 120, column: 3, }, ], end: 17, }, line: 121, column: 1, }, ], end: 1089, }, line: 122, column: 1, }, Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 122, }, Ident { expr: [ Symbol( "g", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 124, }, DoBlock( CodeBlock { start: 1100, code: [ Function { local: false, name: [ Symbol( "f", ), ], args: [], body: CodeBlock { start: 4, code: [ Return( Some( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), ), ], end: 12, }, line: 127, column: 12, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ( "c", false, ), ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 128, }, ], ], line: 128, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 129, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 129, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 129, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 128, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 129, }, Ident { expr: [ Symbol( "b", ), ], line: 130, }, Ident { expr: [ Symbol( "c", ), ], line: 130, }, ], values: [ [ Expr( [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 130, }, ], ), Ident { expr: [], line: 130, }, ], ], line: 130, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 131, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 131, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 131, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 130, }, ], end: 1164, }, ), Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 134, }, ], ], line: 134, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 135, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 135, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 134, }, Function { local: false, name: [ Symbol( "g", ), ], args: [], body: CodeBlock { start: 1189, code: [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 137, }, Return( None, ), ], end: 1196, }, line: 137, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "g", ), Call( [], ), ], line: 138, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 137, }, Function { local: false, name: [ Symbol( "g", ), ], args: [], body: CodeBlock { start: 1209, code: [ Return( Some( [ [ Symbol( "nil", ), Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 139, }, ], ], ), ), ], end: 1216, }, line: 139, column: 11, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 139, }, Ident { expr: [ Symbol( "b", ), ], line: 140, }, ], values: [ [ Ident { expr: [ Symbol( "g", ), Call( [], ), ], line: 140, }, ], ], line: 140, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 141, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 141, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 140, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 141, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 143, }, ], values: [ [ MultilineString( "[[\nreturn function ( a , b , c , d , e )\n local x = a >= b or c or ( d and e ) or nil\n return x\nend , { a = 1 , b = 2 >= 1 , } or { 1 };\n]]", ), ], ], line: 151, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 151, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gsub", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 152, }, ], [ Symbol( "\"%s+\"", ), ], [ Symbol( "\"\\n\"", ), ], ], ), ], line: 152, }, ], ], line: 152, column: 13, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 152, }, Ident { expr: [ Symbol( "a", ), ], line: 153, }, ], values: [ [ Ident { expr: [ Symbol( "loadstring", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 153, }, ], ], ), Call( [], ), ], line: 153, }, ], ], line: 153, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "a", ), ], line: 154, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), ], line: 154, }, ], ], ), ], line: 153, }, Function { local: false, name: [ Symbol( "g", ), ], args: [ "a", "b", "c", "d", "e", ], body: CodeBlock { start: 1288, code: [ IfStatement { condition: [ Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 157, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 157, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 157, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 157, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "e", ), ], line: 157, }, Operator( ( "or", true, ), ), Symbol( "nil", ), ], ), Ident { expr: [], line: 157, }, ], body: CodeBlock { start: 16, code: [ Return( Some( [ [ Symbol( "0", ), ], ], ), ), ], end: 20, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 20, code: [ Return( Some( [ [ Symbol( "1", ), ], ], ), ), ], end: 24, }, next: None, line: 157, column: 24, }, ), line: 157, column: 24, }, ], end: 1314, }, line: 158, column: 1, }, Function { local: false, name: [ Symbol( "h", ), ], args: [ "a", "b", "c", "d", "e", ], body: CodeBlock { start: 1327, code: [ WhileLoop { condition: [ Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 161, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 161, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 161, }, Operator( ( "or", true, ), ), Expr( [ Ident { expr: [ Symbol( "d", ), ], line: 161, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "e", ), ], line: 161, }, ], ), Ident { expr: [], line: 161, }, Operator( ( "or", true, ), ), Symbol( "nil", ), ], ), Ident { expr: [], line: 161, }, ], body: CodeBlock { start: 17, code: [ Return( Some( [ [ Symbol( "1", ), ], ], ), ), ], end: 21, }, line: 161, column: 21, }, Return( Some( [ [ Symbol( "0", ), ], ], ), ), ], end: 1353, }, line: 163, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "2", ), ], [ Symbol( "1", ), ], ], ), ], line: 165, }, Operator( ( "==", true, ), ), Symbol( "true", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "g", ), Call( [ [ Symbol( "2", ), ], [ Symbol( "1", ), ], ], ), ], line: 165, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "h", ), Call( [ [ Symbol( "2", ), ], [ Symbol( "1", ), ], ], ), ], line: 165, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 163, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "'a'", ), ], ], ), ], line: 166, }, Operator( ( "==", true, ), ), Symbol( "'a'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "g", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "'a'", ), ], ], ), ], line: 166, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "h", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "'a'", ), ], ], ), ], line: 166, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 165, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "'a'", ), ], ], ), ], line: 167, }, Operator( ( "~=", true, ), ), Symbol( "nil", ), ], [ Symbol( "\"\"", ), ], ], ), ], line: 166, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "'a'", ), ], ], ), ], line: 170, }, Operator( ( "==", true, ), ), Symbol( "'a'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "g", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "'a'", ), ], ], ), ], line: 170, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "h", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "'a'", ), ], ], ), ], line: 170, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 169, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "nil", ), ], [ Symbol( "1", ), ], [ Symbol( "'x'", ), ], ], ), ], line: 171, }, Operator( ( "==", true, ), ), Symbol( "'x'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "g", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "nil", ), ], [ Symbol( "1", ), ], [ Symbol( "'x'", ), ], ], ), ], line: 171, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "h", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "nil", ), ], [ Symbol( "1", ), ], [ Symbol( "'x'", ), ], ], ), ], line: 171, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 170, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "nil", ), ], [ Symbol( "nil", ), ], [ Symbol( "'x'", ), ], ], ), ], line: 173, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "g", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "nil", ), ], [ Symbol( "nil", ), ], [ Symbol( "'x'", ), ], ], ), ], line: 173, }, Operator( ( "==", true, ), ), Symbol( "0", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "h", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "nil", ), ], [ Symbol( "nil", ), ], [ Symbol( "'x'", ), ], ], ), ], line: 173, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 172, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "nil", ), ], [ Symbol( "1", ), ], [ Symbol( "nil", ), ], ], ), ], line: 175, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "g", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "nil", ), ], [ Symbol( "1", ), ], [ Symbol( "nil", ), ], ], ), ], line: 175, }, Operator( ( "==", true, ), ), Symbol( "0", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "h", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "nil", ), ], [ Symbol( "1", ), ], [ Symbol( "nil", ), ], ], ), ], line: 175, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 174, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "1", ), Operator( ( "and", true, ), ), Symbol( "2", ), Operator( ( "<", true, ), ), Symbol( "3", ), Operator( ( "==", true, ), ), Symbol( "true", ), Operator( ( "and", true, ), ), Symbol( "2", ), Operator( ( "<", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Symbol( "'a'", ), Operator( ( "<", true, ), ), Symbol( "'b'", ), Operator( ( "==", true, ), ), Symbol( "true", ), ], ], ), ], line: 176, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 178, }, ], values: [ [ Symbol( "2", ), Operator( ( "<", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Symbol( "3", ), ], ], line: 179, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 179, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 179, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 179, }, ], values: [ [ Symbol( "2", ), Operator( ( "<", true, ), ), Symbol( "1", ), Operator( ( "or", true, ), ), Expr( [ Symbol( "2", ), Operator( ( ">", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Symbol( "'a'", ), ], ), Ident { expr: [], line: 180, }, ], ], line: 180, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 180, }, Operator( ( "==", true, ), ), Symbol( "'a'", ), ], ], ), ], line: 180, }, DoBlock( CodeBlock { start: 1665, code: [ Variable { names: [ ( "a", false, ), ], values: [], line: 184, column: 3, }, IfStatement { condition: [ Symbol( "nil", ), ], body: CodeBlock { start: 6, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 184, }, ], values: [ [ Symbol( "1", ), ], ], line: 184, column: 4, }, ], end: 11, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 11, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 184, }, ], values: [ [ Symbol( "2", ), ], ], line: 184, column: 4, }, ], end: 16, }, next: None, line: 184, column: 16, }, ), line: 184, column: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 185, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 184, }, ], end: 1689, }, ), Function { local: false, name: [ Symbol( "F", ), ], args: [ "a", ], body: CodeBlock { start: 1694, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getinfo", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "\"n\"", ), ], ], ), Symbol( ".", ), Symbol( "name", ), ], line: 189, }, Operator( ( "==", true, ), ), Symbol( "'F'", ), ], ], ), ], line: 189, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 190, }, ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), ), ], end: 1716, }, line: 191, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 191, }, Ident { expr: [ Symbol( "b", ), ], line: 193, }, ], values: [ [ Ident { expr: [ Symbol( "F", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 193, }, Operator( ( "~=", true, ), ), Symbol( "nil", ), ], ], line: 193, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 193, }, Operator( ( "==", true, ), ), Symbol( "true", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 193, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 193, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 193, }, Ident { expr: [ Symbol( "b", ), ], line: 194, }, ], values: [ [ Ident { expr: [ Symbol( "F", ), Call( [ [ Symbol( "nil", ), ], ], ), ], line: 194, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], line: 194, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 194, }, Operator( ( "==", true, ), ), Symbol( "true", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 194, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 194, }, Function { local: false, name: [ Symbol( "ID", ), ], args: [ "x", ], body: CodeBlock { start: 1764, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 201, }, ], ], ), ), ], end: 1767, }, line: 201, column: 8, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "t", "i", ], body: CodeBlock { start: 1774, code: [ Variable { names: [ ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "n", ), ], line: 204, }, ], ], line: 205, column: 0, }, Variable { names: [ ( "res", false, ), ], values: [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "mod", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "floor", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 205, }, Operator( ( "/", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 205, }, ], ], ), ], line: 205, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 205, }, ], ], ), ], line: 205, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 205, column: 20, }, Alter { names: [ Ident { expr: [ Symbol( "c", ), ], line: 205, }, ], values: [ [ Ident { expr: [ Symbol( "c", ), ], line: 206, }, Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 206, }, ], ], line: 207, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "res", ), ], line: 207, }, ], ), Symbol( "]", ), ], line: 207, }, ], ], ), ), ], end: 1811, }, line: 208, column: 1, }, Variable { names: [ ( "arg", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "\" ( 1 < 2 ) \"", ), ], ), ( None, [ Symbol( "\" ( 1 >= 2 ) \"", ), ], ), ( None, [ Symbol( "\" F ( ) \"", ), ], ), ( None, [ Symbol( "\" nil \"", ), ], ), ( Some( [ Symbol( "n", ), ], ), [ Symbol( "4", ), ], ), ], line: 210, column: 16, }, ], ], line: 212, column: 0, }, Variable { names: [ ( "op", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "\" and \"", ), ], ), ( None, [ Symbol( "\" or \"", ), ], ), ( None, [ Symbol( "\" == \"", ), ], ), ( None, [ Symbol( "\" ~= \"", ), ], ), ( Some( [ Symbol( "n", ), ], ), [ Symbol( "4", ), ], ), ], line: 212, column: 16, }, ], ], line: 214, column: 0, }, Variable { names: [ ( "neg", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "\" \"", ), ], ), ( None, [ Symbol( "\" not \"", ), ], ), ( Some( [ Symbol( "n", ), ], ), [ Symbol( "2", ), ], ), ], line: 214, column: 12, }, ], ], line: 216, column: 0, }, Variable { names: [ ( "i", false, ), ], values: [ [ Symbol( "0", ), ], ], line: 217, column: 0, }, RepeatLoop { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 238, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 238, }, ], body: CodeBlock { start: 1860, code: [ Alter { names: [ Ident { expr: [ Symbol( "c", ), ], line: 218, }, ], values: [ [ Symbol( "1", ), ], ], line: 219, column: 0, }, Variable { names: [ ( "s", false, ), ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "neg", ), ], line: 219, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 219, }, ], ], ), ], line: 219, }, Operator( ( "..", true, ), ), Symbol( "'ID('", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "neg", ), ], line: 219, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 219, }, ], ], ), ], line: 219, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "arg", ), ], line: 219, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 219, }, ], ], ), ], line: 219, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "op", ), ], line: 219, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 219, }, ], ], ), ], line: 219, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "neg", ), ], line: 220, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 220, }, ], ], ), ], line: 219, }, Operator( ( "..", true, ), ), Symbol( "'ID('", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "arg", ), ], line: 220, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 220, }, ], ], ), ], line: 220, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "op", ), ], line: 220, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 220, }, ], ], ), ], line: 220, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "neg", ), ], line: 220, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 220, }, ], ], ), ], line: 220, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "arg", ), ], line: 220, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 220, }, ], ], ), ], line: 220, }, Operator( ( "..", true, ), ), Symbol( "'))'", ), ], ], line: 221, column: 0, }, Variable { names: [ ( "s1", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gsub", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 221, }, ], [ Symbol( "'ID'", ), ], [ Symbol( "''", ), ], ], ), ], line: 221, }, ], ], line: 221, column: 13, }, Alter { names: [ Ident { expr: [ Symbol( "K", ), ], line: 221, }, Ident { expr: [ Symbol( "X", ), ], line: 222, }, Ident { expr: [ Symbol( "NX", ), ], line: 222, }, Ident { expr: [ Symbol( "WX1", ), ], line: 222, }, Ident { expr: [ Symbol( "WX2", ), ], line: 222, }, ], values: [ [ Symbol( "nil", ), ], ], line: 222, column: 11, }, Alter { names: [ Ident { expr: [ Symbol( "s", ), ], line: 222, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ MultilineString( "[[\n local a = %s\n local b = not %s\n K = b\n local xxx; \n if %s then X = a else X = b end\n if %s then NX = b else NX = a end\n while %s do WX1 = a; break end\n while %s do WX2 = a; break end\n repeat if (%s) then break end; assert(b) until not(%s)\n ]]", ), ], [ Ident { expr: [ Symbol( "s1", ), ], line: 233, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 233, }, ], [ Ident { expr: [ Symbol( "s1", ), ], line: 233, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 233, }, ], [ Ident { expr: [ Symbol( "s1", ), ], line: 233, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 233, }, ], [ Ident { expr: [ Symbol( "s1", ), ], line: 233, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 233, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 233, }, ], ], ), ], line: 223, }, ], ], line: 233, column: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "loadstring", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 234, }, ], ], ), ], line: 234, }, ], ], ), Call( [], ), ], line: 233, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "X", ), ], line: 235, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "NX", ), ], line: 235, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "WX1", ), ], line: 235, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "K", ), ], line: 235, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "WX2", ), ], line: 235, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "K", ), ], line: 235, }, ], ], ), ], line: 234, }, IfStatement { condition: [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "mod", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 236, }, ], [ Symbol( "4000", ), ], ], ), ], line: 236, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 162, code: [ Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 236, }, ], end: 167, }, next: None, line: 236, column: 17, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 236, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 237, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 237, column: 5, }, ], end: 2033, }, line: 238, column: 4, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'OK'", ), ], ], ), ], line: 238, }, ]