(C {(ls)} {(foo)}) ls [$x] $y core/a*.py (C {(ls)} {(Id.Lit_LBracket '[') ($ Id.VSub_DollarName '$x') (Id.Lit_RBracket ']')} {($ Id.VSub_DollarName '$y')} {(core/a) (Id.Lit_Star '*') (.py)} ) cmd_value: (cmd_value.Argv argv: [ls '[-' -- '---]' y yy core/alloc.py core/alloc_test.py] arg_spids: [0 2 2 2 6 6 8 8] ) local a=1 (C {(local)} {(Id.Lit_VarLike 'a=') (1)}) cmd_value: (cmd_value.Assign builtin_id: builtin.LOCAL argv: [local] arg_spids: [0] pairs: [(assign_arg lval:(lvalue.Named name:a) rval:(value.Str s:1) spid:2)] ) builtin local a=1 (C {(builtin)} {(local)} {(Id.Lit_VarLike 'a=') (1)}) cmd_value: (cmd_value.Argv argv:[builtin local 'a=1'] arg_spids:[0 2 4]) command local a=1 (C {(command)} {(local)} {(Id.Lit_VarLike 'a=') (1)}) cmd_value: (cmd_value.Argv argv:[command local 'a=1'] arg_spids:[0 2 4]) typeset -"$@" (C {(typeset)} {(-) (DQ ($ Id.VSub_At '$@'))}) cmd_value: (cmd_value.Assign builtin_id: builtin.TYPESET argv: [typeset -x] arg_spids: [0 2] pairs: [ (assign_arg lval:(lvalue.Named name:foo) spid:2) (assign_arg lval:(lvalue.Named name:spam) rval:(value.Str s:eggs) spid:2) ] ) local a=(1 2) "$@" (C {(local)} {(Id.Lit_VarLike 'a=') (sh_array_literal left:(Token id:Id.Op_LParen val:'(' span_id:3) words:[{(1)} {(2)}]) } {(DQ ($ Id.VSub_At '$@'))} ) cmd_value: (cmd_value.Assign builtin_id: builtin.LOCAL argv: [local] arg_spids: [0] pairs: [ (assign_arg lval:(lvalue.Named name:a) rval:(value.MaybeStrArray strs:[1 2]) spid:2) (assign_arg lval:(lvalue.Named name:x) spid:9) (assign_arg lval:(lvalue.Named name:foo) spid:9) (assign_arg lval:(lvalue.Named name:spam) rval:(value.Str s:eggs) spid:9) ] ) readonly "$@" a=(1 2) (C {(readonly)} {(DQ ($ Id.VSub_At '$@'))} {(Id.Lit_VarLike 'a=') (sh_array_literal left:(Token id:Id.Op_LParen val:'(' span_id:7) words:[{(1)} {(2)}]) } ) cmd_value: (cmd_value.Assign builtin_id: builtin.READONLY argv: [readonly] arg_spids: [0] pairs: [ (assign_arg lval:(lvalue.Named name:x) spid:2) (assign_arg lval:(lvalue.Named name:foo) spid:2) (assign_arg lval:(lvalue.Named name:spam) rval:(value.Str s:eggs) spid:2) (assign_arg lval:(lvalue.Named name:a) rval:(value.MaybeStrArray strs:[1 2]) spid:6) ] ) declare -rx foo=bar spam=eggs a=(1 2) (C {(declare)} {(-rx)} {(Id.Lit_VarLike 'foo=') (bar)} {(Id.Lit_VarLike 'spam=') (eggs)} {(Id.Lit_VarLike 'a=') (sh_array_literal left:(Token id:Id.Op_LParen val:'(' span_id:11) words:[{(1)} {(2)}]) } ) cmd_value: (cmd_value.Assign builtin_id: builtin.DECLARE argv: [declare -rx] arg_spids: [0 2] pairs: [ (assign_arg lval:(lvalue.Named name:foo) rval:(value.Str s:bar) spid:4) (assign_arg lval:(lvalue.Named name:spam) rval:(value.Str s:eggs) spid:7) (assign_arg lval:(lvalue.Named name:a) rval:(value.MaybeStrArray strs:[1 2]) spid:10) ] ) declare $binding (C {(declare)} {($ Id.VSub_DollarName '$binding')}) cmd_value: (cmd_value.Assign builtin_id: builtin.DECLARE argv: [declare] arg_spids: [0] pairs: [(assign_arg lval:(lvalue.Named name:spam) rval:(value.Str s:eggs) spid:2)] ) declare $binding_with_spaces (C {(declare)} {($ Id.VSub_DollarName '$binding_with_spaces')}) cmd_value: (cmd_value.Assign builtin_id: builtin.DECLARE argv: [declare] arg_spids: [0] pairs: [(assign_arg lval:(lvalue.Named name:x) rval:(value.Str s:'green eggs and ham') spid:2)] ) export a=(1 2) (C {(export)} {(Id.Lit_VarLike 'a=') (sh_array_literal left:(Token id:Id.Op_LParen val:'(' span_id:3) words:[{(1)} {(2)}]) } ) cmd_value: (cmd_value.Assign builtin_id: builtin.EXPORT argv: [export] arg_spids: [0] pairs: [(assign_arg lval:(lvalue.Named name:a) rval:(value.MaybeStrArray strs:[1 2]) spid:2)] ) export A=(["k"]=v) (C {(export)} {(Id.Lit_VarLike 'A=') (word_part.AssocArrayLiteral left: (Token id:Id.Op_LParen val:'(' span_id:3) pairs: [{(DQ (k))} {(v)}] ) } ) cmd_value: (cmd_value.Assign builtin_id: builtin.EXPORT argv: [export] arg_spids: [0] .. ---------------------------------------------------------------------- Ran 2 tests in 0.009s OK pairs: [(assign_arg lval:(lvalue.Named name:A) rval:(value.AssocArray d:{'k': 'v'}) spid:2)] ) readonly a+=1 (C {(readonly)} {(Id.Lit_VarLike 'a+=') (1)}) readonly a[x]=1 (C {(readonly)} {(Id.Lit_ArrayLhsOpen 'a[') (x) (Id.Lit_ArrayLhsClose ']=') (1)}) readonly $binding a[x]=1 (C {(readonly)} {($ Id.VSub_DollarName '$binding')} {(Id.Lit_ArrayLhsOpen 'a[') (x) (Id.Lit_ArrayLhsClose ']=') (1)} ) declare $empty (C {(declare)} {($ Id.VSub_DollarName '$empty')})