(CommandList children: [ (C {(set)} {(-o)} {(nounset)}) (C {(set)} {(-o)} {(pipefail)}) (C {(set)} {(-o)} {(errexit)}) (C {(source)} {(common.sh)}) (C {(source)} {(compare.sh)}) (FuncDef name: md5-manifest body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:tree) op: Equal rhs: {($ VSub_Number "$1")} spids: [59] ) ] spids: [57] ) (C {(pushd)} {($ VSub_Name "$tree")}) (Pipeline children: [ (C {(find)} {(.)} {(-type)} {(f)}) (C {(sort)}) (C {(xargs)} {(stat)} {(--format)} {(SQ <"%s %n">)}) (C {(tee)} {(SIZES.txt)}) ] negated: False ) (Pipeline children: [ (C {(find)} {(.)} {(-type)} {(f)}) (C {(sort)}) (C {(xargs)} {(md5sum)}) (C {(tee)} {(MD5.txt)}) ] negated: False ) (C {(popd)}) ] spids: [54] ) spids: [50 53] ) (FuncDef name: _compile-tree body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:src_tree) op: Equal rhs: {($ VSub_Number "$1")} spids: [142] ) ] spids: [140] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:dest_tree) op: Equal rhs: {($ VSub_Number "$2")} spids: [148] ) ] spids: [146] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:version) op: Equal rhs: {($ VSub_Number "$3")} spids: [154] ) ] spids: [152] ) (C {(shift)} {(3)}) (C {(rm)} {(-r)} {(-f)} {($ VSub_Name "$dest_tree")}) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:ext) op:Equal rhs:{(pyc)} spids:[180])] spids: [178] ) (ForEach iter_name: rel_path iter_words: [{(DQ ($ VSub_At "$@"))}] do_arg_iter: False body: (DoGroup children: [ (C {(echo)} {($ VSub_Name "$rel_path")}) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:dest) op: Equal rhs: {(${ VSub_Name dest_tree) (/) (BracedVarSub token: <VSub_Name rel_path> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(.py)}) spids: [211 215] ) (.) (${ VSub_Name ext) } spids: [206] ) ] spids: [204] ) (C {(mkdir)} {(-p)} { (CommandSubPart command_list: (CommandList children: [(C {(dirname)} {($ VSub_Name "$dest")})] ) left_token: <Left_CommandSub "$("> spids: [226 230] ) } ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {($ VSub_Name "$version")} {(Lit_Other "=")} {(stdlib)}) terminator: <Op_Semi ";"> ) ] action: [ (C {(_stdlib-compile-one)} {($ VSub_Name "$src_tree") (/) (${ VSub_Name rel_path)} {($ VSub_Name "$dest")} ) ] spids: [-1 245] ) (if_arm cond: [ (Sentence child: (C {(test)} {($ VSub_Name "$version")} {(Lit_Other "=")} {(compiler2)}) terminator: <Op_Semi ";"> ) ] action: [ (C {(_compile2-one)} {($ VSub_Name "$src_tree") (/) (${ VSub_Name rel_path)} {($ VSub_Name "$dest")} ) ] spids: [259 270] ) (if_arm cond: [ (Sentence child: (C {(test)} {($ VSub_Name "$version")} {(Lit_Other "=")} {(ccompile)}) terminator: <Op_Semi ";"> ) ] action: [ (C {(_ccompile-one)} {($ VSub_Name "$src_tree") (/) (${ VSub_Name rel_path)} {($ VSub_Name "$dest")} ) ] spids: [284 295] ) (if_arm cond: [ (Sentence child: (C {(test)} {($ VSub_Name "$version")} {(Lit_Other "=")} {(opy)}) terminator: <Op_Semi ";"> ) ] action: [ (C {(_compile-one)} {($ VSub_Name "$src_tree") (/) (${ VSub_Name rel_path)} {($ VSub_Name "$dest")} ) ] spids: [309 320] ) ] else_action: [(C {(die)} {(DQ (bad))})] spids: [334 344] ) ] spids: [196 347] ) spids: [190 194] ) (C {(tree)} {($ VSub_Name "$dest_tree")}) (C {(md5-manifest)} {($ VSub_Name "$dest_tree")}) ] spids: [137] ) spids: [133 136] ) (FuncDef name: _fill-opy-tree body: (BraceGroup children: [(C {(echo)} {(TODO) (Lit_Other ":")} {(grammar)} {(pickle)})] spids: [367] ) spids: [363 366] ) (FuncDef name: compile-opy-tree body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:src) op: Equal rhs: {($ VSub_Name "$PWD")} spids: [391] ) ] spids: [389] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:files) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(find)} {($ VSub_Name "$src")} {(-name)} {(_tmp)} {(-a)} {(-prune)} {(-o)} {(-name)} {(SQ <"*.py">)} {(-a)} {(-printf)} {(SQ <"%P\\n">)} ) ] ) left_token: <Left_CommandSub "$("> spids: [400 432] ) } ] ) } spids: [397] ) ] spids: [395] ) (C {(_compile-tree)} {($ VSub_Name "$src")} {(_tmp/opy-ccompile/)} {(ccompile)} { (DQ (BracedVarSub token: <VSub_Name files> bracket_op: (WholeArray op_id:Lit_At) spids: [464 469] ) ) } ) (C {(_compile-tree)} {($ VSub_Name "$src")} {(_tmp/opy-opy/)} {(opy)} { (DQ (BracedVarSub token: <VSub_Name files> bracket_op: (WholeArray op_id:Lit_At) spids: [482 487] ) ) } ) ] spids: [386] ) spids: [382 385] ) (FuncDef name: _fill-osh-tree body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:dir) op: Equal rhs: { (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id: VTest_ColonHyphen arg_word: {(_tmp) (Lit_Slash /) (osh-stdlib)} ) spids: [503 509] ) } spids: [502] ) ] spids: [500] ) (C {(cp)} {(-v)} {(../osh/osh.asdl)} {($ VSub_Name "$dir") (/osh)}) (C {(cp)} {(-v)} {(../core/runtime.asdl)} {($ VSub_Name "$dir") (/core)}) (C {(cp)} {(-v)} {(../asdl/arith.asdl)} {($ VSub_Name "$dir") (/asdl)}) (C {(ln)} {(-v)} {(-s)} {(-f)} {($ VSub_Name "$PWD") (/../core/libc.so)} {($ VSub_Name "$dir") (/core)} ) ] spids: [497] ) spids: [493 496] ) (FuncDef name: compile-osh-tree body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:src) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (AndOr children: [(C {(cd)} {(..)}) (C {(echo)} {($ VSub_Name "$PWD")})] op_id: Op_DAmp ) ] ) left_token: <Left_CommandSub "$("> spids: [569 579] ) } spids: [568] ) ] spids: [566] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:files) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(find)} {($ VSub_Name "$src")} {(-name)} {(_tmp)} {(-a)} {(-prune)} {(-o)} {(-name)} {(opy)} {(-a)} {(-prune)} {(-o)} {(-name)} {(tests)} {(-a)} {(-prune)} {(-o)} {(-name)} {(SQ <"*.py">)} {(-a)} {(-printf)} {(SQ <"%P\\n">)} ) ] ) left_token: <Left_CommandSub "$("> spids: [587 643] ) } ] ) } spids: [584] ) ] spids: [582] ) (C {(_compile-tree)} {($ VSub_Name "$src")} {(_tmp/osh-ccompile/)} {(ccompile)} { (DQ (BracedVarSub token: <VSub_Name files> bracket_op: (WholeArray op_id:Lit_At) spids: [658 663] ) ) } ) (C {(_compile-tree)} {($ VSub_Name "$src")} {(_tmp/osh-opy/)} {(opy)} { (DQ (BracedVarSub token: <VSub_Name files> bracket_op: (WholeArray op_id:Lit_At) spids: [676 681] ) ) } ) (C {(_fill-osh-tree)} {(_tmp/osh-ccompile/)}) (C {(_fill-osh-tree)} {(_tmp/osh-opy/)}) ] spids: [563] ) spids: [559 562] ) (FuncDef name: zip-oil-tree body: (BraceGroup children: [ (C {(rm)} {(-f)} {(_tmp/oil.zip)}) (C {(pushd)} {(_tmp/osh-ccompile)}) (C {(zip)} {(../oil.zip)} {(-r)} {(.)}) (C {(popd)}) ] spids: [721] ) spids: [717 720] ) (FuncDef name: test-osh-tree body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:dir) op: Equal rhs: { (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id: VTest_ColonHyphen arg_word: {(_tmp) (Lit_Slash /) (osh-opy)} ) spids: [764 770] ) } spids: [763] ) ] spids: [761] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:vm) op: Equal rhs: { (BracedVarSub token: <VSub_Number 2> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(byterun)}) spids: [776 780] ) } spids: [775] ) ] spids: [773] ) (C {(pushd)} {($ VSub_Name "$dir")}) (C {(mkdir)} {(-p)} {(_tmp)}) (ForEach iter_name: t iter_words: [ (BracedWordTree parts: [ (BracedAltPart words:[{(asdl)}{(core)}{(osh)}]) (/) (Lit_Other "*") (_test.pyc) ] ) ] do_arg_iter: False body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name "$t")} right: {(Lit_Other "*") (arith_parse_test.pyc)} ) ) terminator: <Op_Semi ";"> ) ] action: [(ControlFlow token:<ControlFlow_Continue continue>)] spids: [-1 834] ) ] spids: [-1 840] ) (C {(echo)} {($ VSub_Name "$t")}) (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {($ VSub_Name "$vm")} {(Lit_Other "=")} {(byterun)}) terminator: <Op_Semi ";"> ) ] action: [ (SimpleCommand words: [{(opy_)} {(run)} {($ VSub_Name "$t")}] more_env: [(env_pair name:PYTHONPATH val:{(.)} spids:[875])] ) ] spids: [-1 872] ) ] else_action: [ (SimpleCommand words: [{(python)} {($ VSub_Name "$t")}] more_env: [(env_pair name:PYTHONPATH val:{(.)} spids:[888])] ) ] spids: [885 896] ) ] spids: [817 899] ) spids: [804 815] ) (C {(popd)}) ] spids: [758] ) spids: [754 757] ) (FuncDef name: write-speed body: (BraceGroup children: [ (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(_tmp/speed.py)} spids: [916] ) (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("def do_sum(n):\n") (" sum = 0\n") (" for i in xrange(n):\n") (" sum += i\n") (" print(sum)\n") ("\n") ("if __name__ == '__main__':\n") (" import sys\n") (" n = int(sys.argv[1])\n") (" do_sum(n)\n") ("\n") ) } do_expansion: True here_end: EOF was_filled: True spids: [919] ) ] ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(_tmp/speed_main.py)} spids: [936] ) (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("import sys \n") ("import speed\n") ("\n") ("n = int(sys.argv[1])\n") ("speed.do_sum(n)\n") ) } do_expansion: True here_end: EOF was_filled: True spids: [939] ) ] ) ] spids: [911] ) spids: [907 910] ) (FuncDef name: opy-speed-test body: (BraceGroup children: [ (C {(write-speed)}) (C {(_compile-one)} {(_tmp/speed.py)} {(_tmp/speed.pyc)}) (C {(_compile-one)} {(_tmp/speed_main.py)} {(_tmp/speed_main.pyc)}) (C {(cp)} {(_tmp/speed.pyc)} {(_tmp/speed.opyc)}) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:n) op:Equal rhs:{(10000)} spids:[990])] spids: [988] ) (C {(echo)} {(PYTHON)}) (TimeBlock pipeline:(C {(python)} {(_tmp/speed.opyc)} {($ VSub_Name "$n")})) (C {(echo)} {(OPY)}) (TimeBlock pipeline: (C {(opy_)} {(run)} {(_tmp/speed.opyc)} {($ VSub_Name "$n")}) ) (C {(echo)} {(PYTHON)}) (TimeBlock pipeline:(C {(python)} {(_tmp/speed_main.pyc)} {($ VSub_Name "$n")})) (C {(echo)} {(OPY)}) (TimeBlock pipeline: (C {(opy_)} {(run)} {(_tmp/speed_main.pyc)} {($ VSub_Name "$n")}) ) ] spids: [954] ) spids: [950 953] ) (FuncDef name: byterun-speed-test body: (BraceGroup children: [ (C {(write-speed)}) (C {(echo)} {(OLD)} {(BYTERUN)}) (TimeBlock pipeline: (C {(_byterun)} {($ VSub_Name "$PWD") (/_tmp/speed_main.py)} {(10000)}) ) (TimeBlock pipeline: (C {(_byterun)} {($ VSub_Name "$PWD") (/_tmp/speed.py)} {(10000)}) ) ] spids: [1084] ) spids: [1080 1083] ) (FuncDef name: _byterun body: (BraceGroup children: [ (C {(pushd)} {(TildeSubPart prefix:"") (/git/other/byterun)}) (C {(python)} {(-m)} {(byterun.__main__)} {(DQ ($ VSub_At "$@"))}) (C {(popd)}) ] spids: [1125] ) spids: [1121 1124] ) (FuncDef name: opy-parse-on-byterun body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:arg) op: Equal rhs: {($ VSub_Name "$PWD") (/testdata/hello_py2.py)} spids: [1206] ) ] spids: [1204] ) (C {(pushd)} {(_tmp/opy-opy)}) (C {(opyg)} {(run)} {(opy_main.pyc)} {(-g)} {($ VSub_Name "$GRAMMAR")} {(parse)} {($ VSub_Name "$arg")} ) (C {(popd)}) ] spids: [1201] ) spids: [1197 1200] ) (FuncDef name: osh-parse-on-byterun body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:cmd) op: Equal rhs: { (ArrayLiteralPart words: [ {(osh)} {(--ast-output)} {(-)} {(--no-exec)} {(-c)} {(SQ <"echo \"hello world\"">)} ] ) } spids: [1243] ) ] spids: [1243] ) (C {(../bin/oil.py)} { (DQ (BracedVarSub token: <VSub_Name cmd> bracket_op: (WholeArray op_id:Lit_At) spids: [1265 1270] ) ) } ) (C {(echo)} {(---)}) (C {(opyg)} {(run)} {(_tmp/osh-opy/bin/oil.pyc)} { (DQ (BracedVarSub token: <VSub_Name cmd> bracket_op: (WholeArray op_id:Lit_At) spids: [1286 1291] ) ) } ) ] spids: [1240] ) spids: [1236 1239] ) (FuncDef name: opy-hello2 body: (BraceGroup children:[(C {(opyg)} {(run)} {(testdata/hello_py2.py)})] spids:[1301]) spids: [1297 1300] ) (FuncDef name: opy-hello3 body: (BraceGroup children:[(C {(opyg)} {(run)} {(testdata/hello_py3.py)})] spids:[1317]) spids: [1313 1316] ) (FuncDef name: inspect-pyc body: (BraceGroup children: [ (SimpleCommand words: [{(misc/inspect_pyc.py)} {(DQ ($ VSub_At "$@"))}] more_env: [(env_pair name:PYTHONPATH val:{(.)} spids:[1362])] ) ] spids: [1359] ) spids: [1355 1358] ) (FuncDef name: compare-bytecode body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:left) op: Equal rhs: {($ VSub_Number "$1")} spids: [1386] ) ] spids: [1384] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:right) op: Equal rhs: {($ VSub_Number "$2")} spids: [1392] ) ] spids: [1390] ) (C {(md5sum)} {(DQ ($ VSub_At "$@"))}) (C {(ls)} {(-l)} {(DQ ($ VSub_At "$@"))}) (SimpleCommand words: [{(inspect-pyc)} {($ VSub_Name "$left")}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(_tmp/pyc-left.txt)} spids:[1418])] ) (SimpleCommand words: [{(inspect-pyc)} {($ VSub_Name "$right")}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(_tmp/pyc-right.txt)} spids: [1427] ) ] ) (AndOr children: [ (C {($ VSub_Name "$DIFF")} (BracedWordTree parts: [(_tmp/pyc-) (BracedAltPart words:[{(left)}{(right)}]) (.txt)] ) ) (C {(true)}) ] op_id: Op_DPipe ) (ControlFlow token:<ControlFlow_Return return>) (SimpleCommand words: [{(strings)} {($ VSub_Name "$left")}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(_tmp/str-left.txt)} spids:[1455])] ) (SimpleCommand words: [{(strings)} {($ VSub_Name "$right")}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(_tmp/str-right.txt)} spids: [1464] ) ] ) (AndOr children: [ (C {(diff)} {(-u)} (BracedWordTree parts: [(_tmp/str-) (BracedAltPart words:[{(left)}{(right)}]) (.txt)] ) ) (C {(true)}) ] op_id: Op_DPipe ) (C {(echo)} {(KW_Done done)}) ] spids: [1381] ) spids: [1377 1380] ) (FuncDef name: determinism-loop body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:func) op: Equal rhs: {($ VSub_Number "$1")} spids: [1541] ) ] spids: [1539] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:file) op: Equal rhs: { (BracedVarSub token: <VSub_Number 2> suffix_op: (StringUnary op_id: VTest_ColonHyphen arg_word: {(.) (Lit_Slash /) (opy_main.py)} ) spids: [1548 1554] ) } spids: [1547] ) ] spids: [1545] ) (C {(mkdir)} {(-p)} {(_tmp/det)}) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:name) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name "$file")})] ) left_token: <Left_CommandSub "$("> spids: [1569 1573] ) } spids: [1568] ) ] spids: [1566] ) (ForEach iter_name: i iter_words: [ { (CommandSubPart command_list: (CommandList children:[(C {(seq)} {(100)})]) left_token: <Left_CommandSub "$("> spids: [1582 1586] ) } ] do_arg_iter: False body: (DoGroup children: [ (C {(echo)} {(DQ ("--- ") ($ VSub_Name "$i") (" ---"))}) (C {($ VSub_Name "$func")} {($ VSub_Name "$file")} {(_tmp/det/) ($ VSub_Name "$name") (.1)} ) (C {($ VSub_Name "$func")} {($ VSub_Name "$file")} {(_tmp/det/) ($ VSub_Name "$name") (.2)} ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:size1) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(stat)} {(--format)} {(SQ <"%s">)} {(_tmp/det/) ($ VSub_Name "$name") (.1)} ) ] ) left_token: <Left_CommandSub "$("> spids: [1623 1635] ) } spids: [1622] ) ] spids: [1620] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:size2) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(stat)} {(--format)} {(SQ <"%s">)} {(_tmp/det/) ($ VSub_Name "$name") (.2)} ) ] ) left_token: <Left_CommandSub "$("> spids: [1641 1653] ) } spids: [1640] ) ] spids: [1638] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {($ VSub_Name "$size1")} {(KW_Bang "!") (Lit_Other "=")} {($ VSub_Name "$size2")} ) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} { (DQ ("mismatched sizes: ") ($ VSub_Name "$size1") (" ") ($ VSub_Name "$size2") ) } ) (C {(compare-bytecode)} (BracedWordTree parts: [ (_tmp/det/) ($ VSub_Name "$name") (.) (BracedAltPart words: [{(1)} {(2)}] ) ] ) ) (C {(echo)} {(DQ ("Found problem after ") ($ VSub_Name "$i") (" iterations"))} ) (ControlFlow token:<ControlFlow_Break break>) ] spids: [-1 1668] ) ] spids: [-1 1709] ) ] spids: [1589 1712] ) spids: [1581 1587] ) ] spids: [1536] ) spids: [1532 1535] ) (FuncDef name: opy-determinism-loop body: (BraceGroup children: [(C {(determinism-loop)} {(_compile-one)} {(../core/lexer.py)})] spids: [1721] ) spids: [1717 1720] ) (FuncDef name: hash-determinism body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:in) op: Equal rhs: {($ VSub_Number "$1")} spids: [1745] ) ] spids: [1743] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:out) op: Equal rhs: {($ VSub_Number "$2")} spids: [1751] ) ] spids: [1749] ) (SimpleCommand words: [{(misc/determinism.py)} {($ VSub_Name "$in")}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name "$out")} spids: [1772] ) ] ) ] spids: [1740] ) spids: [1736 1739] ) (FuncDef name: hash-determinism-loop body: (BraceGroup children:[(C {(determinism-loop)} {(hash-determinism)})] spids:[1783]) spids: [1779 1782] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} { (CommandSubPart command_list: (CommandList children:[(C {(basename)} {($ VSub_Number "$0")})]) left_token: <Left_CommandSub "$("> spids: [1797 1801] ) } {(Lit_Other "=")} {(SQ <smoke.sh>)} ) terminator: <Op_Semi ";"> ) ] action: [(C {(DQ ($ VSub_At "$@"))})] spids: [-1 1810] ) ] spids: [-1 1817] ) ] )