(command.CommandList children: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>} {<convert>} {<MAM>} {<dependency>} {<info>} {<to>} {<dot>} {<input>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'COMMAND='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'COMMAND='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMMAND='> name:COMMAND) op: assign_op.Equal rhs: {<mamdot>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Subshell left: <Id.Op_LParen _> child: (command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: <getopts> more_env: [] words: [{<getopts>} {(SQ <'[-][123:xyz]'>)} {<opt>} {<--xyz>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<0> ($ Id.VSub_DollarName opt)}] redirects: [] do_fork: T ) ] ) right: <Id.Right_Subshell _> redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0123> pattern: (pat.Words words:[{<0123>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ARGV0='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ARGV0='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARGV0='> name:ARGV0) op: assign_op.Equal rhs: {(DQ <'-a '> ($ Id.VSub_DollarName COMMAND))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'USAGE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'USAGE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'USAGE='> name:USAGE) op: assign_op.Equal rhs: { (SingleQuoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [ <Id.Char_Literals '\n'> <Id.Char_Literals '[-?\n'> <Id.Char_Literals '@(#)$Id: mamdot (AT&T Labs Research) 1997-02-16 $\n'> <Id.Char_Literals ']\n'> ] right: <Id.Right_SingleQuote '\''> ) ($ Id.VSub_DollarName USAGE_LICENSE) (SingleQuoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [ <Id.Char_Literals '\n'> <Id.Char_Literals '[+NAME?mamdot - make abstract machine to dot dependency graph conversion filter]\n' > <Id.Char_Literals '[+DESCRIPTION?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals mamdot> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' reads MAM (Make Abstract Machine) target and\n'> <Id.Char_Literals '\tprerequisite file descriptions from the standard input and writes a\n' > <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals dot> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) description of the dependency graph on the standard output.\n' > <Id.Char_Literals '\tMamfiles are generated by the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals --mam> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' option of '> <Id.Char_OneChar '\\b'> <Id.Char_Literals nmake> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) and\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals gmake> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1).]\n'> <Id.Char_Literals '[i:ignore?Dependency names matching the shell '> <Id.Char_OneChar '\\a'> <Id.Char_Literals pattern> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' are\n'> <Id.Char_Literals '\tignored.]:[pattern]\n'> <Id.Char_Literals '[+SEE ALSO?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals dot> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals gmake> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals nmake> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1)]\n'> ] right: <Id.Right_SingleQuote '\''> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ARGV0='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ARGV0='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARGV0='> name:ARGV0) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'USAGE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'USAGE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'USAGE='> name:USAGE) op: assign_op.Equal rhs: {(DQ <'i:[pattern]'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShFunction name_tok: <usage> name: usage body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'OPTIND='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'OPTIND='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTIND='> name:OPTIND) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.Simple blame_tok: <getopts> more_env: [] words: [ {<getopts>} {($ Id.VSub_DollarName ARGV0)} {(DQ ($ Id.VSub_DollarName USAGE))} {<OPT>} {(SQ <'-?'>)} ] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<2>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <integer> more_env: [] words: [{<integer>} {<Id.Lit_VarLike 'level='> <0>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-A>} {<pwd>} {<top>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<Id.Lit_VarLike 'ignore='>} {<Id.Lit_VarLike 'tree='> (DQ <'@(make|done|prev)'>)} ] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <getopts> more_env: [] words: [ {<getopts>} {($ Id.VSub_DollarName ARGV0)} {(DQ ($ Id.VSub_DollarName USAGE))} {<OPT>} ] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName OPT)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <i> pattern: (pat.Words words:[{<i>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName ignore)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ignore='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ignore='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ignore='> name:ignore) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName ignore) <'|'>)} ) ] redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'ignore='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ignore='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ignore='> name:ignore) op: assign_op.Equal rhs: {($ Id.VSub_DollarName ignore) ($ Id.VSub_DollarName OPTARG)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName ignore)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ignore='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ignore='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ignore='> name:ignore) op: assign_op.Equal rhs: {(DQ <'@('> ($ Id.VSub_DollarName ignore) <')'>)} ) ] redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen 'list['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen 'list['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'list['> name: list index: {<Id.Lit_Digits 0>} ) op: assign_op.Equal rhs: {<all>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen 'top['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen 'top['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'top['> name: top index: {<Id.Lit_Digits 0>} ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.Simple blame_tok: <print> more_env: [] words: [{<print>} {(DQ <'digraph mam {'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <print> more_env: [] words: [{<print>} {(DQ <'rankdir = LR'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <print> more_env: [] words: [{<print>} {(DQ <'node [ shape = box ]'>)}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<-r>} {<label>} {<op>} {<arg>} {<arg2>} {<arg3>} {<args>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName label)} right: {<Id.Lit_Other '['> <Id.Lit_Other '['> <Id.Lit_Colon ':'> <digit> <Id.Lit_Colon ':'> <Id.Lit_DRightBracket ']]'> <Id.Lit_Other '*'> } ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'arg3='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'arg3='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'arg3='> name:arg3) op: assign_op.Equal rhs: {($ Id.VSub_DollarName args)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'arg2='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'arg2='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'arg2='> name:arg2) op: assign_op.Equal rhs: {($ Id.VSub_DollarName arg)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'arg='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'arg='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'arg='> name:arg) op: assign_op.Equal rhs: {($ Id.VSub_DollarName op)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'op='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'op='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'op='> name:op) op: assign_op.Equal rhs: {($ Id.VSub_DollarName label)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'label='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'label='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'label='> name:label) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'rule='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rule='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rule='> name:rule) op: assign_op.Equal rhs: {($ Id.VSub_DollarName arg)} ) ] redirects: [] ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalOr left: (bool_expr.WordTest w: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name top> var_name: top bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName label)}) right: <Id.Right_DollarBrace '}'> ) } ) right: (bool_expr.LogicalOr left: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName arg)} right: {<Id.Lit_Other '*'> <'/'> <Id.Lit_Other '*'>} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName op)} right: {($ Id.VSub_DollarName tree)} ) ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'arg='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'arg='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'arg='> name:arg) op: assign_op.Equal rhs: {($ Id.VSub_DollarName label) <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName arg) } ) ] redirects: [] ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName op)} right: {<make>} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} { (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ($ Id.VSub_DollarName arg) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' [ label = '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ($ Id.VSub_DollarName rule) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' ]'> ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName op)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <make> pattern: (pat.Words words:[{<make>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName rule)} right: {($ Id.VSub_DollarName ignore)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen 'list['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen 'list['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'list['> name: list index: ($ Id.Lit_ArithVarLike level) ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name list> var_name: list bracket_op: (bracket_op.ArrayIndex expr: ($ Id.Lit_ArithVarLike level) ) right: <Id.Right_DollarBrace '}'> ) (SingleQuoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [<Id.Char_OneChar '\\n'>] right: <Id.Right_SingleQuote '\''> ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ($ Id.VSub_DollarName arg) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) } ) ] redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'level='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'level='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'level='> name:level) op: assign_op.Equal rhs: {<level> <Id.Lit_Other '+'> <1>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen 'list['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen 'list['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'list['> name: list index: ($ Id.Lit_ArithVarLike level) ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <prev> pattern: (pat.Words words:[{<prev>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName rule)} right: {($ Id.VSub_DollarName ignore)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen 'list['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen 'list['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'list['> name: list index: ($ Id.Lit_ArithVarLike level) ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name list> var_name: list bracket_op: (bracket_op.ArrayIndex expr: ($ Id.Lit_ArithVarLike level) ) right: <Id.Right_DollarBrace '}'> ) (SingleQuoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [<Id.Char_OneChar '\\n'>] right: <Id.Right_SingleQuote '\''> ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ($ Id.VSub_DollarName arg) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) } ) ] redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.KW_Done done> pattern: (pat.Words words:[{<Id.KW_Done done>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalOr left: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName rule)} right: {($ Id.VSub_DollarName ignore)} ) right: (bool_expr.LogicalNot child: (bool_expr.WordTest w: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name list> var_name: list bracket_op: (bracket_op.ArrayIndex expr: ($ Id.Lit_ArithVarLike level) ) right: <Id.Right_DollarBrace '}'> ) } ) ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} { (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ($ Id.VSub_DollarName arg) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' -> {'> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name list> var_name: list bracket_op: (bracket_op.ArrayIndex expr: ($ Id.Lit_ArithVarLike level) ) right: <Id.Right_DollarBrace '}'> ) <' }'> ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'level='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'level='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'level='> name:level) op: assign_op.Equal rhs: {<level-1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <info> pattern: (pat.Words words:[{<info>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName arg)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <pwd> pattern: (pat.Words words:[{<pwd>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName arg3)} right: {(DQ <.>)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen 'top['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen 'top['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'top['> name: top index: {($ Id.VSub_DollarName label)} ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <print> more_env: [] words: [{<print>} {(DQ <'}'>)}] redirects: [] do_fork: T ) ] )