ninja: no work to do. --- (command.CommandList children: [ (command.ShFunction name_tok: (Token id: Id.Lit_Chars length: 4 col: 0 line: (SourceLine line_num: 8 content: "argv() { spec/bin/argv.py \"$@\"; }\n" src: (source.MainFile path:ysh/testdata/array-rewrite-1.sh) ) ) name: argv body: (BraceGroup left: (Token id:Id.Lit_LBrace length:1 col:7 line:...0x135a) children: [ (command.Sentence child: (command.Simple blame_tok: (Token id:Id.Lit_Chars length:4 col:9 line:...0x135a) more_env: [] words: [ (CompoundWord parts: [ ...0x131a (Token id: Id.Lit_Slash length: 1 col: 13 line: ...0x135a ) (Token id: Id.Lit_Chars length: 3 col: 14 line: ...0x135a ) (Token id: Id.Lit_Slash length: 1 col: 17 line: ...0x135a ) (Token id: Id.Lit_Chars length: 7 col: 18 line: ...0x135a ) ] ) (CompoundWord parts: [ (DoubleQuoted left: (Token id:Id.Left_DoubleQuote length:1 col:26 line:...0x135a) parts: [ (SimpleVarSub tok: (Token id:Id.VSub_At length:2 col:27 line:...0x135a) ) ] right: (Token id:Id.Right_DoubleQuote length:1 col:29 line:...0x135a) ) ] ) ] redirects: [] do_fork: T ) terminator: (Token id:Id.Op_Semi length:1 col:30 line:...0x135a) ) ] redirects: [] right: (Token id:Id.Lit_RBrace length:1 col:32 line:...0x135a) ) ) (command.ShAssignment left: (Token id: Id.Lit_VarLike length: 6 col: 0 line: (SourceLine line_num:14 content:"regex=(old1 old2)\n" src:...0x1d21) ) pairs: [ (AssignPair left: ...0x1246 lhs: (sh_lhs.Name left:...0x1246 name:regex) op: assign_op.Equal rhs: (CompoundWord parts: [ (ShArrayLiteral left: (Token id:Id.Op_LParen length:1 col:6 line:...0x124a) words: [ (CompoundWord parts: [(Token id:Id.Lit_Chars length:4 col:7 line:...0x124a)] ) (CompoundWord parts: [(Token id:Id.Lit_Chars length:4 col:12 line:...0x124a)] ) ] right: (Token id:Id.Right_ShArrayLiteral length:1 col:16 line:...0x124a) ) ] ) ) ] redirects: [] ) (command.ShAssignment left: (Token id: Id.Lit_VarLike length: 6 col: 0 line: (SourceLine line_num:15 content:"flags=()\n" src:...0x1d21) ) pairs: [ (AssignPair left: ...0x11d6 lhs: (sh_lhs.Name left:...0x11d6 name:flags) op: assign_op.Equal rhs: (CompoundWord parts: [ (ShArrayLiteral left: (Token id:Id.Op_LParen length:1 col:6 line:...0x11da) words: [] right: (Token id:Id.Right_ShArrayLiteral length:1 col:7 line:...0x11da) ) ] ) ) ] redirects: [] ) (command.ForEach keyword: (Token id: Id.KW_For length: 3 col: 0 line: (SourceLine line_num:17 content:"for r in \"${regex[@]}\"; do\n" src:...0x1d21) ) iter_names: [r] iterable: (for_iter.Words words: [ (CompoundWord parts: [ (DoubleQuoted left: (Token id:Id.Left_DoubleQuote length:1 col:9 line:...0x1182) parts: [ (BracedVarSub left: (Token id:Id.Left_DollarBrace length:2 col:10 line:...0x1182) token: (Token id:Id.VSub_Name length:5 col:12 line:...0x1182) var_name: regex bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: (Token id:Id.Right_DollarBrace length:1 col:20 line:...0x1182) ) ] right: (Token id:Id.Right_DoubleQuote length:1 col:21 line:...0x1182) ) ] ) ] ) semi_tok: (Token id:Id.Op_Semi length:1 col:22 line:...0x1182) body: (command.DoGroup left: (Token id:Id.KW_Do length:2 col:24 line:...0x1182) children: [ (command.ShAssignment left: (Token id: Id.Lit_ArrayLhsOpen length: 6 col: 2 line: (SourceLine line_num: 18 content: " flags[${#flags[@]}]=\"--regex=$r\"\n" src: ...0x1d21 ) ) pairs: [ (AssignPair left: ...0x10f6 lhs: (sh_lhs.IndexedName left: ...0x10f6 name: flags index: (CompoundWord parts: [ (BracedVarSub left: (Token id: Id.Left_DollarBrace length: 2 col: 0 line: (SourceLine line_num: 1 content: "${#flags[@]}" src: (source.Reparsed what: "array LHS" left_token: ...0x10f6 right_token: (Token id: Id.Lit_ArrayLhsClose length: 2 col: 20 line: ...0x10fe ) ) ) ) token: (Token id:Id.VSub_Name length:5 col:3 line:...0x107e) var_name: flags prefix_op: (Token id:Id.VSub_Pound length:1 col:2 line:...0x107e) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: (Token id:Id.Right_DollarBrace length:1 col:11 line:...0x107e) ) ] ) ) op: assign_op.Equal rhs: (CompoundWord parts: [ (DoubleQuoted left: (Token id:Id.Left_DoubleQuote length:1 col:22 line:...0x10fe) parts: [ (Token id: Id.Lit_Chars length: 8 col: 23 line: ...0x10fe ) (SimpleVarSub tok: (Token id:Id.VSub_DollarName length:2 col:31 line:...0x10fe) ) ] right: (Token id:Id.Right_DoubleQuote length:1 col:33 line:...0x10fe) ) ] ) ) ] redirects: [] ) ] right: (Token id: Id.KW_Done length: 4 col: 0 line: (SourceLine line_num:19 content:"done\n" src:...0x1d21) ) ) redirects: [] ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 4 col: 0 line: (SourceLine line_num:21 content:"argv \"${flags[@]}\"\n" src:...0x1d21) ) more_env: [] words: [ (CompoundWord parts:[...0x100e]) (CompoundWord parts: [ (DoubleQuoted left: (Token id:Id.Left_DoubleQuote length:1 col:5 line:...0x1012) parts: [ (BracedVarSub left: (Token id:Id.Left_DollarBrace length:2 col:6 line:...0x1012) token: (Token id:Id.VSub_Name length:5 col:8 line:...0x1012) var_name: flags bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: (Token id:Id.Right_DollarBrace length:1 col:16 line:...0x1012) ) ] right: (Token id:Id.Right_DoubleQuote length:1 col:17 line:...0x1012) ) ] ) ] redirects: [] do_fork: T ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 5 col: 0 line: (SourceLine line_num:34 content:"shopt -s simple_word_eval parse_at\n" src:...0x1d21) ) more_env: [] words: [ (CompoundWord parts:[...0x199e]) (CompoundWord parts:[(Token id:Id.Lit_Chars length:2 col:6 line:...0x19a2)]) (CompoundWord parts:[(Token id:Id.Lit_Chars length:16 col:9 line:...0x19a2)]) (CompoundWord parts:[(Token id:Id.Lit_Chars length:8 col:26 line:...0x19a2)]) ] redirects: [] do_fork: T ) (command.VarDecl keyword: (Token id: Id.KW_Var length: 3 col: 0 line: (SourceLine line_num:36 content:"var regex2 = %(new1 new2)\n" src:...0x1d21) ) lhs: [(NameType left:(Token id:Id.Expr_Name length:6 col:4 line:...0x193e) name:regex2)] rhs: (ShArrayLiteral left: (Token id:Id.Left_PercentParen length:2 col:13 line:...0x193e) words: [ (CompoundWord parts:[(Token id:Id.Lit_Chars length:4 col:15 line:...0x193e)]) (CompoundWord parts:[(Token id:Id.Lit_Chars length:4 col:20 line:...0x193e)]) ] right: (Token id:Id.Right_ShArrayLiteral length:1 col:24 line:...0x193e) ) ) (command.VarDecl keyword: (Token id: Id.KW_Var length: 3 col: 0 line: (SourceLine line_num:37 content:"var flags2 = %()\n" src:...0x1d21) ) lhs: [(NameType left:(Token id:Id.Expr_Name length:6 col:4 line:...0x186a) name:flags2)] rhs: (ShArrayLiteral left: (Token id:Id.Left_PercentParen length:2 col:13 line:...0x186a) words: [] right: (Token id:Id.Right_ShArrayLiteral length:1 col:15 line:...0x186a) ) ) (command.ForEach keyword: (Token id: Id.KW_For length: 3 col: 0 line: (SourceLine line_num:39 content:"for r in @regex2; do\n" src:...0x1d21) ) iter_names: [r] iterable: (for_iter.Words words: [(CompoundWord parts:[(Token id:Id.Lit_Splice length:7 col:9 line:...0x17ae)])] ) semi_tok: (Token id:Id.Op_Semi length:1 col:16 line:...0x17ae) body: (command.DoGroup left: (Token id:Id.KW_Do length:2 col:18 line:...0x17ae) children: [ (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 6 col: 2 line: (SourceLine line_num: 40 content: " append \"--regex=$r\" (flags2)\n" src: ...0x1d21 ) ) more_env: [] words: [ (CompoundWord parts:[...0x1742]) (CompoundWord parts: [ (DoubleQuoted left: (Token id:Id.Left_DoubleQuote length:1 col:9 line:...0x174a) parts: [ (Token id: Id.Lit_Chars length: 8 col: 10 line: ...0x174a ) (SimpleVarSub tok: (Token id:Id.VSub_DollarName length:2 col:18 line:...0x174a) ) ] right: (Token id:Id.Right_DoubleQuote length:1 col:20 line:...0x174a) ) ] ) ] redirects: [] typed_args: (ArgList left: (Token id:Id.Op_LParen length:1 col:22 line:...0x174a) pos_args: [ (expr.Var left: (Token id:Id.Expr_Name length:6 col:23 line:...0x174a) name: flags2 ) ] named_args: [] right: (Token id:Id.Op_RParen length:1 col:29 line:...0x174a) ) do_fork: T ) ] right: (Token id: Id.KW_Done length: 4 col: 0 line: (SourceLine line_num:41 content:"done\n" src:...0x1d21) ) ) redirects: [] ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 4 col: 0 line: (SourceLine line_num:43 content:"argv @flags2\n" src:...0x1d21) ) more_env: [] words: [ (CompoundWord parts:[...0x165e]) (CompoundWord parts:[(Token id:Id.Lit_Splice length:7 col:5 line:...0x1662)]) ] redirects: [] do_fork: T ) ] ) --- (command.CommandList children: [ (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 5 col: 0 line: (SourceLine line_num: 2 content: "shopt -s oil-parse-at static-word-eval\n" src: (source.MainFile path:ysh/testdata/array-splice-demo.osh) ) ) more_env: [] words: [ (CompoundWord parts:[...0x13c6]) (CompoundWord parts:[(Token id:Id.Lit_Chars length:2 col:6 line:...0x13ca)]) (CompoundWord parts:[(Token id:Id.Lit_Chars length:12 col:9 line:...0x13ca)]) (CompoundWord parts:[(Token id:Id.Lit_Chars length:16 col:22 line:...0x13ca)]) ] redirects: [] do_fork: T ) (command.ShAssignment left: (Token id: Id.Lit_VarLike length: 9 col: 0 line: (SourceLine line_num:4 content:"myglobal=global\n" src:...0x1d21) ) pairs: [ (AssignPair left: ...0x135e lhs: (sh_lhs.Name left:...0x135e name:myglobal) op: assign_op.Equal rhs: (CompoundWord parts:[(Token id:Id.Lit_Chars length:6 col:9 line:...0x1362)]) ) ] redirects: [] ) (command.VarDecl keyword: (Token id: Id.KW_Var length: 3 col: 0 line: (SourceLine line_num: 6 content: "var myarray = :| $myglobal $'line\\n' ${z:-default} |\n" src: ...0x1d21 ) ) lhs: [(NameType left:(Token id:Id.Expr_Name length:7 col:4 line:...0x130e) name:myarray)] rhs: (ShArrayLiteral left: (Token id:Id.Left_ColonPipe length:2 col:14 line:...0x130e) words: [ (CompoundWord parts: [(SimpleVarSub tok:(Token id:Id.VSub_DollarName length:9 col:17 line:...0x130e))] ) (CompoundWord parts: [ (SingleQuoted left: (Token id:Id.Left_DollarSingleQuote length:2 col:27 line:...0x130e) sval: "line\n" right: (Token id:Id.Right_SingleQuote length:1 col:35 line:...0x130e) ) ] ) (CompoundWord parts: [ (BracedVarSub left: (Token id:Id.Left_DollarBrace length:2 col:37 line:...0x130e) token: (Token id:Id.VSub_Name length:1 col:39 line:...0x130e) var_name: z suffix_op: (suffix_op.Unary op: (Token id:Id.VTest_ColonHyphen length:2 col:40 line:...0x130e) arg_word: (CompoundWord parts: [(Token id:Id.Lit_Chars length:7 col:42 line:...0x130e)] ) ) right: (Token id:Id.Right_DollarBrace length:1 col:49 line:...0x130e) ) ] ) ] right: (Token id:Id.Op_Pipe length:1 col:51 line:...0x130e) ) ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 4 col: 0 line: (SourceLine line_num:7 content:"spec/bin/argv.py @myarray\n" src:...0x1d21) ) more_env: [] words: [ (CompoundWord parts: [ ...0x11f2 (Token id:Id.Lit_Slash length:1 col:4 line:...0x11f6) (Token id:Id.Lit_Chars length:3 col:5 line:...0x11f6) (Token id:Id.Lit_Slash length:1 col:8 line:...0x11f6) (Token id:Id.Lit_Chars length:7 col:9 line:...0x11f6) ] ) (CompoundWord parts:[(Token id:Id.Lit_Splice length:8 col:17 line:...0x11f6)]) ] redirects: [] do_fork: T ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 4 col: 0 line: (SourceLine line_num:8 content:"echo len=$[len(myarray)]\n" src:...0x1d21) ) more_env: [] words: [ (CompoundWord parts:[...0x1192]) (CompoundWord parts: [ (Token id:Id.Lit_VarLike length:4 col:5 line:...0x1196) (word_part.ExprSub left: (Token id:Id.Left_DollarBracket length:2 col:9 line:...0x1196) child: (expr.FuncCall func: (expr.Var left: (Token id:Id.Expr_Name length:3 col:11 line:...0x1196) name: len ) args: (ArgList left: (Token id:Id.Op_LParen length:1 col:14 line:...0x1196) pos_args: [ (expr.Var left: (Token id:Id.Expr_Name length:7 col:15 line:...0x1196) name: myarray ) ] named_args: [] right: (Token id:Id.Op_RParen length:1 col:22 line:...0x1196) ) ) right: (Token id:Id.Op_RBracket length:1 col:23 line:...0x1196) ) ] ) ] redirects: [] do_fork: T ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 4 col: 0 line: (SourceLine line_num:9 content:"echo\n" src:...0x1d21) ) more_env: [] words: [(CompoundWord parts:[...0x1092])] redirects: [] do_fork: T ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 6 col: 0 line: (SourceLine line_num: 11 content: "append _ '1 2' ${myglobal:-default} (myarray)\n" src: ...0x1d21 ) ) more_env: [] words: [ (CompoundWord parts:[...0x1056]) (CompoundWord parts:[(Token id:Id.Lit_Chars length:1 col:7 line:...0x105a)]) (CompoundWord parts: [ (SingleQuoted left: (Token id:Id.Left_SingleQuote length:1 col:9 line:...0x105a) sval: "1 2" right: (Token id:Id.Right_SingleQuote length:1 col:13 line:...0x105a) ) ] ) (CompoundWord parts: [ (BracedVarSub left: (Token id:Id.Left_DollarBrace length:2 col:15 line:...0x105a) token: (Token id:Id.VSub_Name length:8 col:17 line:...0x105a) var_name: myglobal suffix_op: (suffix_op.Unary op: (Token id:Id.VTest_ColonHyphen length:2 col:25 line:...0x105a) arg_word: (CompoundWord parts: [(Token id:Id.Lit_Chars length:7 col:27 line:...0x105a)] ) ) right: (Token id:Id.Right_DollarBrace length:1 col:34 line:...0x105a) ) ] ) ] redirects: [] typed_args: (ArgList left: (Token id:Id.Op_LParen length:1 col:36 line:...0x105a) pos_args: [ (expr.Var left: (Token id:Id.Expr_Name length:7 col:37 line:...0x105a) name: myarray ) ] named_args: [] right: (Token id:Id.Op_RParen length:1 col:44 line:...0x105a) ) do_fork: T ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 4 col: 0 line: (SourceLine line_num:12 content:"spec/bin/argv.py @myarray\n" src:...0x1d21) ) more_env: [] words: [ (CompoundWord parts: [ ...0x1a06 (Token id:Id.Lit_Slash length:1 col:4 line:...0x1a0a) (Token id:Id.Lit_Chars length:3 col:5 line:...0x1a0a) (Token id:Id.Lit_Slash length:1 col:8 line:...0x1a0a) (Token id:Id.Lit_Chars length:7 col:9 line:...0x1a0a) ] ) (CompoundWord parts:[(Token id:Id.Lit_Splice length:8 col:17 line:...0x1a0a)]) ] redirects: [] do_fork: T ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 4 col: 0 line: (SourceLine line_num:13 content:"echo len=$[len(myarray)]\n" src:...0x1d21) ) more_env: [] words: [ (CompoundWord parts:[...0x19a6]) (CompoundWord parts: [ (Token id:Id.Lit_VarLike length:4 col:5 line:...0x19aa) (word_part.ExprSub left: (Token id:Id.Left_DollarBracket length:2 col:9 line:...0x19aa) child: (expr.FuncCall func: (expr.Var left: (Token id:Id.Expr_Name length:3 col:11 line:...0x19aa) name: len ) args: (ArgList left: (Token id:Id.Op_LParen length:1 col:14 line:...0x19aa) pos_args: [ (expr.Var left: (Token id:Id.Expr_Name length:7 col:15 line:...0x19aa) name: myarray ) ] named_args: [] right: (Token id:Id.Op_RParen length:1 col:22 line:...0x19aa) ) ) right: (Token id:Id.Op_RBracket length:1 col:23 line:...0x19aa) ) ] ) ] redirects: [] do_fork: T ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 4 col: 0 line: (SourceLine line_num:14 content:"echo\n" src:...0x1d21) ) more_env: [] words: [(CompoundWord parts:[...0x18aa])] redirects: [] do_fork: T ) (command.ForEach keyword: (Token id: Id.KW_For length: 3 col: 0 line: (SourceLine line_num:16 content:"for item in (myarray) {\n" src:...0x1d21) ) iter_names: [item] iterable: (for_iter.YshExpr e: (expr.Var left:(Token id:Id.Expr_Name length:7 col:13 line:...0x186e) name:myarray) blame: (Token id:Id.KW_In length:2 col:9 line:...0x186e) ) body: (BraceGroup left: (Token id:Id.Lit_LBrace length:1 col:22 line:...0x186e) children: [ (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 4 col: 2 line: (SourceLine line_num:17 content:" echo \" $item\"\n" src:...0x1d21) ) more_env: [] words: [ (CompoundWord parts:[...0x17c2]) (CompoundWord parts: [ (DoubleQuoted left: (Token id:Id.Left_DoubleQuote length:1 col:7 line:...0x17ca) parts: [ (Token id:Id.Lit_Chars length:2 col:8 line:...0x17ca) (SimpleVarSub tok: (Token id:Id.VSub_DollarName length:5 col:10 line:...0x17ca) ) ] right: (Token id:Id.Right_DoubleQuote length:1 col:15 line:...0x17ca) ) ] ) ] redirects: [] do_fork: T ) ] redirects: [] right: (Token id: Id.Lit_RBrace length: 1 col: 0 line: (SourceLine line_num:18 content:"}\n" src:...0x1d21) ) ) redirects: [] ) ] ) --- (command.CommandList children: [ (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 4 col: 0 line: (SourceLine line_num: 2 content: "echo 'This is a shell script with OSH extensions!'\n" src: (source.MainFile path:ysh/testdata/hello.osh) ) ) more_env: [] words: [ (CompoundWord parts:[...0x13c2]) (CompoundWord parts: [ (SingleQuoted left: (Token id:Id.Left_SingleQuote length:1 col:5 line:...0x13c6) sval: "This is a shell script with OSH extensions!" right: (Token id:Id.Right_SingleQuote length:1 col:49 line:...0x13c6) ) ] ) ] redirects: [] do_fork: T ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 4 col: 0 line: (SourceLine line_num:3 content:"echo\n" src:...0x1d21) ) more_env: [] words: [(CompoundWord parts:[...0x1366])] redirects: [] do_fork: T ) (command.VarDecl keyword: (Token id: Id.KW_Var length: 3 col: 0 line: (SourceLine line_num:5 content:"var x = 1 + 2*3\n" src:...0x1d21) ) lhs: [(NameType left:(Token id:Id.Expr_Name length:1 col:4 line:...0x132a) name:x)] rhs: (expr.Binary op: (Token id:Id.Arith_Plus length:1 col:10 line:...0x132a) left: (expr.Const c: (Token id:Id.Expr_DecInt length:1 col:8 line:...0x132a) val: (value.Int i:1) ) right: (expr.Binary op: (Token id:Id.Arith_Star length:1 col:13 line:...0x132a) left: (expr.Const c: (Token id:Id.Expr_DecInt length:1 col:12 line:...0x132a) val: (value.Int i:2) ) right: (expr.Const c: (Token id:Id.Expr_DecInt length:1 col:14 line:...0x132a) val: (value.Int i:3) ) ) ) ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 4 col: 0 line: (SourceLine line_num:7 content:"echo \"x: $x\"\n" src:...0x1d21) ) more_env: [] words: [ (CompoundWord parts:[...0x1242]) (CompoundWord parts: [ (DoubleQuoted left: (Token id:Id.Left_DoubleQuote length:1 col:5 line:...0x1246) parts: [ (Token id:Id.Lit_Chars length:3 col:6 line:...0x1246) (SimpleVarSub tok: (Token id:Id.VSub_DollarName length:2 col:9 line:...0x1246) ) ] right: (Token id:Id.Right_DoubleQuote length:1 col:11 line:...0x1246) ) ] ) ] redirects: [] do_fork: T ) (command.Mutation keyword: (Token id: Id.KW_SetVar length: 6 col: 0 line: (SourceLine line_num:10 content:"setvar x += 1 \n" src:...0x1d21) ) lhs: [(Token id:Id.Expr_Name length:1 col:7 line:...0x11d6 tval:x)] op: (Token id:Id.Arith_PlusEqual length:2 col:9 line:...0x11d6) rhs: (expr.Const c:(Token id:Id.Expr_DecInt length:1 col:12 line:...0x11d6) val:(value.Int i:1)) ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 4 col: 0 line: (SourceLine line_num:12 content:"echo \"x: $x\"\n" src:...0x1d21) ) more_env: [] words: [ (CompoundWord parts:[...0x1106]) (CompoundWord parts: [ (DoubleQuoted left: (Token id:Id.Left_DoubleQuote length:1 col:5 line:...0x110a) parts: [ (Token id:Id.Lit_Chars length:3 col:6 line:...0x110a) (SimpleVarSub tok: (Token id:Id.VSub_DollarName length:2 col:9 line:...0x110a) ) ] right: (Token id:Id.Right_DoubleQuote length:1 col:11 line:...0x110a) ) ] ) ] redirects: [] do_fork: T ) (command.VarDecl keyword: (Token id: Id.KW_Var length: 3 col: 0 line: (SourceLine line_num:14 content:"var mylist = [1, 2, 3]\n" src:...0x1d21) ) lhs: [(NameType left:(Token id:Id.Expr_Name length:6 col:4 line:...0x10aa) name:mylist)] rhs: (expr.List left: (Token id:Id.Op_LBracket length:1 col:13 line:...0x10aa) elts: [ (expr.Const c: (Token id:Id.Expr_DecInt length:1 col:14 line:...0x10aa) val: (value.Int i:1) ) (expr.Const c: (Token id:Id.Expr_DecInt length:1 col:17 line:...0x10aa) val: (value.Int i:2) ) (expr.Const c: (Token id:Id.Expr_DecInt length:1 col:20 line:...0x10aa) val: (value.Int i:3) ) ] ctx: expr_context.Store ) ) (command.VarDecl keyword: (Token id: Id.KW_Var length: 3 col: 0 line: (SourceLine line_num:16 content:"var y = mylist[1] * 10\n" src:...0x1d21) ) lhs: [(NameType left:(Token id:Id.Expr_Name length:1 col:4 line:...0x19ca) name:y)] rhs: (expr.Binary op: (Token id:Id.Arith_Star length:1 col:18 line:...0x19ca) left: (Subscript left: (Token id:Id.Op_LBracket length:1 col:14 line:...0x19ca) obj: (expr.Var left:(Token id:Id.Expr_Name length:6 col:8 line:...0x19ca) name:mylist) index: (expr.Const c: (Token id:Id.Expr_DecInt length:1 col:15 line:...0x19ca) val: (value.Int i:1) ) ) right: (expr.Const c: (Token id:Id.Expr_DecInt length:2 col:20 line:...0x19ca) val: (value.Int i:10) ) ) ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 4 col: 0 line: (SourceLine line_num:18 content:"echo \"y: $y\"\n" src:...0x1d21) ) more_env: [] words: [ (CompoundWord parts:[...0x18be]) (CompoundWord parts: [ (DoubleQuoted left: (Token id:Id.Left_DoubleQuote length:1 col:5 line:...0x18c2) parts: [ (Token id:Id.Lit_Chars length:3 col:6 line:...0x18c2) (SimpleVarSub tok: (Token id:Id.VSub_DollarName length:2 col:9 line:...0x18c2) ) ] right: (Token id:Id.Right_DoubleQuote length:1 col:11 line:...0x18c2) ) ] ) ] redirects: [] do_fork: T ) (command.VarDecl keyword: (Token id: Id.KW_Var length: 3 col: 0 line: (SourceLine line_num:20 content:"var list2 = mylist ++ [4, 5]\n" src:...0x1d21) ) lhs: [(NameType left:(Token id:Id.Expr_Name length:5 col:4 line:...0x1862) name:list2)] rhs: (expr.Binary op: (Token id:Id.Arith_DPlus length:2 col:19 line:...0x1862) left: (expr.Var left:(Token id:Id.Expr_Name length:6 col:12 line:...0x1862) name:mylist) right: (expr.List left: (Token id:Id.Op_LBracket length:1 col:22 line:...0x1862) elts: [ (expr.Const c: (Token id:Id.Expr_DecInt length:1 col:23 line:...0x1862) val: (value.Int i:4) ) (expr.Const c: (Token id:Id.Expr_DecInt length:1 col:26 line:...0x1862) val: (value.Int i:5) ) ] ctx: expr_context.Store ) ) ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 2 col: 0 line: (SourceLine line_num:26 content:"pp cell list2\n" src:...0x1d21) ) more_env: [] words: [ (CompoundWord parts:[...0x16be]) (CompoundWord parts:[(Token id:Id.Lit_Chars length:4 col:3 line:...0x16c2)]) (CompoundWord parts:[(Token id:Id.Lit_Chars length:5 col:8 line:...0x16c2)]) ] redirects: [] do_fork: T ) (command.ShAssignment left: (Token id: Id.Lit_VarLike length: 5 col: 0 line: (SourceLine line_num: 28 content: "str1='shell string' # traditinoal shell-style assignment\n" src: ...0x1d21 ) ) pairs: [ (AssignPair left: ...0x166a lhs: (sh_lhs.Name left:...0x166a name:str1) op: assign_op.Equal rhs: (CompoundWord parts: [ (SingleQuoted left: (Token id:Id.Left_SingleQuote length:1 col:5 line:...0x166e) sval: "shell string" right: (Token id:Id.Right_SingleQuote length:1 col:18 line:...0x166e) ) ] ) ) ] redirects: [] ) (command.VarDecl keyword: (Token id: Id.KW_Var length: 3 col: 0 line: (SourceLine line_num:31 content:"var str2 = \"Oil string\"\n" src:...0x1d21) ) lhs: [(NameType left:(Token id:Id.Expr_Name length:4 col:4 line:...0x15e2) name:str2)] rhs: (DoubleQuoted left: (Token id:Id.Left_DoubleQuote length:1 col:11 line:...0x15e2) parts: [(Token id:Id.Lit_Chars length:10 col:12 line:...0x15e2)] right: (Token id:Id.Right_DoubleQuote length:1 col:22 line:...0x15e2) ) ) (command.VarDecl keyword: (Token id: Id.KW_Var length: 3 col: 0 line: (SourceLine line_num:33 content:"var str3 = str1 ++ str2\n" src:...0x1d21) ) lhs: [(NameType left:(Token id:Id.Expr_Name length:4 col:4 line:...0x1fc6) name:str3)] rhs: (expr.Binary op: (Token id:Id.Arith_DPlus length:2 col:16 line:...0x1fc6) left: (expr.Var left:(Token id:Id.Expr_Name length:4 col:11 line:...0x1fc6) name:str1) right: (expr.Var left:(Token id:Id.Expr_Name length:4 col:19 line:...0x1fc6) name:str2) ) ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 4 col: 0 line: (SourceLine line_num:35 content:"echo \"str3 = $str3\"\n" src:...0x1d21) ) more_env: [] words: [ (CompoundWord parts:[...0x1ef6]) (CompoundWord parts: [ (DoubleQuoted left: (Token id:Id.Left_DoubleQuote length:1 col:5 line:...0x1efa) parts: [ (Token id:Id.Lit_Chars length:7 col:6 line:...0x1efa) (SimpleVarSub tok: (Token id:Id.VSub_DollarName length:5 col:13 line:...0x1efa) ) ] right: (Token id:Id.Right_DoubleQuote length:1 col:18 line:...0x1efa) ) ] ) ] redirects: [] do_fork: T ) ] ) --- skipping ysh/testdata/assign.osh --- (command.CommandList children: [ (command.ShFunction name_tok: (Token id: Id.Lit_Chars length: 4 col: 0 line: (SourceLine line_num: 8 content: "argv() { spec/bin/argv.py \"$@\"; }\n" src: (source.MainFile path:ysh/testdata/array-rewrite-2.sh) ) ) name: argv body: (BraceGroup left: (Token id:Id.Lit_LBrace length:1 col:7 line:...0x135e) children: [ (command.Sentence child: (command.Simple blame_tok: (Token id:Id.Lit_Chars length:4 col:9 line:...0x135e) more_env: [] words: [ (CompoundWord parts: [ ...0x131e (Token id: Id.Lit_Slash length: 1 col: 13 line: ...0x135e ) (Token id: Id.Lit_Chars length: 3 col: 14 line: ...0x135e ) (Token id: Id.Lit_Slash length: 1 col: 17 line: ...0x135e ) (Token id: Id.Lit_Chars length: 7 col: 18 line: ...0x135e ) ] ) (CompoundWord parts: [ (DoubleQuoted left: (Token id:Id.Left_DoubleQuote length:1 col:26 line:...0x135e) parts: [ (SimpleVarSub tok: (Token id:Id.VSub_At length:2 col:27 line:...0x135e) ) ] right: (Token id:Id.Right_DoubleQuote length:1 col:29 line:...0x135e) ) ] ) ] redirects: [] do_fork: T ) terminator: (Token id:Id.Op_Semi length:1 col:30 line:...0x135e) ) ] redirects: [] right: (Token id:Id.Lit_RBrace length:1 col:32 line:...0x135e) ) ) (command.ShAssignment left: (Token id: Id.Lit_VarLike length: 16 col: 0 line: (SourceLine line_num:15 content:"CONFIG_HAVE_FOO=yes\n" src:...0x1d21) ) pairs: [ (AssignPair left: ...0x123a lhs: (sh_lhs.Name left:...0x123a name:CONFIG_HAVE_FOO) op: assign_op.Equal rhs: (CompoundWord parts:[(Token id:Id.Lit_Chars length:3 col:16 line:...0x123e)]) ) ] redirects: [] ) (command.ShAssignment left: (Token id: Id.Lit_VarLike length: 5 col: 0 line: (SourceLine line_num:16 content:"path='/etc/path with spaces'\n" src:...0x1d21) ) pairs: [ (AssignPair left: ...0x11ea lhs: (sh_lhs.Name left:...0x11ea name:path) op: assign_op.Equal rhs: (CompoundWord parts: [ (SingleQuoted left: (Token id:Id.Left_SingleQuote length:1 col:5 line:...0x11ee) sval: "/etc/path with spaces" right: (Token id:Id.Right_SingleQuote length:1 col:27 line:...0x11ee) ) ] ) ) ] redirects: [] ) (command.ShAssignment left: (Token id: Id.Lit_VarLike length: 6 col: 0 line: (SourceLine line_num:17 content:"flags=''\n" src:...0x1d21) ) pairs: [ (AssignPair left: ...0x1186 lhs: (sh_lhs.Name left:...0x1186 name:flags) op: assign_op.Equal rhs: (CompoundWord parts: [ (SingleQuoted left: (Token id:Id.Left_SingleQuote length:1 col:6 line:...0x118a) sval: "" right: (Token id:Id.Right_SingleQuote length:1 col:7 line:...0x118a) ) ] ) ) ] redirects: [] ) (command.If if_kw: (Token id: Id.KW_If length: 2 col: 0 line: (SourceLine line_num: 20 content: "if [ -n \"${CONFIG_HAVE_FOO}\" ]; then\n" src: ...0x1d21 ) ) arms: [ (IfArm keyword: ...0x112a cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: (Token id:Id.Lit_LBracket length:1 col:3 line:...0x112e) more_env: [] words: [ (CompoundWord parts:[...0x111a]) (CompoundWord parts: [(Token id:Id.Lit_Chars length:2 col:5 line:...0x112e)] ) (CompoundWord parts: [ (DoubleQuoted left: (Token id:Id.Left_DoubleQuote length:1 col:8 line:...0x112e) parts: [ (BracedVarSub left: (Token id:Id.Left_DollarBrace length:2 col:9 line:...0x112e) token: (Token id:Id.VSub_Name length:15 col:11 line:...0x112e) var_name: CONFIG_HAVE_FOO right: (Token id: Id.Right_DollarBrace length: 1 col: 26 line: ...0x112e ) ) ] right: (Token id:Id.Right_DoubleQuote length:1 col:27 line:...0x112e) ) ] ) (CompoundWord parts: [(Token id:Id.Lit_RBracket length:1 col:29 line:...0x112e)] ) ] redirects: [] do_fork: T ) terminator: (Token id:Id.Op_Semi length:1 col:30 line:...0x112e) ) ] ) then_kw: (Token id:Id.KW_Then length:4 col:32 line:...0x112e) action: [ (command.ShAssignment left: (Token id: Id.Lit_VarLike length: 6 col: 2 line: (SourceLine line_num: 21 content: " flags=\"${flags} --foo=$path\"\n" src: ...0x1d21 ) ) pairs: [ (AssignPair left: ...0x108a lhs: (sh_lhs.Name left:...0x108a name:flags) op: assign_op.Equal rhs: (CompoundWord parts: [ (DoubleQuoted left: (Token id:Id.Left_DoubleQuote length:1 col:8 line:...0x1092) parts: [ (BracedVarSub left: (Token id:Id.Left_DollarBrace length:2 col:9 line:...0x1092) token: (Token id:Id.VSub_Name length:5 col:11 line:...0x1092) var_name: flags right: (Token id:Id.Right_DollarBrace length:1 col:16 line:...0x1092) ) (Token id: Id.Lit_Chars length: 7 col: 17 line: ...0x1092 ) (SimpleVarSub tok: (Token id:Id.VSub_DollarName length:5 col:24 line:...0x1092) ) ] right: (Token id:Id.Right_DoubleQuote length:1 col:29 line:...0x1092) ) ] ) ) ] redirects: [] ) ] then_tok: ...0x10aa ) ] else_action: [] fi_kw: (Token id: Id.KW_Fi length: 2 col: 0 line: (SourceLine line_num:22 content:"fi\n" src:...0x1d21) ) redirects: [] ) (command.If if_kw: (Token id: Id.KW_If length: 2 col: 0 line: (SourceLine line_num: 24 content: "if [ -n \"${CONFIG_HAVE_BAR}\" ]; then\n" src: ...0x1d21 ) ) arms: [ (IfArm keyword: ...0x1006 cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: (Token id:Id.Lit_LBracket length:1 col:3 line:...0x100a) more_env: [] words: [ (CompoundWord parts:[...0x1a9e]) (CompoundWord parts: [(Token id:Id.Lit_Chars length:2 col:5 line:...0x100a)] ) (CompoundWord parts: [ (DoubleQuoted left: (Token id:Id.Left_DoubleQuote length:1 col:8 line:...0x100a) parts: [ (BracedVarSub left: (Token id:Id.Left_DollarBrace length:2 col:9 line:...0x100a) token: (Token id:Id.VSub_Name length:15 col:11 line:...0x100a) var_name: CONFIG_HAVE_BAR right: (Token id: Id.Right_DollarBrace length: 1 col: 26 line: ...0x100a ) ) ] right: (Token id:Id.Right_DoubleQuote length:1 col:27 line:...0x100a) ) ] ) (CompoundWord parts: [(Token id:Id.Lit_RBracket length:1 col:29 line:...0x100a)] ) ] redirects: [] do_fork: T ) terminator: (Token id:Id.Op_Semi length:1 col:30 line:...0x100a) ) ] ) then_kw: (Token id:Id.KW_Then length:4 col:32 line:...0x100a) action: [ (command.ShAssignment left: (Token id: Id.Lit_VarLike length: 6 col: 2 line: (SourceLine line_num:25 content:" flags=\"${flags} --bar\"\n" src:...0x1d21) ) pairs: [ (AssignPair left: ...0x1a0e lhs: (sh_lhs.Name left:...0x1a0e name:flags) op: assign_op.Equal rhs: (CompoundWord parts: [ (DoubleQuoted left: (Token id:Id.Left_DoubleQuote length:1 col:8 line:...0x1a16) parts: [ (BracedVarSub left: (Token id:Id.Left_DollarBrace length:2 col:9 line:...0x1a16) token: (Token id:Id.VSub_Name length:5 col:11 line:...0x1a16) var_name: flags right: (Token id:Id.Right_DollarBrace length:1 col:16 line:...0x1a16) ) (Token id: Id.Lit_Chars length: 6 col: 17 line: ...0x1a16 ) ] right: (Token id:Id.Right_DoubleQuote length:1 col:23 line:...0x1a16) ) ] ) ) ] redirects: [] ) ] then_tok: ...0x1a2e ) ] else_action: [] fi_kw: (Token id: Id.KW_Fi length: 2 col: 0 line: (SourceLine line_num:26 content:"fi\n" src:...0x1d21) ) redirects: [] ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 4 col: 0 line: (SourceLine line_num: 28 content: "argv ${flags} # unquoted splitting\n" src: ...0x1d21 ) ) more_env: [] words: [ (CompoundWord parts:[...0x198e]) (CompoundWord parts: [ (BracedVarSub left: (Token id:Id.Left_DollarBrace length:2 col:5 line:...0x1992) token: (Token id:Id.VSub_Name length:5 col:7 line:...0x1992) var_name: flags right: (Token id:Id.Right_DollarBrace length:1 col:12 line:...0x1992) ) ] ) ] redirects: [] do_fork: T ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 3 col: 0 line: (SourceLine line_num:40 content:"set -o errexit\n" src:...0x1d21) ) more_env: [] words: [ (CompoundWord parts:[...0x1896]) (CompoundWord parts:[(Token id:Id.Lit_Chars length:2 col:4 line:...0x189a)]) (CompoundWord parts:[(Token id:Id.Lit_Chars length:7 col:7 line:...0x189a)]) ] redirects: [] do_fork: T ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 5 col: 0 line: (SourceLine line_num:41 content:"shopt -s parse_at simple_word_eval\n" src:...0x1d21) ) more_env: [] words: [ (CompoundWord parts:[...0x184a]) (CompoundWord parts:[(Token id:Id.Lit_Chars length:2 col:6 line:...0x184e)]) (CompoundWord parts:[(Token id:Id.Lit_Chars length:8 col:9 line:...0x184e)]) (CompoundWord parts:[(Token id:Id.Lit_Chars length:16 col:18 line:...0x184e)]) ] redirects: [] do_fork: T ) (command.Mutation keyword: (Token id: Id.KW_SetVar length: 6 col: 0 line: (SourceLine line_num: 43 content: "setvar CONFIG_HAVE_FOO = \"yes\" # TODO: change to single quotes\n" src: ...0x1d21 ) ) lhs: [(Token id:Id.Expr_Name length:15 col:7 line:...0x17ee tval:CONFIG_HAVE_FOO)] op: (Token id:Id.Arith_Equal length:1 col:23 line:...0x17ee) rhs: (DoubleQuoted left: (Token id:Id.Left_DoubleQuote length:1 col:25 line:...0x17ee) parts: [(Token id:Id.Lit_Chars length:3 col:26 line:...0x17ee)] right: (Token id:Id.Right_DoubleQuote length:1 col:29 line:...0x17ee) ) ) (command.Mutation keyword: (Token id: Id.KW_SetVar length: 6 col: 0 line: (SourceLine line_num: 44 content: "setvar path = \"/etc/path with spaces\"\n" src: ...0x1d21 ) ) lhs: [(Token id:Id.Expr_Name length:4 col:7 line:...0x170a tval:path)] op: (Token id:Id.Arith_Equal length:1 col:12 line:...0x170a) rhs: (DoubleQuoted left: (Token id:Id.Left_DoubleQuote length:1 col:14 line:...0x170a) parts: [(Token id:Id.Lit_Chars length:21 col:15 line:...0x170a)] right: (Token id:Id.Right_DoubleQuote length:1 col:36 line:...0x170a) ) ) (command.Mutation keyword: (Token id: Id.KW_SetVar length: 6 col: 0 line: (SourceLine line_num:45 content:"setvar flags = %()\n" src:...0x1d21) ) lhs: [(Token id:Id.Expr_Name length:5 col:7 line:...0x1632 tval:flags)] op: (Token id:Id.Arith_Equal length:1 col:13 line:...0x1632) rhs: (ShArrayLiteral left: (Token id:Id.Left_PercentParen length:2 col:15 line:...0x1632) words: [] right: (Token id:Id.Right_ShArrayLiteral length:1 col:17 line:...0x1632) ) ) (command.If if_kw: (Token id: Id.KW_If length: 2 col: 0 line: (SourceLine line_num:47 content:"if test -n $CONFIG_HAVE_FOO; then\n" src:...0x1d21) ) arms: [ (IfArm keyword: ...0x155a cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: (Token id:Id.Lit_Chars length:4 col:3 line:...0x155e) more_env: [] words: [ (CompoundWord parts:[...0x1ff2]) (CompoundWord parts: [(Token id:Id.Lit_Chars length:2 col:8 line:...0x155e)] ) (CompoundWord parts: [ (SimpleVarSub tok: (Token id:Id.VSub_DollarName length:16 col:11 line:...0x155e) ) ] ) ] redirects: [] do_fork: T ) terminator: (Token id:Id.Op_Semi length:1 col:27 line:...0x155e) ) ] ) then_kw: (Token id:Id.KW_Then length:4 col:29 line:...0x155e) action: [ (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 6 col: 2 line: (SourceLine line_num: 48 content: " append -- --foo=$path (flags)\n" src: ...0x1d21 ) ) more_env: [] words: [ (CompoundWord parts:[...0x1f8e]) (CompoundWord parts: [(Token id:Id.Lit_Chars length:2 col:9 line:...0x1f96)] ) (CompoundWord parts: [ (Token id:Id.Lit_Chars length:5 col:12 line:...0x1f96) (Token id:Id.Lit_Equals length:1 col:17 line:...0x1f96) (SimpleVarSub tok: (Token id:Id.VSub_DollarName length:5 col:18 line:...0x1f96) ) ] ) ] redirects: [] typed_args: (ArgList left: (Token id:Id.Op_LParen length:1 col:24 line:...0x1f96) pos_args: [ (expr.Var left: (Token id:Id.Expr_Name length:5 col:25 line:...0x1f96) name: flags ) ] named_args: [] right: (Token id:Id.Op_RParen length:1 col:30 line:...0x1f96) ) do_fork: T ) ] then_tok: ...0x1faa ) ] else_action: [] fi_kw: (Token id: Id.KW_Fi length: 2 col: 0 line: (SourceLine line_num:49 content:"fi\n" src:...0x1d21) ) redirects: [] ) (command.If if_kw: (Token id: Id.KW_If length: 2 col: 0 line: (SourceLine line_num:51 content:"if test -n $CONFIG_HAVE_BAR; then\n" src:...0x1d21) ) arms: [ (IfArm keyword: ...0x1ea6 cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: (Token id:Id.Lit_Chars length:4 col:3 line:...0x1eaa) more_env: [] words: [ (CompoundWord parts:[...0x1e96]) (CompoundWord parts: [(Token id:Id.Lit_Chars length:2 col:8 line:...0x1eaa)] ) (CompoundWord parts: [ (SimpleVarSub tok: (Token id:Id.VSub_DollarName length:16 col:11 line:...0x1eaa) ) ] ) ] redirects: [] do_fork: T ) terminator: (Token id:Id.Op_Semi length:1 col:27 line:...0x1eaa) ) ] ) then_kw: (Token id:Id.KW_Then length:4 col:29 line:...0x1eaa) action: [ (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 6 col: 2 line: (SourceLine line_num:52 content:" append -- --bar (flags)\n" src:...0x1d21) ) more_env: [] words: [ (CompoundWord parts:[...0x1e2e]) (CompoundWord parts: [(Token id:Id.Lit_Chars length:2 col:9 line:...0x1e36)] ) (CompoundWord parts: [(Token id:Id.Lit_Chars length:5 col:12 line:...0x1e36)] ) ] redirects: [] typed_args: (ArgList left: (Token id:Id.Op_LParen length:1 col:18 line:...0x1e36) pos_args: [ (expr.Var left: (Token id:Id.Expr_Name length:5 col:19 line:...0x1e36) name: flags ) ] named_args: [] right: (Token id:Id.Op_RParen length:1 col:24 line:...0x1e36) ) do_fork: T ) ] then_tok: ...0x1e4e ) ] else_action: [] fi_kw: (Token id: Id.KW_Fi length: 2 col: 0 line: (SourceLine line_num:53 content:"fi\n" src:...0x1d21) ) redirects: [] ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 4 col: 0 line: (SourceLine line_num:55 content:"argv @flags\n" src:...0x1d21) ) more_env: [] words: [ (CompoundWord parts:[...0x1d4e]) (CompoundWord parts:[(Token id:Id.Lit_Splice length:6 col:5 line:...0x1d52)]) ] redirects: [] do_fork: T ) ] ) --- (command.CommandList children: [ (command.ShFunction name_tok: (Token id: Id.Lit_Chars length: 4 col: 0 line: (SourceLine line_num: 19 content: "argv() {\n" src: (source.MainFile path:ysh/testdata/sigil-pairs.sh) ) ) name: argv body: (BraceGroup left: (Token id:Id.Lit_LBrace length:1 col:7 line:...0x1292) children: [ (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 6 col: 2 line: (SourceLine line_num: 20 content: " python -c 'import sys;print(sys.argv[1:])' @ARGV\n" src: ...0x1d21 ) ) more_env: [] words: [ (CompoundWord parts:[...0x124a]) (CompoundWord parts: [(Token id:Id.Lit_Chars length:2 col:9 line:...0x1252)] ) (CompoundWord parts: [ (SingleQuoted left: (Token id:Id.Left_SingleQuote length:1 col:12 line:...0x1252) sval: "import sys;print(sys.argv[1:])" right: (Token id:Id.Right_SingleQuote length:1 col:43 line:...0x1252) ) ] ) (CompoundWord parts: [(Token id:Id.Lit_Splice length:5 col:45 line:...0x1252)] ) ] redirects: [] do_fork: T ) ] redirects: [] right: (Token id: Id.Lit_RBrace length: 1 col: 0 line: (SourceLine line_num:21 content:"}\n" src:...0x1d21) ) ) ) (command.ShFunction name_tok: (Token id: Id.Lit_Chars length: 4 col: 0 line: (SourceLine line_num:23 content:"show() {\n" src:...0x1d21) ) name: show body: (BraceGroup left: (Token id:Id.Lit_LBrace length:1 col:7 line:...0x11ae) children: [ (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 4 col: 2 line: (SourceLine line_num:24 content:" echo '====='\n" src:...0x1d21) ) more_env: [] words: [ (CompoundWord parts:[...0x116e]) (CompoundWord parts: [ (SingleQuoted left: (Token id:Id.Left_SingleQuote length:1 col:7 line:...0x1176) sval: "=====" right: (Token id:Id.Right_SingleQuote length:1 col:13 line:...0x1176) ) ] ) ] redirects: [] do_fork: T ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 4 col: 2 line: (SourceLine line_num:25 content:" argv @ARGV\n" src:...0x1d21) ) more_env: [] words: [ (CompoundWord parts:[...0x1112]) (CompoundWord parts: [(Token id:Id.Lit_Splice length:5 col:7 line:...0x111a)] ) ] redirects: [] do_fork: T ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 4 col: 2 line: (SourceLine line_num:26 content:" echo\n" src:...0x1d21) ) more_env: [] words: [(CompoundWord parts:[...0x10d2])] redirects: [] do_fork: T ) ] redirects: [] right: (Token id: Id.Lit_RBrace length: 1 col: 0 line: (SourceLine line_num:27 content:"}\n" src:...0x1d21) ) ) ) (command.VarDecl keyword: (Token id: Id.KW_Var length: 3 col: 0 line: (SourceLine line_num:30 content:"var strarray = %(\n" src:...0x1d21) ) lhs: [(NameType left:(Token id:Id.Expr_Name length:8 col:4 line:...0x107a) name:strarray)] rhs: (ShArrayLiteral left: (Token id:Id.Left_PercentParen length:2 col:15 line:...0x107a) words: [ (CompoundWord parts: [ (Token id: Id.Lit_Chars length: 4 col: 4 line: (SourceLine line_num: 31 content: " bare words *.sh {a,b}@example.com 'sq' \"dq ${x:-default}\"\n" src: ...0x1d21 ) ) ] ) (CompoundWord parts:[(Token id:Id.Lit_Chars length:5 col:9 line:...0x1a92)]) (CompoundWord parts: [ (Token id:Id.Lit_Star length:1 col:15 line:...0x1a92) (Token id:Id.Lit_Chars length:3 col:16 line:...0x1a92) ] ) (word.BracedTree parts: [ (word_part.BracedTuple words: [ (CompoundWord parts: [(Token id:Id.Lit_Chars length:1 col:21 line:...0x1a92)] ) (CompoundWord parts: [(Token id:Id.Lit_Chars length:1 col:23 line:...0x1a92)] ) ] ) (Token id:Id.Lit_Splice length:8 col:25 line:...0x1a92) (Token id:Id.Lit_Chars length:4 col:33 line:...0x1a92) ] ) (CompoundWord parts: [ (SingleQuoted left: (Token id:Id.Left_SingleQuote length:1 col:38 line:...0x1a92) sval: sq right: (Token id:Id.Right_SingleQuote length:1 col:41 line:...0x1a92) ) ] ) (CompoundWord parts: [ (DoubleQuoted left: (Token id:Id.Left_DoubleQuote length:1 col:43 line:...0x1a92) parts: [ (Token id:Id.Lit_Chars length:3 col:44 line:...0x1a92) (BracedVarSub left: (Token id:Id.Left_DollarBrace length:2 col:47 line:...0x1a92) token: (Token id:Id.VSub_Name length:1 col:49 line:...0x1a92) var_name: x suffix_op: (suffix_op.Unary op: (Token id:Id.VTest_ColonHyphen length:2 col:50 line:...0x1a92) arg_word: (CompoundWord parts: [(Token id:Id.Lit_Chars length:7 col:52 line:...0x1a92)] ) ) right: (Token id:Id.Right_DollarBrace length:1 col:59 line:...0x1a92) ) ] right: (Token id:Id.Right_DoubleQuote length:1 col:60 line:...0x1a92) ) ] ) ] right: (Token id: Id.Right_ShArrayLiteral length: 1 col: 0 line: (SourceLine line_num:32 content:")\n" src:...0x1d21) ) ) ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 4 col: 0 line: (SourceLine line_num:34 content:"show @strarray\n" src:...0x1d21) ) more_env: [] words: [ (CompoundWord parts:[...0x1986]) (CompoundWord parts:[(Token id:Id.Lit_Splice length:9 col:5 line:...0x198a)]) ] redirects: [] do_fork: T ) (command.VarDecl keyword: (Token id: Id.KW_Var length: 3 col: 0 line: (SourceLine line_num:36 content:"var cmd_sub = $(\n" src:...0x1d21) ) lhs: [(NameType left:(Token id:Id.Expr_Name length:7 col:4 line:...0x193e) name:cmd_sub)] rhs: (CommandSub left_token: (Token id:Id.Left_DollarParen length:2 col:14 line:...0x193e) child: (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 4 col: 4 line: (SourceLine line_num: 37 content: " echo bare words *.sh {a,b}@example.com 'sq' \"dq ${x:-default}\"\n" src: ...0x1d21 ) ) more_env: [] words: [ (CompoundWord parts:[...0x18a6]) (CompoundWord parts: [(Token id:Id.Lit_Chars length:4 col:9 line:...0x18ae)] ) (CompoundWord parts: [(Token id:Id.Lit_Chars length:5 col:14 line:...0x18ae)] ) (CompoundWord parts: [ (Token id:Id.Lit_Star length:1 col:20 line:...0x18ae) (Token id:Id.Lit_Chars length:3 col:21 line:...0x18ae) ] ) (word.BracedTree parts: [ (word_part.BracedTuple words: [ (CompoundWord parts: [(Token id:Id.Lit_Chars length:1 col:26 line:...0x18ae)] ) (CompoundWord parts: [(Token id:Id.Lit_Chars length:1 col:28 line:...0x18ae)] ) ] ) (Token id:Id.Lit_Splice length:8 col:30 line:...0x18ae) (Token id:Id.Lit_Chars length:4 col:38 line:...0x18ae) ] ) (CompoundWord parts: [ (SingleQuoted left: (Token id:Id.Left_SingleQuote length:1 col:43 line:...0x18ae) sval: sq right: (Token id:Id.Right_SingleQuote length:1 col:46 line:...0x18ae) ) ] ) (CompoundWord parts: [ (DoubleQuoted left: (Token id:Id.Left_DoubleQuote length:1 col:48 line:...0x18ae) parts: [ (Token id: Id.Lit_Chars length: 3 col: 49 line: ...0x18ae ) (BracedVarSub left: (Token id:Id.Left_DollarBrace length:2 col:52 line:...0x18ae) token: (Token id:Id.VSub_Name length:1 col:54 line:...0x18ae) var_name: x suffix_op: (suffix_op.Unary op: (Token id:Id.VTest_ColonHyphen length:2 col:55 line:...0x18ae) arg_word: (CompoundWord parts: [(Token id:Id.Lit_Chars length:7 col:57 line:...0x18ae)] ) ) right: (Token id:Id.Right_DollarBrace length:1 col:64 line:...0x18ae) ) ] right: (Token id:Id.Right_DoubleQuote length:1 col:65 line:...0x18ae) ) ] ) ] redirects: [] do_fork: T ) right: (Token id: Id.Eof_RParen length: 1 col: 0 line: (SourceLine line_num:38 content:")\n" src:...0x1d21) ) ) ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 4 col: 0 line: (SourceLine line_num:40 content:"show $cmd_sub\n" src:...0x1d21) ) more_env: [] words: [ (CompoundWord parts:[...0x1782]) (CompoundWord parts: [(SimpleVarSub tok:(Token id:Id.VSub_DollarName length:8 col:5 line:...0x1786))] ) ] redirects: [] do_fork: T ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 4 col: 0 line: (SourceLine line_num: 42 content: "show $['quoted ' ++ 'words ' ++ \"dq ${x:-default}\"]\n" src: ...0x1d21 ) ) more_env: [] words: [ (CompoundWord parts:[...0x173a]) (CompoundWord parts: [ (word_part.ExprSub left: (Token id:Id.Left_DollarBracket length:2 col:5 line:...0x173e) child: (expr.Binary op: (Token id:Id.Arith_DPlus length:2 col:29 line:...0x173e) left: (expr.Binary op: (Token id:Id.Arith_DPlus length:2 col:17 line:...0x173e) left: (SingleQuoted left: (Token id:Id.Left_SingleQuote length:1 col:7 line:...0x173e) sval: "quoted " right: (Token id:Id.Right_SingleQuote length:1 col:15 line:...0x173e) ) right: (SingleQuoted left: (Token id:Id.Left_SingleQuote length:1 col:20 line:...0x173e) sval: "words " right: (Token id:Id.Right_SingleQuote length:1 col:27 line:...0x173e) ) ) right: (DoubleQuoted left: (Token id:Id.Left_DoubleQuote length:1 col:32 line:...0x173e) parts: [ (Token id: Id.Lit_Chars length: 3 col: 33 line: ...0x173e ) (BracedVarSub left: (Token id:Id.Left_DollarBrace length:2 col:36 line:...0x173e) token: (Token id:Id.VSub_Name length:1 col:38 line:...0x173e) var_name: x suffix_op: (suffix_op.Unary op: (Token id:Id.VTest_ColonHyphen length:2 col:39 line:...0x173e) arg_word: (CompoundWord parts: [(Token id:Id.Lit_Chars length:7 col:41 line:...0x173e)] ) ) right: (Token id:Id.Right_DollarBrace length:1 col:48 line:...0x173e) ) ] right: (Token id:Id.Right_DoubleQuote length:1 col:49 line:...0x173e) ) ) right: (Token id:Id.Op_RBracket length:1 col:50 line:...0x173e) ) ] ) ] redirects: [] do_fork: T ) ] ) --- (command.CommandList children: [ (command.ShAssignment left: (Token id: Id.Lit_VarLike length: 11 col: 0 line: (SourceLine line_num: 1 content: "global_var=global\n" src: (source.MainFile path:ysh/testdata/no-dynamic-scope.osh) ) ) pairs: [ (AssignPair left: ...0x13ca lhs: (sh_lhs.Name left:...0x13ca name:global_var) op: assign_op.Equal rhs: (CompoundWord parts:[(Token id:Id.Lit_Chars length:6 col:11 line:...0x13d2)]) ) ] redirects: [] ) (command.ShFunction name_tok: (Token id: Id.Lit_Chars length: 1 col: 0 line: (SourceLine line_num:3 content:"g() {\n" src:...0x1d21) ) name: g body: (BraceGroup left: (Token id:Id.Lit_LBrace length:1 col:4 line:...0x1376) children: [ (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 5 col: 2 line: (SourceLine line_num:4 content:" local g_var=f\n" src:...0x1d21) ) more_env: [] words: [ (CompoundWord parts:[...0x132a]) (CompoundWord parts: [ (Token id:Id.Lit_VarLike length:6 col:8 line:...0x1332) (Token id:Id.Lit_Chars length:1 col:14 line:...0x1332) ] ) ] redirects: [] do_fork: T ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 4 col: 2 line: (SourceLine line_num:5 content:" echo $g_var\n" src:...0x1d21) ) more_env: [] words: [ (CompoundWord parts:[...0x12e2]) (CompoundWord parts: [ (SimpleVarSub tok: (Token id:Id.VSub_DollarName length:6 col:7 line:...0x12ea) ) ] ) ] redirects: [] do_fork: T ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 4 col: 2 line: (SourceLine line_num:6 content:" echo $f_var\n" src:...0x1d21) ) more_env: [] words: [ (CompoundWord parts:[...0x129e]) (CompoundWord parts: [ (SimpleVarSub tok: (Token id:Id.VSub_DollarName length:6 col:7 line:...0x12a6) ) ] ) ] redirects: [] do_fork: T ) (command.VarDecl keyword: (Token id: Id.KW_Var length: 3 col: 2 line: (SourceLine line_num:8 content:" var oil_var = global_var\n" src:...0x1d21) ) lhs: [ (NameType left: (Token id:Id.Expr_Name length:7 col:6 line:...0x125e) name: oil_var ) ] rhs: (expr.Var left: (Token id:Id.Expr_Name length:10 col:16 line:...0x125e) name: global_var ) ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 4 col: 2 line: (SourceLine line_num:9 content:" echo $oil_var\n" src:...0x1d21) ) more_env: [] words: [ (CompoundWord parts:[...0x11aa]) (CompoundWord parts: [ (SimpleVarSub tok: (Token id:Id.VSub_DollarName length:8 col:7 line:...0x11b2) ) ] ) ] redirects: [] do_fork: T ) ] redirects: [] right: (Token id: Id.Lit_RBrace length: 1 col: 0 line: (SourceLine line_num:10 content:"}\n" src:...0x1d21) ) ) ) (command.ShFunction name_tok: (Token id: Id.Lit_Chars length: 1 col: 0 line: (SourceLine line_num:12 content:"f() {\n" src:...0x1d21) ) name: f body: (BraceGroup left: (Token id:Id.Lit_LBrace length:1 col:4 line:...0x1152) children: [ (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 5 col: 2 line: (SourceLine line_num:13 content:" local f_var=f\n" src:...0x1d21) ) more_env: [] words: [ (CompoundWord parts:[...0x1112]) (CompoundWord parts: [ (Token id:Id.Lit_VarLike length:6 col:8 line:...0x111a) (Token id:Id.Lit_Chars length:1 col:14 line:...0x111a) ] ) ] redirects: [] do_fork: T ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 4 col: 2 line: (SourceLine line_num:14 content:" echo $f_var\n" src:...0x1d21) ) more_env: [] words: [ (CompoundWord parts:[...0x10ca]) (CompoundWord parts: [ (SimpleVarSub tok: (Token id:Id.VSub_DollarName length:6 col:7 line:...0x10d2) ) ] ) ] redirects: [] do_fork: T ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 1 col: 2 line: (SourceLine line_num:15 content:" g\n" src:...0x1d21) ) more_env: [] words: [(CompoundWord parts:[...0x108a])] redirects: [] do_fork: T ) ] redirects: [] right: (Token id: Id.Lit_RBrace length: 1 col: 0 line: (SourceLine line_num:16 content:"}\n" src:...0x1d21) ) ) ) (command.Simple blame_tok: (Token id: Id.Lit_Chars length: 1 col: 0 line: (SourceLine line_num:18 content:"f\n" src:...0x1d21) ) more_env: [] words: [(CompoundWord parts:[...0x103a])] redirects: [] do_fork: T ) ] )