(CommandList children: [ (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} { (BracedVarSub token: <VSub_Name TEST_SH> suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(true)}) spids: [9 13] ) } {(Lit_Other ']')} ) (ControlFlow token:<ControlFlow_Return return>) ] ) (Assignment keyword: Assign_Declare flags: [-g] pairs: [(assign_pair lhs:(LhsName name:TEST_SH) op:Equal rhs:{(true)} spids:[25])] spids: [21] ) (C {(.)} { (BracedVarSub token: <VSub_Name BASH_SOURCE> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')}) spids: [31 36] ) (/common.sh) } ) (C {(.)} { (BracedVarSub token: <VSub_Name BASH_SOURCE> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')}) spids: [41 46] ) (/variables.sh) } ) (C {(.)} { (BracedVarSub token: <VSub_Name BASH_SOURCE> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')}) spids: [51 56] ) (/variables.linkedlist.sh) } ) (C {(.)} { (BracedVarSub token: <VSub_Name BASH_SOURCE> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')}) spids: [61 66] ) (/evaluator.sh) } ) (FuncDef name: createTestEnv body: (BraceGroup children: [ (C {(environment) (Lit_Other ':') (Lit_Other ':') (new)}) (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (setup_builtins)} {(DQ (${ VSub_Name RESULT))} ) ] spids: [89] ) spids: [83 88] ) (FuncDef name: setInEnv body: (BraceGroup children: [ (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:env) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [123] ) ] spids: [121] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:name) op: Equal rhs: {(DQ (${ VSub_Number 2))} spids: [133] ) ] spids: [131] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:type) op: Equal rhs: {(DQ (${ VSub_Number 3))} spids: [143] ) ] spids: [141] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:value) op: Equal rhs: {(DQ (${ VSub_Number 4))} spids: [153] ) ] spids: [151] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(Identifier)} {(DQ (${ VSub_Name name))} ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:nameToken) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [178] ) ] spids: [176] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(DQ (${ VSub_Name type))} {(DQ (${ VSub_Name value))} ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:valueToken) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [207] ) ] spids: [205] ) (C {(environment) (Lit_Other ':') (Lit_Other ':') (setVariable)} {(DQ (${ VSub_Name env))} {(DQ (${ VSub_Name nameToken))} {(DQ (${ VSub_Name valueToken))} ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(Identifier)} {(DQ (${ VSub_Name name))} ) ] spids: [118] ) spids: [112 117] ) (FuncDef name: appendToList body: (BraceGroup children: [ (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:listToken) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [267] ) ] spids: [265] ) (Assignment keyword: Assign_Declare flags: [-a] pairs: [ (assign_pair lhs: (LhsName name:items) op: Equal rhs: { (ArrayLiteralPart words: [ { (DQ (BracedVarSub token: <VSub_At '@'> suffix_op: (Slice begin:(ArithWord w:{(Lit_Digits 2)})) spids: [282 286] ) ) } ] ) } spids: [279] ) ] spids: [275] ) (Assignment keyword: Assign_Declare flags: [-i] pairs: [(assign_pair lhs:(LhsName name:size) op:Equal spids:[295])] spids: [291] ) (Assignment keyword: Assign_Declare flags: [-i] pairs: [(assign_pair lhs:(LhsName name:max_index) op:Equal spids:[302])] spids: [298] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:currentType) op:Equal spids:[307])] spids: [305] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:currentValue) op:Equal spids:[312])] spids: [310] ) (DParen child: (ArithBinary op_id: Arith_Comma left: (BinaryAssign op_id: Arith_Equal left: (LhsName name:size) right: (ArithWord w: { (BracedVarSub token: <VSub_Name items> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [321 327] ) } ) ) right: (BinaryAssign op_id: Arith_Equal left: (LhsName name:max_index) right: (ArithBinary op_id: Arith_Minus left: (ArithVarRef name:size) right: (ArithWord w:{(Lit_Digits 1)}) ) ) ) ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_NEqual left: (ArithBinary op_id: Arith_Percent left: (ArithVarRef name:size) right: (ArithWord w:{(Lit_Digits 2)}) ) right: (ArithWord w:{(Lit_Digits 0)}) ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(stderr)} {(DQ ('appendToList: number of items to add to list not even'))}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 356] ) ] spids: [16777215 371] ) (ForExpr init: (BinaryAssign op_id: Arith_Equal left: (LhsName name:i) right: (ArithWord w:{(Lit_Digits 0)}) ) cond: (ArithBinary op_id: Arith_LessEqual left: (ArithVarRef name:i) right: (ArithVarRef name:max_index) ) update: (BinaryAssign op_id: Arith_Equal left: (LhsName name:i) right: (ArithBinary op_id: Arith_Plus left: (ArithVarRef name:i) right: (ArithWord w:{(Lit_Digits 2)}) ) ) body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:currentType) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name items> bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name i)})) spids: [401 408] ) ) } spids: [399] ) ] spids: [399] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:currentValue) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name items> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Plus left: (ArithVarRef name:i) right: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [414 425] ) ) } spids: [412] ) ] spids: [412] ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(DQ (${ VSub_Name currentType))} {(DQ (${ VSub_Name currentValue))} ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (append) } {(DQ (${ VSub_Name listToken))} {(DQ (${ VSub_Name RESULT))} ) ] spids: [396 468] ) ) ] spids: [262] ) spids: [256 261] ) ] )