--- source: src/main.rs expression: parsed input_file: test-data/lua5.2-tests/main.lua --- [ IfStatement { condition: [ Ident { expr: [ Symbol( "_port", ), ], line: 4, }, ], body: CodeBlock { start: 3, code: [ Return( None, ), ], end: 5, }, next: None, line: 4, column: 5, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing lua.c options\"", ), ], ], ), ], line: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "execute", ), Call( [], ), ], line: 8, }, ], ], ), ], line: 6, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), ], line: 8, }, ], values: [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "tmpname", ), Call( [], ), ], line: 10, }, ], ], line: 10, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "otherprog", ), ], line: 10, }, ], values: [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "tmpname", ), Call( [], ), ], line: 11, }, ], ], line: 11, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "out", ), ], line: 11, }, ], values: [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "tmpname", ), Call( [], ), ], line: 12, }, ], ], line: 14, column: 0, }, DoBlock( CodeBlock { start: 39, code: [ Variable { names: [ ( "i", false, ), ], values: [ [ Symbol( "0", ), ], ], line: 16, column: 0, }, WhileLoop { condition: [ Ident { expr: [ Symbol( "arg", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 16, }, ], ), Symbol( "]", ), ], line: 16, }, ], body: CodeBlock { start: 10, code: [ Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 16, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 16, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], line: 16, column: 5, }, ], end: 16, }, line: 16, column: 12, }, Alter { names: [ Ident { expr: [ Symbol( "progname", ), ], line: 16, }, ], values: [ [ Ident { expr: [ Symbol( "arg", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 17, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 17, }, ], ], line: 17, column: 8, }, ], end: 64, }, ), Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"progname: \"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "progname", ), ], line: 19, }, ], ], ), ], line: 18, }, Variable { names: [ ( "prepfile", false, ), ], values: [ [ Lambda { args: [ "s", "p", ], body: CodeBlock { start: 79, code: [ Alter { names: [ Ident { expr: [ Symbol( "p", ), ], line: 22, }, ], values: [ [ Ident { expr: [ Symbol( "p", ), ], line: 22, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 22, }, ], ], line: 22, column: 5, }, Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "output", ), Call( [ [ Ident { expr: [ Symbol( "p", ), ], line: 23, }, ], ], ), ], line: 22, }, Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "write", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 24, }, ], ], ), ], line: 23, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "close", ), Call( [], ), ], line: 25, }, ], ], ), ], line: 24, }, ], end: 105, }, line: 26, column: 1, }, ], ], line: 28, column: 0, }, Function { local: false, name: [ Symbol( "getoutput", ), ], args: [], body: CodeBlock { start: 109, code: [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "input", ), Call( [ [ Ident { expr: [ Symbol( "out", ), ], line: 29, }, ], ], ), ], line: 29, }, Variable { names: [ ( "t", false, ), ], values: [ [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "read", ), Call( [ [ Symbol( "\"*a\"", ), ], ], ), ], line: 30, }, ], ], line: 30, column: 9, }, Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "input", ), Call( [], ), Symbol( ":", ), Symbol( "close", ), Call( [], ), ], line: 30, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "remove", ), Call( [ [ Ident { expr: [ Symbol( "out", ), ], line: 32, }, ], ], ), ], line: 32, }, ], ], ), ], line: 31, }, Return( Some( [ [ Ident { expr: [ Symbol( "t", ), ], line: 33, }, ], ], ), ), ], end: 145, }, line: 34, column: 1, }, Function { local: false, name: [ Symbol( "checkprogout", ), ], args: [ "s", ], body: CodeBlock { start: 150, code: [ Variable { names: [ ( "t", false, ), ], values: [ [ Ident { expr: [ Symbol( "getoutput", ), Call( [], ), ], line: 37, }, ], ], line: 38, column: 0, }, ForFuncLoop { iters: [ "line", ], expr: [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gmatch", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 38, }, ], [ Symbol( "\".-\\n\"", ), ], ], ), ], line: 38, }, ], stop: None, initial: None, code: CodeBlock { start: 18, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 39, }, ], [ Ident { expr: [ Symbol( "line", ), ], line: 39, }, ], [ Symbol( "1", ), ], [ Symbol( "true", ), ], ], ), ], line: 39, }, ], ], ), ], line: 39, }, ], end: 34, }, line: 40, column: 1, }, ], end: 185, }, line: 41, column: 1, }, Function { local: false, name: [ Symbol( "checkout", ), ], args: [ "s", ], body: CodeBlock { start: 190, code: [ Variable { names: [ ( "t", false, ), ], values: [ [ Ident { expr: [ Symbol( "getoutput", ), Call( [], ), ], line: 44, }, ], ], line: 45, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "s", ), ], line: 45, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "t", ), ], line: 45, }, ], body: CodeBlock { start: 11, code: [ Ident { expr: [ Symbol( "print", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"'%s' - '%s'\\n\"", ), ], [ Ident { expr: [ Symbol( "s", ), ], line: 45, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 45, }, ], ], ), ], line: 45, }, ], ], ), ], line: 45, }, ], end: 25, }, next: None, line: 45, column: 19, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 46, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "t", ), ], line: 46, }, ], ], ), ], line: 45, }, Return( Some( [ [ Ident { expr: [ Symbol( "t", ), ], line: 47, }, ], ], ), ), ], end: 224, }, line: 48, column: 1, }, Function { local: false, name: [ Symbol( "auxrun", ), ], args: [ "...", ], body: CodeBlock { start: 229, code: [ Variable { names: [ ( "s", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "...", ), ], ], ), ], line: 51, }, ], ], line: 51, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "s", ), ], line: 51, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gsub", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 52, }, ], [ Symbol( "\"lua\"", ), ], [ Symbol( "'\"'", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "progname", ), ], line: 52, }, Operator( ( "..", true, ), ), Symbol( "'\"'", ), ], [ Symbol( "1", ), ], ], ), ], line: 52, }, ], ], line: 53, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "execute", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 53, }, ], ], ), ], line: 53, }, ], ], ), ), ], end: 264, }, line: 54, column: 1, }, Function { local: false, name: [ Symbol( "RUN", ), ], args: [ "...", ], body: CodeBlock { start: 269, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "auxrun", ), Call( [ [ Symbol( "...", ), ], ], ), ], line: 57, }, ], ], ), ], line: 57, }, ], end: 277, }, line: 58, column: 1, }, Function { local: false, name: [ Symbol( "NoRun", ), ], args: [ "...", ], body: CodeBlock { start: 282, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "auxrun", ), Call( [ [ Symbol( "...", ), ], ], ), ], line: 61, }, ], ], ), ], line: 61, }, ], end: 291, }, line: 62, column: 1, }, Function { local: false, name: [ Symbol( "NoRunMsg", ), ], args: [ "...", ], body: CodeBlock { start: 296, code: [ Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"\\n(the next error is expected by the test)\"", ), ], ], ), ], line: 65, }, Return( Some( [ [ Ident { expr: [ Symbol( "NoRun", ), Call( [ [ Symbol( "...", ), ], ], ), ], line: 66, }, ], ], ), ), ], end: 306, }, line: 67, column: 1, }, Ident { expr: [ Symbol( "prepfile", ), Call( [ [ Symbol( "\"print(package.path)\"", ), ], ], ), ], line: 67, }, Ident { expr: [ Symbol( "RUN", ), Call( [ [ Symbol( "\"env LUA_INIT= LUA_PATH=x lua %s > %s\"", ), ], [ Ident { expr: [ Symbol( "prog", ), ], line: 72, }, ], [ Ident { expr: [ Symbol( "out", ), ], line: 72, }, ], ], ), ], line: 70, }, Ident { expr: [ Symbol( "checkout", ), Call( [ [ Symbol( "\"x\\n\"", ), ], ], ), ], line: 72, }, Ident { expr: [ Symbol( "RUN", ), Call( [ [ Symbol( "\"env LUA_INIT= LUA_PATH_5_2=y LUA_PATH=x lua %s > %s\"", ), ], [ Ident { expr: [ Symbol( "prog", ), ], line: 75, }, ], [ Ident { expr: [ Symbol( "out", ), ], line: 75, }, ], ], ), ], line: 73, }, Ident { expr: [ Symbol( "checkout", ), Call( [ [ Symbol( "\"y\\n\"", ), ], ], ), ], line: 75, }, Ident { expr: [ Symbol( "prepfile", ), Call( [ [ Symbol( "\"print(package.cpath)\"", ), ], ], ), ], line: 76, }, Ident { expr: [ Symbol( "RUN", ), Call( [ [ Symbol( "\"env LUA_INIT= LUA_CPATH=xuxu lua %s > %s\"", ), ], [ Ident { expr: [ Symbol( "prog", ), ], line: 80, }, ], [ Ident { expr: [ Symbol( "out", ), ], line: 80, }, ], ], ), ], line: 78, }, Ident { expr: [ Symbol( "checkout", ), Call( [ [ Symbol( "\"xuxu\\n\"", ), ], ], ), ], line: 80, }, Ident { expr: [ Symbol( "RUN", ), Call( [ [ Symbol( "\"env LUA_INIT= LUA_CPATH_5_2=yacc LUA_CPATH=x lua %s > %s\"", ), ], [ Ident { expr: [ Symbol( "prog", ), ], line: 83, }, ], [ Ident { expr: [ Symbol( "out", ), ], line: 83, }, ], ], ), ], line: 81, }, Ident { expr: [ Symbol( "checkout", ), Call( [ [ Symbol( "\"yacc\\n\"", ), ], ], ), ], line: 83, }, Ident { expr: [ Symbol( "prepfile", ), Call( [ [ Symbol( "\"print(X)\"", ), ], ], ), ], line: 84, }, Ident { expr: [ Symbol( "RUN", ), Call( [ [ Symbol( "'env LUA_INIT=\"X=3\" lua %s > %s'", ), ], [ Ident { expr: [ Symbol( "prog", ), ], line: 87, }, ], [ Ident { expr: [ Symbol( "out", ), ], line: 87, }, ], ], ), ], line: 86, }, Ident { expr: [ Symbol( "checkout", ), Call( [ [ Symbol( "\"3\\n\"", ), ], ], ), ], line: 87, }, Ident { expr: [ Symbol( "prepfile", ), Call( [ [ Symbol( "\"print(X)\"", ), ], ], ), ], line: 88, }, Ident { expr: [ Symbol( "RUN", ), Call( [ [ Symbol( "'env LUA_INIT_5_2=\"X=10\" LUA_INIT=\"X=3\" lua %s > %s'", ), ], [ Ident { expr: [ Symbol( "prog", ), ], line: 91, }, ], [ Ident { expr: [ Symbol( "out", ), ], line: 91, }, ], ], ), ], line: 90, }, Ident { expr: [ Symbol( "checkout", ), Call( [ [ Symbol( "\"10\\n\"", ), ], ], ), ], line: 91, }, Ident { expr: [ Symbol( "prepfile", ), Call( [ [ Symbol( "\"print(package.path, package.cpath)\"", ), ], ], ), ], line: 92, }, Ident { expr: [ Symbol( "RUN", ), Call( [ [ Symbol( "'env LUA_INIT=\"error(10)\" LUA_PATH=xxx LUA_CPATH=xxx lua -E %s > %s'", ), ], [ Ident { expr: [ Symbol( "prog", ), ], line: 96, }, ], [ Ident { expr: [ Symbol( "out", ), ], line: 97, }, ], ], ), ], line: 95, }, Variable { names: [ ( "defaultpath", false, ), ], values: [ [ Ident { expr: [ Symbol( "getoutput", ), Call( [], ), ], line: 98, }, ], ], line: 98, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "defaultpath", ), ], line: 98, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "match", ), Call( [ [ Ident { expr: [ Symbol( "defaultpath", ), ], line: 99, }, ], [ Symbol( "\"^(.-)\\t\"", ), ], ], ), ], line: 99, }, ], ], line: 99, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "defaultpath", ), ], line: 100, }, ], [ Symbol( "\"xxx\"", ), ], ], ), ], line: 100, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "defaultpath", ), ], line: 100, }, ], [ Symbol( "\"lua\"", ), ], ], ), ], line: 100, }, ], ], ), ], line: 99, }, Function { local: true, name: [ Symbol( "convert", ), ], args: [ "p", ], body: CodeBlock { start: 449, code: [ Ident { expr: [ Symbol( "prepfile", ), Call( [ [ Symbol( "\"print(package.path)\"", ), ], ], ), ], line: 105, }, Ident { expr: [ Symbol( "RUN", ), Call( [ [ Symbol( "'env LUA_PATH=\"%s\" lua %s > %s'", ), ], [ Ident { expr: [ Symbol( "p", ), ], line: 106, }, ], [ Ident { expr: [ Symbol( "prog", ), ], line: 106, }, ], [ Ident { expr: [ Symbol( "out", ), ], line: 106, }, ], ], ), ], line: 105, }, Variable { names: [ ( "expected", false, ), ], values: [ [ Ident { expr: [ Symbol( "getoutput", ), Call( [], ), ], line: 107, }, ], ], line: 107, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "expected", ), ], line: 107, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Ident { expr: [ Symbol( "expected", ), ], line: 108, }, ], [ Symbol( "1", ), ], [ Operator( ( "-", false, ), ), Symbol( "2", ), ], ], ), ], line: 108, }, ], ], line: 108, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gsub", ), Call( [ [ Ident { expr: [ Symbol( "p", ), ], line: 109, }, ], [ Symbol( "\";;\"", ), ], [ Symbol( "\";\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "defaultpath", ), ], line: 109, }, Operator( ( "..", true, ), ), Symbol( "\";\"", ), ], ], ), ], line: 109, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "expected", ), ], line: 109, }, ], ], ), ], line: 108, }, ], end: 502, }, line: 110, column: 1, }, Ident { expr: [ Symbol( "convert", ), Call( [ [ Symbol( "\";\"", ), ], ], ), ], line: 110, }, Ident { expr: [ Symbol( "convert", ), Call( [ [ Symbol( "\";;\"", ), ], ], ), ], line: 112, }, Ident { expr: [ Symbol( "convert", ), Call( [ [ Symbol( "\";;;\"", ), ], ], ), ], line: 113, }, Ident { expr: [ Symbol( "convert", ), Call( [ [ Symbol( "\";;;;\"", ), ], ], ), ], line: 114, }, Ident { expr: [ Symbol( "convert", ), Call( [ [ Symbol( "\";;;;;\"", ), ], ], ), ], line: 115, }, Ident { expr: [ Symbol( "convert", ), Call( [ [ Symbol( "\";;a;;;bc\"", ), ], ], ), ], line: 116, }, Ident { expr: [ Symbol( "prepfile", ), Call( [ [ Symbol( "\"print(1); a=2; return {x=15}\"", ), ], ], ), ], line: 117, }, Ident { expr: [ Symbol( "prepfile", ), Call( [ [ Expr( [ Symbol( "\"print(a); print(_G['%s'].x)\"", ), ], ), Ident { expr: [ Symbol( ":", ), Symbol( "format", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 122, }, ], ], ), ], line: 122, }, ], [ Ident { expr: [ Symbol( "otherprog", ), ], line: 122, }, ], ], ), ], line: 121, }, Ident { expr: [ Symbol( "RUN", ), Call( [ [ Symbol( "'env LUA_PATH=\"?;;\" lua -l %s -l%s -lstring -l io %s > %s'", ), ], [ Ident { expr: [ Symbol( "prog", ), ], line: 123, }, ], [ Ident { expr: [ Symbol( "otherprog", ), ], line: 123, }, ], [ Ident { expr: [ Symbol( "otherprog", ), ], line: 123, }, ], [ Ident { expr: [ Symbol( "out", ), ], line: 123, }, ], ], ), ], line: 122, }, Ident { expr: [ Symbol( "checkout", ), Call( [ [ Symbol( "\"1\\n2\\n15\\n2\\n15\\n\"", ), ], ], ), ], line: 123, }, Variable { names: [ ( "a", false, ), ], values: [ [ MultilineString( "[[\n assert(#arg == 3 and arg[1] == 'a' and\n arg[2] == 'b' and arg[3] == 'c')\n assert(arg[-1] == '--' and arg[-2] == \"-e \" and arg[-3] == '%s')\n assert(arg[4] == nil and arg[-4] == nil)\n local a, b, c = ...\n assert(... == 'a' and a == 'a' and b == 'b' and c == 'c')\n]]", ), ], ], line: 133, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 133, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 134, }, ], [ Ident { expr: [ Symbol( "progname", ), ], line: 134, }, ], ], ), ], line: 134, }, ], ], line: 134, column: 10, }, Ident { expr: [ Symbol( "prepfile", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 135, }, ], ], ), ], line: 134, }, Ident { expr: [ Symbol( "RUN", ), Call( [ [ Symbol( "'lua \"-e \" -- %s a b c'", ), ], [ Ident { expr: [ Symbol( "prog", ), ], line: 136, }, ], ], ), ], line: 135, }, Ident { expr: [ Symbol( "prepfile", ), Call( [ [ Symbol( "\"assert(arg==nil)\"", ), ], ], ), ], line: 136, }, Ident { expr: [ Symbol( "prepfile", ), Call( [ [ Symbol( "\"assert(arg)\"", ), ], [ Ident { expr: [ Symbol( "otherprog", ), ], line: 139, }, ], ], ), ], line: 138, }, Ident { expr: [ Symbol( "RUN", ), Call( [ [ Symbol( "'env LUA_PATH=\"?;;\" lua -l%s - < %s'", ), ], [ Ident { expr: [ Symbol( "prog", ), ], line: 140, }, ], [ Ident { expr: [ Symbol( "otherprog", ), ], line: 140, }, ], ], ), ], line: 139, }, Ident { expr: [ Symbol( "prepfile", ), Call( [ [ Symbol( "\"\"", ), ], ], ), ], line: 140, }, Ident { expr: [ Symbol( "RUN", ), Call( [ [ Symbol( "\"lua - < %s > %s\"", ), ], [ Ident { expr: [ Symbol( "prog", ), ], line: 143, }, ], [ Ident { expr: [ Symbol( "out", ), ], line: 143, }, ], ], ), ], line: 142, }, Ident { expr: [ Symbol( "checkout", ), Call( [ [ Symbol( "\"\"", ), ], ], ), ], line: 143, }, Ident { expr: [ Symbol( "prepfile", ), Call( [ [ Symbol( "[[print(({...})[30])]]", ), ], ], ), ], line: 144, }, Ident { expr: [ Symbol( "RUN", ), Call( [ [ Symbol( "\"lua %s %s > %s\"", ), ], [ Ident { expr: [ Symbol( "prog", ), ], line: 148, }, ], [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "\" a\"", ), ], [ Symbol( "30", ), ], ], ), ], line: 148, }, ], [ Ident { expr: [ Symbol( "out", ), ], line: 148, }, ], ], ), ], line: 147, }, Ident { expr: [ Symbol( "checkout", ), Call( [ [ Symbol( "\"a\\n\"", ), ], ], ), ], line: 148, }, Ident { expr: [ Symbol( "RUN", ), Call( [ [ MultilineString( "[[lua \"-eprint(1)\" -ea=3 -e \"print(a)\" > %s]]", ), ], [ Ident { expr: [ Symbol( "out", ), ], line: 151, }, ], ], ), ], line: 149, }, Ident { expr: [ Symbol( "checkout", ), Call( [ [ Symbol( "\"1\\n3\\n\"", ), ], ], ), ], line: 151, }, Ident { expr: [ Symbol( "prepfile", ), Call( [ [ Symbol( "[[\n print(\n1, a\n)\n]]", ), ], ], ), ], line: 152, }, Ident { expr: [ Symbol( "RUN", ), Call( [ [ Symbol( "\"lua - < %s > %s\"", ), ], [ Ident { expr: [ Symbol( "prog", ), ], line: 159, }, ], [ Ident { expr: [ Symbol( "out", ), ], line: 159, }, ], ], ), ], line: 158, }, Ident { expr: [ Symbol( "checkout", ), Call( [ [ Symbol( "\"1\\tnil\\n\"", ), ], ], ), ], line: 159, }, Ident { expr: [ Symbol( "prepfile", ), Call( [ [ Symbol( "[[\n= (6*2-6) -- ===\na \n= 10\nprint(a)\n= a]]", ), ], ], ), ], line: 160, }, Ident { expr: [ Symbol( "RUN", ), Call( [ [ MultilineString( "[[lua -e\"_PROMPT='' _PROMPT2=''\" -i < %s > %s]]", ), ], [ Ident { expr: [ Symbol( "prog", ), ], line: 168, }, ], [ Ident { expr: [ Symbol( "out", ), ], line: 168, }, ], ], ), ], line: 167, }, Ident { expr: [ Symbol( "checkprogout", ), Call( [ [ Symbol( "\"6\\n10\\n10\\n\\n\"", ), ], ], ), ], line: 168, }, Ident { expr: [ Symbol( "prepfile", ), Call( [ [ Symbol( "\"a = [[b\\nc\\nd\\ne]]\\n=a\"", ), ], ], ), ], line: 169, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"temporary program file: \"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 172, }, ], ], ), ], line: 171, }, Ident { expr: [ Symbol( "RUN", ), Call( [ [ MultilineString( "[[lua -e\"_PROMPT='' _PROMPT2=''\" -i < %s > %s]]", ), ], [ Ident { expr: [ Symbol( "prog", ), ], line: 173, }, ], [ Ident { expr: [ Symbol( "out", ), ], line: 173, }, ], ], ), ], line: 172, }, Ident { expr: [ Symbol( "checkprogout", ), Call( [ [ Symbol( "\"b\\nc\\nd\\ne\\n\\n\"", ), ], ], ), ], line: 173, }, Alter { names: [ Ident { expr: [ Symbol( "prompt", ), ], line: 174, }, ], values: [ [ Symbol( "\"alo\"", ), ], ], line: 176, column: 3, }, Ident { expr: [ Symbol( "prepfile", ), Call( [ [ Symbol( "[[ --\na = 2\n]]", ), ], ], ), ], line: 176, }, Ident { expr: [ Symbol( "RUN", ), Call( [ [ MultilineString( "[[lua \"-e_PROMPT='%s'\" -i < %s > %s]]", ), ], [ Ident { expr: [ Symbol( "prompt", ), ], line: 180, }, ], [ Ident { expr: [ Symbol( "prog", ), ], line: 180, }, ], [ Ident { expr: [ Symbol( "out", ), ], line: 180, }, ], ], ), ], line: 179, }, Variable { names: [ ( "t", false, ), ], values: [ [ Ident { expr: [ Symbol( "getoutput", ), Call( [], ), ], line: 181, }, ], ], line: 181, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 182, }, ], [ Ident { expr: [ Symbol( "prompt", ), ], line: 182, }, Operator( ( "..", true, ), ), Symbol( "\".*\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "prompt", ), ], line: 182, }, Operator( ( "..", true, ), ), Symbol( "\".*\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "prompt", ), ], line: 182, }, ], ], ), ], line: 182, }, ], ], ), ], line: 181, }, Ident { expr: [ Symbol( "prepfile", ), Call( [ [ Symbol( "[[\ndebug = require \"debug\"\nm = {x=0}\nsetmetatable(m, {__tostring = function(x)\n return debug.getinfo(4).currentline + x.x\nend})\nerror(m)\n]]", ), ], ], ), ], line: 182, }, Ident { expr: [ Symbol( "NoRun", ), Call( [ [ MultilineString( "[[lua %s 2> %s]]", ), ], [ Ident { expr: [ Symbol( "prog", ), ], line: 193, }, ], [ Ident { expr: [ Symbol( "out", ), ], line: 193, }, ], ], ), ], line: 192, }, Ident { expr: [ Symbol( "checkout", ), Call( [ [ Ident { expr: [ Symbol( "progname", ), ], line: 194, }, Operator( ( "..", true, ), ), Symbol( "\": 6\\n\"", ), ], ], ), ], line: 193, }, Alter { names: [ Ident { expr: [ Symbol( "s", ), ], line: 194, }, ], values: [ [ MultilineString( "[=[ -- \nfunction f ( x ) \n local a = [[\nxuxu\n]]\n local b = \"\\\nxuxu\\n\"\n if x == 11 then return 1 , 2 end --[[ test multiple returns ]]\n return x + 1 \n --\\\\\nend\n=( f( 10 ) )\nassert( a == b )\n=f( 11 ) ]=]", ), ], ], line: 210, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "s", ), ], line: 210, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gsub", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 211, }, ], [ Symbol( "' '", ), ], [ Symbol( "'\\n\\n'", ), ], ], ), ], line: 211, }, ], ], line: 211, column: 12, }, Ident { expr: [ Symbol( "prepfile", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 212, }, ], ], ), ], line: 211, }, Ident { expr: [ Symbol( "RUN", ), Call( [ [ MultilineString( "[[lua -e\"_PROMPT='' _PROMPT2=''\" -i < %s > %s]]", ), ], [ Ident { expr: [ Symbol( "prog", ), ], line: 213, }, ], [ Ident { expr: [ Symbol( "out", ), ], line: 213, }, ], ], ), ], line: 212, }, Ident { expr: [ Symbol( "checkprogout", ), Call( [ [ Symbol( "\"11\\n1\\t2\\n\\n\"", ), ], ], ), ], line: 213, }, Ident { expr: [ Symbol( "prepfile", ), Call( [ [ Symbol( "[[#comment in 1st line without \\n at the end]]", ), ], ], ), ], line: 214, }, Ident { expr: [ Symbol( "RUN", ), Call( [ [ Symbol( "\"lua %s\"", ), ], [ Ident { expr: [ Symbol( "prog", ), ], line: 217, }, ], ], ), ], line: 216, }, Ident { expr: [ Symbol( "prepfile", ), Call( [ [ Symbol( "[[#test line number when file starts with comment line\ndebug = require\"debug\"\nprint(debug.getinfo(1).currentline)\n]]", ), ], ], ), ], line: 217, }, Ident { expr: [ Symbol( "RUN", ), Call( [ [ Symbol( "\"lua %s > %s\"", ), ], [ Ident { expr: [ Symbol( "prog", ), ], line: 223, }, ], [ Ident { expr: [ Symbol( "out", ), ], line: 223, }, ], ], ), ], line: 222, }, Ident { expr: [ Symbol( "checkprogout", ), Call( [ [ Symbol( "'3'", ), ], ], ), ], line: 223, }, Ident { expr: [ Symbol( "prepfile", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ MultilineString( "[[io.output(%q); io.write('alo')]]", ), ], [ Ident { expr: [ Symbol( "out", ), ], line: 227, }, ], ], ), ], line: 227, }, ], ], ), ], line: 224, }, Ident { expr: [ Symbol( "RUN", ), Call( [ [ Symbol( "\"lua %s\"", ), ], [ Ident { expr: [ Symbol( "prog", ), ], line: 228, }, ], ], ), ], line: 227, }, Ident { expr: [ Symbol( "checkout", ), Call( [ [ Symbol( "'alo'", ), ], ], ), ], line: 228, }, Ident { expr: [ Symbol( "RUN", ), Call( [ [ MultilineString( "[[lua -v -e'print\"hello\"' > %s]]", ), ], [ Ident { expr: [ Symbol( "out", ), ], line: 232, }, ], ], ), ], line: 229, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 232, }, ], values: [ [ Ident { expr: [ Symbol( "getoutput", ), Call( [], ), ], line: 233, }, ], ], line: 233, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 234, }, ], [ Symbol( "\"PUC%-Rio\\nhello\"", ), ], ], ), ], line: 234, }, ], ], ), ], line: 233, }, Ident { expr: [ Symbol( "prepfile", ), Call( [ [ Symbol( "\"os.exit(nil, true)\"", ), ], ], ), ], line: 234, }, Ident { expr: [ Symbol( "RUN", ), Call( [ [ Symbol( "\"lua %s\"", ), ], [ Ident { expr: [ Symbol( "prog", ), ], line: 239, }, ], ], ), ], line: 238, }, Ident { expr: [ Symbol( "prepfile", ), Call( [ [ Symbol( "\"os.exit(0, true)\"", ), ], ], ), ], line: 239, }, Ident { expr: [ Symbol( "RUN", ), Call( [ [ Symbol( "\"lua %s\"", ), ], [ Ident { expr: [ Symbol( "prog", ), ], line: 241, }, ], ], ), ], line: 240, }, Ident { expr: [ Symbol( "prepfile", ), Call( [ [ Symbol( "\"os.exit(true, true)\"", ), ], ], ), ], line: 241, }, Ident { expr: [ Symbol( "RUN", ), Call( [ [ Symbol( "\"lua %s\"", ), ], [ Ident { expr: [ Symbol( "prog", ), ], line: 243, }, ], ], ), ], line: 242, }, Ident { expr: [ Symbol( "prepfile", ), Call( [ [ Symbol( "\"os.exit(1, true)\"", ), ], ], ), ], line: 243, }, Ident { expr: [ Symbol( "NoRun", ), Call( [ [ Symbol( "\"lua %s\"", ), ], [ Ident { expr: [ Symbol( "prog", ), ], line: 245, }, ], ], ), ], line: 244, }, Ident { expr: [ Symbol( "prepfile", ), Call( [ [ Symbol( "\"os.exit(false, true)\"", ), ], ], ), ], line: 245, }, Ident { expr: [ Symbol( "NoRun", ), Call( [ [ Symbol( "\"lua %s\"", ), ], [ Ident { expr: [ Symbol( "prog", ), ], line: 247, }, ], ], ), ], line: 246, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "remove", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 249, }, ], ], ), ], line: 249, }, ], ], ), ], line: 247, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "remove", ), Call( [ [ Ident { expr: [ Symbol( "otherprog", ), ], line: 250, }, ], ], ), ], line: 250, }, ], ], ), ], line: 249, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "remove", ), Call( [ [ Ident { expr: [ Symbol( "out", ), ], line: 251, }, ], ], ), ], line: 251, }, ], ], ), ], line: 250, }, Ident { expr: [ Symbol( "RUN", ), Call( [ [ Symbol( "\"lua -v\"", ), ], ], ), ], line: 251, }, Ident { expr: [ Symbol( "NoRunMsg", ), Call( [ [ Symbol( "\"lua -h\"", ), ], ], ), ], line: 253, }, Ident { expr: [ Symbol( "NoRunMsg", ), Call( [ [ Symbol( "\"lua -e\"", ), ], ], ), ], line: 255, }, Ident { expr: [ Symbol( "NoRunMsg", ), Call( [ [ Symbol( "\"lua -e a\"", ), ], ], ), ], line: 256, }, Ident { expr: [ Symbol( "NoRunMsg", ), Call( [ [ Symbol( "\"lua -f\"", ), ], ], ), ], line: 257, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"OK\"", ), ], ], ), ], line: 258, }, ]