(command.CommandList children: [ (command.ShFunction name: usage body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<echo>} {(DQ ($ Id.VSub_Number 0) <' [OPTION] FILE...'>)}) (C {<echo>}) (C {<echo>} {(DQ <'Options:'>)}) (C {<echo>} {(DQ <' -e|--eval STR Evaluate STR'>)}) (C {<echo>} {(DQ <' -l|--load FILE Load and evaluate FILE'>)}) (C {<echo>} {(DQ <' -r|--repl Start a REPL'>)}) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<2>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(DQ ($ Id.VSub_DollarName BASH_VERSION))} ) redirects: [] ) (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Less left: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name BASH_VERSINFO> var_name: BASH_VERSINFO bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>}) right: <Id.Right_DollarBrace '}'> ) } right: {<Id.Lit_Digits 4>} ) redirects: [] ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [{<echo>} {(DQ <'bash >= 4.0 required'>)}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] more_env: [] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [60 89] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DEFAULT_IFS='> name:DEFAULT_IFS) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName IFS))} spids: [109] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ )} spids: [119] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'e='> name:e) op: assign_op.Equal rhs: {(DQ )} spids: [123] ) ] redirects: [] ) (command.ShFunction name: error body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Unary op_id:Id.BoolUnary_z child:{(DQ ($ Id.VSub_DollarName e))}) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'e='> name:e) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} spids: [147] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'e='> name:e) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_Number 1) <Id.Lit_BadBackslash '\\'> <n> ($ Id.VSub_DollarName e) ) } spids: [154] ) ] redirects: [] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {($ Id.VSub_DollarName NIL)} spids: [163] ) ] redirects: [] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pb_max='> name:pb_max) op: assign_op.Equal rhs: {<100>} spids: [178] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pb_newline='> name:pb_newline) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<printf>} {(SQ <'\\034'>)}) right: <Id.Eof_RParen _> ) ) } spids: [181] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pb_star='> name:pb_star) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<printf>} {(SQ <'\\035'>)}) right: <Id.Eof_RParen _> ) ) } spids: [192] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pb_get='> name:pb_get) op: assign_op.Equal rhs: {(DQ <'^'> <Id.Lit_Dollar '$'>)} spids: [203] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pb_unget='> name:pb_unget) op: assign_op.Equal rhs: {(DQ <'^'> <Id.Lit_Dollar '$'>)} spids: [209] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'history_flag='> name:history_flag) op: assign_op.Equal rhs: {<1>} spids: [215] ) ] redirects: [] ) (command.ShFunction name: readline body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'IFS='> (single_quoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [<Id.Char_OneChar '\\n'> <Id.Char_OneChar '\\b'>] right: <Id.Right_SingleQuote '\''> ) } {<Id.Lit_VarLike 'prompt='> (DQ <'> '>)} {<line>} ) (C {<set>} {<-f>}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<read>} {<-e>} {<-r>} {<-p>} {(DQ ($ Id.VSub_DollarName prompt))} {<line>}) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pb_get='> name:pb_get) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name pb_get> var_name: pb_get suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name pb_get> var_name: pb_get prefix_op: <Id.VSub_Pound '#'> right: <Id.Right_DollarBrace '}'> ) } right: {<Id.Lit_Digits 1>} ) ) } ) right: <Id.Arith_RBrace _> ) (${ Id.VSub_Name line) (${ Id.VSub_Name pb_newline) <Id.Lit_Dollar '$'> ) } spids: [268] ) ] redirects: [] ) (C {<set>} {<Id.Lit_Other '+'> <f>}) (C {<unset>} {<IFS>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(DQ ($ Id.VSub_DollarName line))} right: {<Id.Lit_Other '^'> <Id.Lit_Other '['> <Id.Lit_Other '['> <Id.Lit_Other ':'> <space> <Id.Lit_Other ':'> <Id.Lit_Other ']'> <Id.Lit_Other ']'> <Id.Lit_Other '*'> <-> } ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} {(DQ <'warning: lines starting with - aren\'t stored in history'>)} ] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] more_env: [] do_fork: T ) ] spids: [306 330] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {(DQ ($ Id.VSub_DollarName history_flag))} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<history>} {<-s>} {(DQ ($ Id.VSub_DollarName line))})] spids: [343 356] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: getc body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<ch>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name pb_get> var_name: pb_get prefix_op: <Id.VSub_Pound '#'> right: <Id.Right_DollarBrace '}'> ) } right: {<Id.Lit_Digits 2>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<readline>}) (C {<getc>})] spids: [385 400] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ch='> name:ch) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name pb_get> var_name: pb_get suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 1>} length: {<Id.Lit_Digits 1>} ) right: <Id.Arith_RBrace _> ) ) } spids: [412] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pb_get='> name:pb_get) op: assign_op.Equal rhs: { (DQ <'^'> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name pb_get> var_name: pb_get suffix_op: (suffix_op.Slice begin:{<Id.Lit_Digits 2>}) right: <Id.Arith_RBrace _> ) ) } spids: [424] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Great left: ($ Id.Lit_ArithVarLike pb_max) right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pb_unget='> name:pb_unget) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name pb_unget> var_name: pb_unget suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name pb_unget> var_name: pb_unget prefix_op: <Id.VSub_Pound '#'> right: <Id.Right_DollarBrace '}'> ) } right: {<Id.Lit_Digits 1>} ) ) } ) right: <Id.Arith_RBrace _> ) ) } spids: [450] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pb_unget='> name:pb_unget) op: assign_op.Equal rhs: { (DQ <'^'> (${ Id.VSub_Name ch) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name pb_unget> var_name: pb_unget suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 1>} length: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: ($ Id.Lit_ArithVarLike pb_max) right: {<Id.Lit_Digits 1>} ) ) } ) right: <Id.Arith_RBrace _> ) <Id.Lit_Dollar '$'> ) } spids: [470] ) ] redirects: [] ) ] spids: [435 447] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pb_unget='> name:pb_unget) op: assign_op.Equal rhs: { (DQ <'^'> (${ Id.VSub_Name ch) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name pb_unget> var_name: pb_unget suffix_op: (suffix_op.Slice begin:{<Id.Lit_Digits 1>}) right: <Id.Arith_RBrace _> ) ) } spids: [495] ) ] redirects: [] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName ch))} spids: [512] ) ] redirects: [] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: ungetc body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName pb_unget))} right: {(DQ <'^'> <Id.Lit_Dollar '$'>)} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [ {<echo>} { (DQ <'ungetc: nothing more to unget, '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'pb_max='> ($ Id.VSub_DollarName pb_max) ) } ] redirects: [ (redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] more_env: [] do_fork: T ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) ] spids: [530 548] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pb_get='> name:pb_get) op: assign_op.Equal rhs: { (DQ <'^'> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name pb_unget> var_name: pb_unget suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 1>} length: {<Id.Lit_Digits 1>} ) right: <Id.Arith_RBrace _> ) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name pb_get> var_name: pb_get suffix_op: (suffix_op.Slice begin:{<Id.Lit_Digits 1>}) right: <Id.Arith_RBrace _> ) ) } spids: [573] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pb_unget='> name:pb_unget) op: assign_op.Equal rhs: { (DQ <'^'> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name pb_unget> var_name: pb_unget suffix_op: (suffix_op.Slice begin:{<Id.Lit_Digits 2>}) right: <Id.Arith_RBrace _> ) ) } spids: [591] ) ] redirects: [] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: has_shebangP body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<head>} {<-1>} {($ Id.VSub_Number 1)}) right: <Id.Eof_RParen _> ) ) } right: {<Id.Lit_Other '^'> <Id.Lit_Other '#'> <Id.Lit_Other '!'>} ) right: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<head>} {<-1>} {($ Id.VSub_Number 1)}) right: <Id.Eof_RParen _> ) ) } right: {<gherkin>} ) ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: strmap_file body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'f='> (DQ ($ Id.VSub_Number 1))} {<contents>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<has_shebangP>} {(DQ ($ Id.VSub_DollarName f))}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'contents='> name:contents) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<tail>} {<-n> <Id.Lit_Other '+'> <2>} {(DQ ($ Id.VSub_DollarName f))} ) (C {<sed>} {<-e>} {(SQ <'s/^[[:space:]]*//'>)}) (C {<tr>} {<-s>} {(SQ <'\\n'>)} {($ Id.VSub_DollarName pb_newline)} ) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) ) } spids: [682] ) ] redirects: [] ) ] spids: [670 679] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'contents='> name:contents) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {(DQ ($ Id.VSub_DollarName f))}) (C {<sed>} {<-e>} {(SQ <'s/^[[:space:]]*//'>)}) (C {<tr>} {<-s>} {(SQ <'\\n'>)} {($ Id.VSub_DollarName pb_newline)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) ) } spids: [723] ) ] redirects: [] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mapped_file='> name:mapped_file) op: assign_op.Equal rhs: {(DQ <'(do '> ($ Id.VSub_DollarName contents) <' nil)'>)} spids: [760] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'mapped_file_ptr='> name: mapped_file_ptr ) op: assign_op.Equal rhs: {<0>} spids: [768] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: strmap_getc body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name mapped_file> var_name: mapped_file suffix_op: (suffix_op.Slice begin: { (word_part.ArithSub anode: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike mapped_file_ptr) ) ) } length: {<Id.Lit_Digits 1>} ) right: <Id.Arith_RBrace _> ) ) } spids: [781] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: strmap_ungetc body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [(C {<let>} {<--mapped_file_ptr>})] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_getc='> name:_getc) op: assign_op.Equal rhs: {<getc>} spids: [813] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_ungetc='> name:_ungetc) op: assign_op.Equal rhs: {<ungetc>} spids: [816] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cons_ptr='> name:cons_ptr) op: assign_op.Equal rhs: {<0>} spids: [824] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'symbol_ptr='> name:symbol_ptr) op: assign_op.Equal rhs: {<0>} spids: [827] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'protected_ptr='> name:protected_ptr) op: assign_op.Equal rhs: {<0>} spids: [831] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'gensym_counter='> name:gensym_counter) op: assign_op.Equal rhs: {<0>} spids: [834] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'array_cntr='> name:array_cntr) op: assign_op.Equal rhs: {<0>} spids: [837] ) ] redirects: [] ) (C {<declare>} {<-A>} {<interned_strings>}) (C {<declare>} {<-A>} {<car>}) (C {<declare>} {<-A>} {<cdr>}) (C {<declare>} {<-A>} {<environments>}) (C {<declare>} {<-A>} {<recur_frames>}) (C {<declare>} {<-A>} {<recur_fns>}) (C {<declare>} {<-A>} {<marks>}) (C {<declare>} {<-A>} {<global_bindings>}) (C {<declare>} {<-a>} {<symbols>}) (C {<declare>} {<-a>} {<protected>}) (C {<declare>} {<-a>} {<mark_acc>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'heap_increment='> name:heap_increment) op: assign_op.Equal rhs: {<1500>} spids: [909] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cons_limit='> name:cons_limit) op: assign_op.Equal rhs: {($ Id.VSub_DollarName heap_increment)} spids: [912] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'symbol_limit='> name:symbol_limit) op: assign_op.Equal rhs: {($ Id.VSub_DollarName heap_increment)} spids: [915] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tag_marker='> name:tag_marker) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<printf>} {(SQ <'\\036'>)}) right: <Id.Eof_RParen _> ) ) } spids: [919] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'atag='> name:atag) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name tag_marker) <003>)} spids: [931] ) ] redirects: [] ) (C {<declare>} {<-A>} {<Id.Lit_VarLike 'type_tags='> (word_part.AssocArrayLiteral left: <Id.Op_LParen _> pairs: [ (assoc_pair key:{<000>} value:{<integer>}) (assoc_pair key:{<001>} value:{<symbol>}) (assoc_pair key:{<002>} value:{<cons>}) (assoc_pair key:{<003>} value:{<vector>}) (assoc_pair key:{<004>} value:{<keyword>}) ] ) } ) (command.ShFunction name: type body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: {<Id.Lit_Digits 1>} ) right: <Id.Arith_RBrace _> ) ) } right: {(DQ ($ Id.VSub_DollarName tag_marker))} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name type_tags> var_name: type_tags bracket_op: (bracket_op.ArrayIndex expr: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 1>} length: {<Id.Lit_Digits 3>} ) right: <Id.Arith_RBrace _> ) } ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [1010] ) ] redirects: [] ) ] spids: [984 1007] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {<string>} spids: [1030] ) ] redirects: [] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: strip_tag body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 suffix_op: (suffix_op.Slice begin:{<Id.Lit_Digits 4>}) right: <Id.Arith_RBrace _> ) ) } spids: [1045] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: typeP body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'obj='> (DQ ($ Id.VSub_Number 1))} {<Id.Lit_VarLike 'tag='> (DQ ($ Id.VSub_Number 2))} ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<type>} {(DQ ($ Id.VSub_DollarName obj))}) (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName r)} right: {(DQ ($ Id.VSub_DollarName tag))} ) redirects: [] ) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: make_integer body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name tag_marker) <000> (${ Id.VSub_Number 1))} spids: [1107] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: make_keyword body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name tag_marker) <004> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 suffix_op: (suffix_op.Slice begin:{<Id.Lit_Digits 1>}) right: <Id.Arith_RBrace _> ) ) } spids: [1128] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: intern_symbol body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name interned_strings> var_name: interned_strings bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_Number 1)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name interned_strings> var_name: interned_strings bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_Number 1)}) right: <Id.Right_DollarBrace '}'> ) ) } spids: [1173] ) ] redirects: [] ) ] spids: [1152 1170] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'symbol_ptr='> name:symbol_ptr) op: assign_op.Equal rhs: { (DQ (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: ($ Id.Lit_ArithVarLike symbol_ptr) right: {<Id.Lit_Digits 1>} ) ) ) } spids: [1187] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'interned_strings['> name: interned_strings index: {(DQ ($ Id.VSub_Number 1))} ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name tag_marker) <001> (${ Id.VSub_Name symbol_ptr))} spids: [1200] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'symbols['> name: symbols index: {(DQ ($ Id.VSub_DollarName symbol_ptr))} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} spids: [1220] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name tag_marker) <001> (${ Id.VSub_Name symbol_ptr))} spids: [1234] ) ] redirects: [] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: defprim body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<intern_symbol>} {(DQ ($ Id.VSub_Number 1))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sym_ptr='> name:sym_ptr) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [1266] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<intern_symbol>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<printf>} {(SQ <'#<primitive:%s>'>)} {(DQ ($ Id.VSub_Number 1))}) right: <Id.Eof_RParen _> ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'prim_ptr='> name:prim_ptr) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [1290] ) ] redirects: [] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'global_bindings['> name: global_bindings index: {(DQ ($ Id.VSub_DollarName sym_ptr))} ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName prim_ptr)} spids: [1296] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName prim_ptr))} spids: [1308] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: cons body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'the_car='> (DQ ($ Id.VSub_Number 1))} {<Id.Lit_VarLike 'the_cdr='> (DQ ($ Id.VSub_Number 2))} ) (C {<mark>} {(DQ ($ Id.VSub_DollarName the_car))}) (C {<mark>} {(DQ ($ Id.VSub_DollarName the_cdr))}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name marks> var_name: marks bracket_op: (bracket_op.ArrayIndex expr: {(${ Id.VSub_Name tag_marker) <Id.Lit_Digits 002> (${ Id.VSub_Name cons_ptr) } ) right: <Id.Right_DollarBrace '}'> ) ) } ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<unset>} {<Id.Lit_ArrayLhsOpen 'marks['> (DQ (${ Id.VSub_Name tag_marker) <002> (word_part.ArithSub anode: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike cons_ptr) ) ) ) <Id.Lit_RBracket ']'> } ) ] ) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName cons_ptr)} right: {($ Id.VSub_DollarName cons_limit)} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<gc>})] spids: [1397 1410] ) ] else_action: [] redirects: [] ) (C {<unset>} {<Id.Lit_ArrayLhsOpen 'environments['> (DQ (${ Id.VSub_Name tag_marker) <002> (${ Id.VSub_Name cons_ptr)) <Id.Lit_RBracket ']'> } ) (C {<unset>} {<Id.Lit_ArrayLhsOpen 'recur_frames['> (DQ (${ Id.VSub_Name tag_marker) <002> (${ Id.VSub_Name cons_ptr)) <Id.Lit_RBracket ']'> } ) (C {<unset>} {<Id.Lit_ArrayLhsOpen 'recur_fns['> (DQ (${ Id.VSub_Name tag_marker) <002> (${ Id.VSub_Name cons_ptr)) <Id.Lit_RBracket ']'> } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'car['> name: car index: {(DQ (${ Id.VSub_Name tag_marker) <002> (${ Id.VSub_Name cons_ptr))} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName the_car))} spids: [1464] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'cdr['> name: cdr index: {(DQ (${ Id.VSub_Name tag_marker) <002> (${ Id.VSub_Name cons_ptr))} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName the_cdr))} spids: [1490] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name tag_marker) <002> (${ Id.VSub_Name cons_ptr))} spids: [1516] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cons_ptr='> name:cons_ptr) op: assign_op.Equal rhs: { (DQ (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: ($ Id.Lit_ArithVarLike cons_ptr) right: {<Id.Lit_Digits 1>} ) ) ) } spids: [1528] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: gensym body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'gensym_counter='> name:gensym_counter) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: ($ Id.Lit_ArithVarLike gensym_counter) right: {<Id.Lit_Digits 1>} ) ) } spids: [1550] ) ] redirects: [] ) (C {<intern_symbol>} {(DQ <G__> (${ Id.VSub_Name gensym_counter))}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: new_array body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: { (DQ <arr> (word_part.ArithSub anode: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike array_cntr) ) ) ) } spids: [1580] ) ] redirects: [] ) (C {<declare>} {<-a>} {($ Id.VSub_DollarName r)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name atag) (${ Id.VSub_Name r))} spids: [1598] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: vset body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<strip_tag>} {(DQ ($ Id.VSub_Number 1))}) (C {<eval>} { (DQ (${ Id.VSub_Name r) <'['> (${ Id.VSub_Number 2) <']='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) (${ Id.VSub_Number 3) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} spids: [1644] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: vget body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<strip_tag>} {(DQ ($ Id.VSub_Number 1))}) (C {<eval>} { (DQ <'r='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'{'> (${ Id.VSub_Name r) <'['> (${ Id.VSub_Number 2) <']}'> ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: count_array body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<strip_tag>} {(DQ ($ Id.VSub_Number 1))}) (C {<eval>} { (DQ <'r='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'{#'> (${ Id.VSub_Name r) <'[@]}'> ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: append body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<i>}) (C {<strip_tag>} {(DQ ($ Id.VSub_Number 1))}) (C {<eval>} { (DQ <'i='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'{#'> (${ Id.VSub_Name r) <'[@]}'> ) } ) (C {<eval>} { (DQ (${ Id.VSub_Name r) <'['> (${ Id.VSub_Name i) <']='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) (${ Id.VSub_Number 2) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} spids: [1765] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: append_all body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<strip_tag>} {(DQ ($ Id.VSub_Number 1))}) (C {<local>} {<Id.Lit_VarLike 'a1='> (DQ ($ Id.VSub_DollarName r))}) (C {<strip_tag>} {(DQ ($ Id.VSub_Number 2))}) (C {<local>} {<Id.Lit_VarLike 'a2='> (DQ ($ Id.VSub_DollarName r))}) (C {<local>} {<len1>} {<len2>}) (C {<eval>} { (DQ <'len1='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'{#'> (${ Id.VSub_Name a1) <'[@]}'> ) } ) (C {<eval>} { (DQ <'len2='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'{#'> (${ Id.VSub_Name a2) <'[@]}'> ) } ) (C {<local>} {<Id.Lit_VarLike 'i='> <0>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: ($ Id.Lit_ArithVarLike len2) ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<eval>} { (DQ (${ Id.VSub_Name a1) <'[(('> (${ Id.VSub_Name i) <' + '> (${ Id.VSub_Name len1) <'))]='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'{'> (${ Id.VSub_Name a2) <'['> (${ Id.VSub_Name i) <']}'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ) } ) (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike i) ) redirects: [] ) ] ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} spids: [1904] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: prepend body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<i>} {<len>}) (C {<strip_tag>} {(DQ ($ Id.VSub_Number 2))}) (C {<eval>} { (DQ <'len='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'{#'> (${ Id.VSub_Name r) <'[@]}'> ) } ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Great left: ($ Id.Lit_ArithVarLike len) right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<eval>} { (DQ (${ Id.VSub_Name r) <'['> (${ Id.VSub_Name len) <']='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'{'> (${ Id.VSub_Name r) <'[((len - 1))]}'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ) } ) (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDMinus child: ($ Id.Lit_ArithVarLike len) ) redirects: [] ) ] ) redirects: [] ) (C {<eval>} { (DQ (${ Id.VSub_Name r) <'[0]='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ($ Id.VSub_Number 1) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 2))} spids: [2006] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: dup body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<new_array>}) (C {<local>} {<Id.Lit_VarLike 'aptr='> (DQ ($ Id.VSub_DollarName r))}) (C {<strip_tag>} {(DQ ($ Id.VSub_DollarName aptr))}) (C {<local>} {<Id.Lit_VarLike 'narr='> (DQ ($ Id.VSub_DollarName r))}) (C {<strip_tag>} {(DQ ($ Id.VSub_Number 1))}) (C {<local>} {<len>}) (C {<eval>} { (DQ <'len='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'{#'> (${ Id.VSub_Name r) <'[@]}'> ) } ) (C {<local>} {<Id.Lit_VarLike 'i='> <0>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: ($ Id.Lit_ArithVarLike len) ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<eval>} { (DQ (${ Id.VSub_Name narr) <'['> (${ Id.VSub_Name i) <']='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'{'> (${ Id.VSub_Name r) <'['> (${ Id.VSub_Name i) <']}'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ) } ) (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike i) ) redirects: [] ) ] ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName aptr))} spids: [2129] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: concat body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<dup>} {(DQ ($ Id.VSub_Number 1))}) (C {<append_all>} {(DQ ($ Id.VSub_DollarName r))} {(DQ ($ Id.VSub_Number 2))}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: vector body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'v='> (DQ ($ Id.VSub_Number 2))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalOr left: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName EMPTY))} right: {(DQ ($ Id.VSub_DollarName v))} ) right: (bool_expr.LogicalOr left: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(DQ ($ Id.VSub_DollarName v))} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName NIL))} right: {(DQ ($ Id.VSub_DollarName v))} ) ) ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<new_array>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'v='> name:v) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [2223] ) ] redirects: [] ) ] spids: [2179 2216] ) ] else_action: [] redirects: [] ) (C {<prepend>} {($ Id.VSub_Number 1)} {($ Id.VSub_DollarName v)}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: protect body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'protected_ptr='> name:protected_ptr) op: assign_op.Equal rhs: { (DQ (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: ($ Id.Lit_ArithVarLike protected_ptr) right: {<Id.Lit_Digits 1>} ) ) ) } spids: [2248] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'protected['> name: protected index: {(DQ ($ Id.VSub_DollarName protected_ptr))} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} spids: [2261] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: unprotect body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'protected_ptr='> name: protected_ptr ) op: assign_op.Equal rhs: { (DQ (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: ($ Id.Lit_ArithVarLike protected_ptr) right: {<Id.Lit_Digits 1>} ) ) ) } spids: [2283] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'acc_count='> name:acc_count) op: assign_op.Equal rhs: {<0>} spids: [2299] ) ] redirects: [] ) (command.ShFunction name: mark_seq body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'object='> (DQ ($ Id.VSub_Number 1))}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<typeP>} {(DQ ($ Id.VSub_DollarName object))} {<cons>}) (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name marks> var_name: marks bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName object)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) redirects: [] ) ] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'marks['> name: marks index: {(DQ ($ Id.VSub_DollarName object))} ) op: assign_op.Equal rhs: {<1>} spids: [2349] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'mark_acc['> name: mark_acc index: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike acc_count) ) ) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName object)} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [2361] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'object='> name:object) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cdr> var_name: cdr bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName object)} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [2379] ) ] redirects: [] ) ] ) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<typeP>} {(DQ ($ Id.VSub_DollarName object))} {<vector>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<count_array>} {(DQ ($ Id.VSub_DollarName object))}) (C {<local>} {<i>} {<Id.Lit_VarLike 'sz='> (DQ ($ Id.VSub_DollarName r))}) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: ($ Id.Lit_ArithVarLike sz) ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike i) ) body: (command.DoGroup children: [ (C {<vget>} {(DQ ($ Id.VSub_DollarName object))} {($ Id.VSub_DollarName i)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'mark_acc['> name: mark_acc index: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike acc_count) ) ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [2456] ) ] redirects: [] ) ] ) redirects: [] ) ] spids: [2393 2405] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: mark body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'acc_count='> name:acc_count) op: assign_op.Equal rhs: {<0>} spids: [2484] ) ] redirects: [] ) (C {<mark_seq>} {(DQ ($ Id.VSub_Number 1))}) (C {<local>} {<i>}) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name mark_acc> var_name: mark_acc prefix_op: <Id.VSub_Pound '#'> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) } ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:($ Id.Lit_ArithVarLike i)) body: (command.DoGroup children: [ (C {<mark_seq>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name mark_acc> var_name: mark_acc bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName i)}) right: <Id.Right_DollarBrace '}'> ) ) } ) ] ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mark_acc='> name:mark_acc) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[])} spids: [2543] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: gc body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple words: [{<echo>} {(DQ <GC...>)}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] more_env: [] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName DEFAULT_IFS))} spids: [2567] ) ] redirects: [] ) (C {<mark>} {(DQ ($ Id.VSub_DollarName current_env))}) (command.ForEach iter_names: [k] iterable: (for_iter.Words words: [ { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name environments> var_name: environments prefix_op: <Id.VSub_Bang '!'> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } ] ) body: (command.DoGroup children: [ (command.Sentence child: (C {<mark>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name environments> var_name: environments bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName k)}) right: <Id.Right_DollarBrace '}'> ) ) } ) terminator: <Id.Op_Semi _> ) ] ) redirects: [] ) (command.ForEach iter_names: [k] iterable: (for_iter.Words words: [ { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name protected> var_name: protected prefix_op: <Id.VSub_Bang '!'> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } ] ) body: (command.DoGroup children: [ (command.Sentence child: (C {<mark>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name protected> var_name: protected bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName k)}) right: <Id.Right_DollarBrace '}'> ) ) } ) terminator: <Id.Op_Semi _> ) ] ) redirects: [] ) (command.ForEach iter_names: [k] iterable: (for_iter.Words words: [ { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name stack> var_name: stack prefix_op: <Id.VSub_Bang '!'> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } ] ) body: (command.DoGroup children: [ (command.Sentence child: (C {<mark>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name stack> var_name: stack bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName k)}) right: <Id.Right_DollarBrace '}'> ) ) } ) terminator: <Id.Op_Semi _> ) ] ) redirects: [] ) (command.ForEach iter_names: [k] iterable: (for_iter.Words words: [ { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name global_bindings> var_name: global_bindings prefix_op: <Id.VSub_Bang '!'> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } ] ) body: (command.DoGroup children: [ (command.Sentence child: (C {<mark>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name global_bindings> var_name: global_bindings bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName k)}) right: <Id.Right_DollarBrace '}'> ) ) } ) terminator: <Id.Op_Semi _> ) ] ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cons_ptr='> name:cons_ptr) op: assign_op.Equal rhs: {<0>} spids: [2716] ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name marks> var_name: marks bracket_op: (bracket_op.ArrayIndex expr: {(${ Id.VSub_Name tag_marker) <Id.Lit_Digits 002> (${ Id.VSub_Name cons_ptr) } ) right: <Id.Right_DollarBrace '}'> ) ) } ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<unset>} {<Id.Lit_ArrayLhsOpen 'marks['> (DQ (${ Id.VSub_Name tag_marker) <002> (word_part.ArithSub anode: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike cons_ptr) ) ) ) <Id.Lit_RBracket ']'> } ) ] ) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName cons_ptr)} right: {($ Id.VSub_DollarName cons_limit)} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [{<echo>} {(DQ <'expanding heap...'>)}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] more_env: [] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cons_limit='> name:cons_limit) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: ($ Id.Lit_ArithVarLike cons_limit) right: ($ Id.Lit_ArithVarLike heap_increment) ) ) } spids: [2793] ) ] redirects: [] ) ] spids: [2767 2780] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: interpret_token body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(DQ ($ Id.VSub_Number 1))} right: {<Id.Lit_Other '^'> <-> <Id.Lit_Other '?'> <Id.Lit_Other '['> <Id.Lit_Other '['> <Id.Lit_Other ':'> <digit> <Id.Lit_Other ':'> <Id.Lit_Other ']'> <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other '$'> } ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {<integer>} spids: [2847] ) ] redirects: [] ) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(DQ ($ Id.VSub_Number 1))} right: {<Id.Lit_Other '^'> <Id.Lit_Other ':'> <Id.Lit_Other '('> <Id.Lit_Other '['> <Id.Lit_Other '['> <Id.Lit_Other ':'> <graph> <Id.Lit_Other ':'> <Id.Lit_Other ']'> <Id.Lit_Other ']'> <Id.Lit_Other '|'> ($ Id.VSub_DollarName pb_star) <Id.Lit_Other ')'> <Id.Lit_Other '+'> <Id.Lit_Other '$'> } ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {<keyword>} spids: [2885] ) ] redirects: [] ) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(DQ ($ Id.VSub_Number 1))} right: {<Id.Lit_Other '^'> <Id.Lit_Other '('> <Id.Lit_Other '['> <Id.Lit_Other '['> <Id.Lit_Other ':'> <graph> <Id.Lit_Other ':'> <Id.Lit_Other ']'> <Id.Lit_Other ']'> <Id.Lit_Other '|'> ($ Id.VSub_DollarName pb_star) <Id.Lit_Other ')'> <Id.Lit_Other '+'> <Id.Lit_Other '$'> } ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {<symbol>} spids: [2922] ) ] redirects: [] ) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: read_token body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'token='> (DQ )}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {($ Id.VSub_DollarName _getc)}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(DQ ($ Id.VSub_DollarName r))} right: {<Id.Lit_Other '('> (SQ <'('>) <Id.Lit_Other '|'> (SQ <')'>) <Id.Lit_Other '|'> (SQ <'['>) <Id.Lit_Other '|'> (SQ <']'>) <Id.Lit_Other '|'> <Id.Lit_Other '['> <Id.Lit_Other '['> <Id.Lit_Other ':'> <space> <Id.Lit_Other ':'> <Id.Lit_Other ']'> <Id.Lit_Other ']'> <Id.Lit_Other '|'> ($ Id.VSub_DollarName pb_newline) <Id.Lit_Other '|'> <Id.Lit_Other ','> <Id.Lit_Other ')'> } ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {($ Id.VSub_DollarName _ungetc)}) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] ) ] spids: [2959 3002] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'token='> name:token) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name token) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name r> var_name: r suffix_op: (suffix_op.PatSub pat: { (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\*'> ch: '*' ) } replace: {(${ Id.VSub_Name pb_star)} replace_mode: Id.Undefined_Tok slash_tok: <Id.VOp2_Slash _> ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [3015] ) ] redirects: [] ) ] redirects: [] ) ] ) redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName token))} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<interpret_token>} {(DQ ($ Id.VSub_DollarName token))}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName r))} arms: [ (case_arm pat_list: [{<symbol>}] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<intern_symbol>} {(DQ ($ Id.VSub_DollarName token))}) (command.ControlFlow token: <Id.ControlFlow_Return return> ) ] ) ] spids: [3076 3077 3089 -1] ) (case_arm pat_list: [{<integer>}] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<make_integer>} {(DQ ($ Id.VSub_DollarName token))}) (command.ControlFlow token: <Id.ControlFlow_Return return> ) ] ) ] spids: [3092 3093 3105 -1] ) (case_arm pat_list: [{<keyword>}] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<make_keyword>} {(DQ ($ Id.VSub_DollarName token))}) (command.ControlFlow token: <Id.ControlFlow_Return return> ) ] ) ] spids: [3108 3109 3121 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (C {<error>} {(DQ <'unknown token type: \''> ($ Id.VSub_DollarName r) <'\''>)} ) ] spids: [3124 3125 -1 3136] ) ] redirects: [] ) ] spids: [3055 3064] ) ] else_action: [(C {<error>} {(DQ <'unknown token: \''> (${ Id.VSub_Name token) <'\''>)})] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: skip_blanks body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {($ Id.VSub_DollarName _getc)}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(DQ ($ Id.VSub_DollarName r))} right: {<Id.Lit_Other '('> <Id.Lit_Other '['> <Id.Lit_Other '['> <Id.Lit_Other ':'> <space> <Id.Lit_Other ':'> <Id.Lit_Other ']'> <Id.Lit_Other ']'> <Id.Lit_Other '|'> ($ Id.VSub_DollarName pb_newline) <Id.Lit_Other '|'> <Id.Lit_Other ','> <Id.Lit_Other ')'> } ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.Sentence child: (C {($ Id.VSub_DollarName _getc)}) terminator: <Id.Op_Semi _> ) ] ) redirects: [] ) (C {($ Id.VSub_DollarName _ungetc)}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: skip_comment body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {($ Id.VSub_DollarName _getc)}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(DQ ($ Id.VSub_DollarName r))} right: {(DQ ($ Id.VSub_DollarName pb_newline))} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.Sentence child: (C {($ Id.VSub_DollarName _getc)}) terminator: <Id.Op_Semi _> ) ] ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: read_list body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<ch>} {<read1>} {<read2>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [(command.Sentence child:(C {<lisp_read>}) terminator:<Id.Op_Semi _>)] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'read1='> name:read1) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [3269] ) ] redirects: [] ) ] spids: [3261 3266] ) ] else_action: [ (C {($ Id.VSub_DollarName _getc)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName NIL))} spids: [3281] ) ] redirects: [] ) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {($ Id.VSub_DollarName _getc)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ch='> name:ch) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [3297] ) ] redirects: [] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName ch))} arms: [ (case_arm pat_list: [{(DQ <.>)}] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<lisp_read>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'read2='> name:read2) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [3322] ) ] redirects: [] ) ] ) (C {<skip_blanks>}) (C {($ Id.VSub_DollarName _getc)}) (C {<cons>} {(DQ ($ Id.VSub_DollarName read1))} {(DQ ($ Id.VSub_DollarName read2))}) ] spids: [3312 3315 3345 -1] ) (case_arm pat_list: [{(DQ <')'>)}] action: [ (C {<cons>} {(DQ ($ Id.VSub_DollarName read1))} {($ Id.VSub_DollarName NIL)}) ] spids: [3348 3351 3361 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (C {($ Id.VSub_DollarName _ungetc)}) (C {<read_list>}) (C {<cons>} {(DQ ($ Id.VSub_DollarName read1))} {(DQ ($ Id.VSub_DollarName r))}) ] spids: [3364 3365 -1 3385] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: read_vector body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<ch>} {<read1>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [(command.Sentence child:(C {<lisp_read>}) terminator:<Id.Op_Semi _>)] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'read1='> name:read1) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [3412] ) ] redirects: [] ) ] spids: [3404 3409] ) ] else_action: [ (C {<getc>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName EMPTY))} spids: [3424] ) ] redirects: [] ) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] redirects: [] ) (C {<skip_blanks>}) (C {<getc>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName r))} right: {(DQ <']'>)} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<vector>} {(DQ ($ Id.VSub_DollarName read1))} {(DQ ($ Id.VSub_DollarName EMPTY))}) ] spids: [3442 3459] ) ] else_action: [ (C {<ungetc>}) (C {<skip_blanks>}) (C {<read_vector>}) (C {<vector>} {(DQ ($ Id.VSub_DollarName read1))} {(DQ ($ Id.VSub_DollarName r))}) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: read_string body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 's='> (DQ )}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [(command.Sentence child:(C {<true>}) terminator:<Id.Op_Semi _>)] ) body: (command.DoGroup children: [ (C {($ Id.VSub_DollarName _getc)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName r))} right: { (DQ (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) ) } ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {($ Id.VSub_DollarName _getc)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName r))} right: {(SQ <'"'>)} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 's='> name:s) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name s) (${ Id.VSub_Name r))} spids: [3569] ) ] redirects: [] ) ] spids: [3549 3566] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 's='> name:s) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name s) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) (${ Id.VSub_Name r) ) } spids: [3583] ) ] redirects: [] ) ] redirects: [] ) ] spids: [3526 3543] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName r))} right: {(SQ <'"'>)} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)] spids: [3598 3615] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 's='> name:s) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name s) (${ Id.VSub_Name r))} spids: [3624] ) ] redirects: [] ) ] redirects: [] ) ] ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName s))}) (C {<tr>} {(DQ ($ Id.VSub_DollarName pb_star))} {(SQ <'*'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) ) } spids: [3641] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: lisp_read body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<ch>} {<read1>} {<read2>} {<read3>} {<read4>}) (command.Sentence child:(C {<skip_blanks>}) terminator:<Id.Op_Semi _>) (command.Sentence child: (C {($ Id.VSub_DollarName _getc)}) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ch='> name:ch) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [3693] ) ] redirects: [] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName ch))} arms: [ (case_arm pat_list: [{(DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"'))}] action: [(C {<read_string>})] spids: [3708 3711 3717 -1] ) (case_arm pat_list: [{(DQ <'('>)}] action: [(C {<read_list>})] spids: [3720 3723 3729 -1] ) (case_arm pat_list: [{(DQ <'['>)}] action: [(C {<read_vector>})] spids: [3732 3735 3741 -1] ) (case_arm pat_list: [{(DQ <'\''>)}] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<lisp_read>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'read1='> name:read1) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [3754] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<cons>} {(DQ ($ Id.VSub_DollarName read1))} {($ Id.VSub_DollarName NIL)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'read2='> name:read2) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [3770] ) ] redirects: [] ) ] ) (C {<cons>} {($ Id.VSub_DollarName QUOTE)} {(DQ ($ Id.VSub_DollarName read2))}) ] spids: [3744 3747 3785 -1] ) (case_arm pat_list: [{(DQ <';'>)}] action: [(C {<skip_comment>}) (C {<lisp_read>})] spids: [3788 3791 3800 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [(C {($ Id.VSub_DollarName _ungetc)}) (C {<read_token>})] spids: [3803 3804 -1 3813] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: string_list body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'c='> (DQ ($ Id.VSub_Number 1))} {<ret>}) (C {<shift>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_Number 1))} right: {(DQ )} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<cons>} {($ Id.VSub_DollarName c)} {($ Id.VSub_DollarName NIL)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [3865] ) ] redirects: [] ) ] ) ] spids: [3838 3854] ) ] else_action: [ (C {<string_list>} {($ Id.VSub_Star '*')}) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<cons>} {($ Id.VSub_DollarName c)} {($ Id.VSub_DollarName r)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [3887] ) ] redirects: [] ) ] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName ret))} spids: [3896] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'printing='> name:printing) op: assign_op.Equal rhs: (rhs_word.Empty) spids: [3907] ) ] redirects: [] ) (command.ShFunction name: escape_str body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<i>} {<c>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ )} spids: [3924] ) ] redirects: [] ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 prefix_op: <Id.VSub_Pound '#'> right: <Id.Right_DollarBrace '}'> ) } ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:($ Id.Lit_ArithVarLike i)) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'c='> name:c) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 suffix_op: (suffix_op.Slice begin: {($ Id.VSub_DollarName i)} length: {<Id.Lit_Digits 1>} ) right: <Id.Arith_RBrace _> ) ) } spids: [3956] ) ] redirects: [] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName c))} arms: [ (case_arm pat_list: [ {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"')} ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name r) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ) } spids: [3980] ) ] redirects: [] ) ] spids: [3977 3978 3989 -1] ) (case_arm pat_list: [ {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\')} ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name r) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') ) } spids: [3995] ) ] redirects: [] ) ] spids: [3992 3993 4004 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name r) (${ Id.VSub_Name c))} spids: [4010] ) ] redirects: [] ) ] spids: [4007 4008 -1 4021] ) ] redirects: [] ) ] ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: str_arr body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'ret='> (DQ <'['>)}) (C {<count_array>} {(DQ ($ Id.VSub_Number 1))}) (C {<local>} {<Id.Lit_VarLike 'len='> ($ Id.VSub_DollarName r)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_NEqual left: {<Id.Lit_Digits 0>} right: ($ Id.Lit_ArithVarLike len) ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<vget>} {($ Id.VSub_Number 1)} {<0>}) (C {<str>} {(DQ ($ Id.VSub_DollarName r))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name ret) (${ Id.VSub_Name r))} spids: [4088] ) ] redirects: [] ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 1>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: {($ Id.VSub_DollarName len)} ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike i) ) body: (command.DoGroup children: [ (C {<vget>} {($ Id.VSub_Number 1)} {($ Id.VSub_DollarName i)}) (C {<str>} {(DQ ($ Id.VSub_DollarName r))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name ret) <' '> (${ Id.VSub_Name r))} spids: [4139] ) ] redirects: [] ) ] ) redirects: [] ) ] spids: [4057 4071] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name ret) <']'>)} spids: [4157] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: str_list body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'lst='> (DQ ($ Id.VSub_Number 1))}) (C {<local>} {<ret>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName lst)} ) right: <Id.Right_DollarBrace '}'> ) ) } right: {($ Id.VSub_DollarName FN)} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<strip_tag>} {(DQ ($ Id.VSub_DollarName lst))}) (C {<printf>} {<-v>} {<r>} {(SQ <'#<function:%s>'>)} {(DQ ($ Id.VSub_DollarName r))} ) ] ) ] spids: [4188 4208] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret) op: assign_op.Equal rhs: {(DQ <'('>)} spids: [4237] ) ] redirects: [] ) (C {<str>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName lst)}) right: <Id.Right_DollarBrace '}'> ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name ret) (${ Id.VSub_Name r))} spids: [4255] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lst='> name:lst) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cdr> var_name: cdr bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName lst)}) right: <Id.Right_DollarBrace '}'> ) ) } spids: [4266] ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<typeP>} {(DQ ($ Id.VSub_DollarName lst))} {<cons>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<str>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName lst)}) right: <Id.Right_DollarBrace '}'> ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name ret) <' '> (${ Id.VSub_Name r))} spids: [4304] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lst='> name:lst) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cdr> var_name: cdr bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName lst)} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [4316] ) ] redirects: [] ) ] ) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(DQ ($ Id.VSub_DollarName lst))} right: {($ Id.VSub_DollarName NIL)} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<str>} {(DQ ($ Id.VSub_DollarName lst))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name ret) <' . '> (${ Id.VSub_Name r))} spids: [4355] ) ] redirects: [] ) ] spids: [4330 4345] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name ret) <')'>)} spids: [4370] ) ] redirects: [] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: str body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<type>} {(DQ ($ Id.VSub_Number 1))}) (command.Case to_match: {(DQ ($ Id.VSub_DollarName r))} arms: [ (case_arm pat_list: [{<integer>}] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<strip_tag>} {(DQ ($ Id.VSub_Number 1))}) (C {<printf>} {<-v>} {<r>} {(SQ <'%d'>)} {(DQ ($ Id.VSub_DollarName r))}) ] ) ] spids: [4407 4408 4432 -1] ) (case_arm pat_list: [{<cons>}] action: [(C {<str_list>} {(DQ ($ Id.VSub_Number 1))})] spids: [4435 4436 4444 -1] ) (case_arm pat_list: [{<vector>}] action: [(C {<str_arr>} {(DQ ($ Id.VSub_Number 1))})] spids: [4447 4448 4456 -1] ) (case_arm pat_list: [{<symbol>}] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<strip_tag>} {(DQ ($ Id.VSub_Number 1))}) (C {<printf>} {<-v>} {<r>} {(SQ <'%s'>)} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name symbols> var_name: symbols bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName r)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) (C {<tr>} {($ Id.VSub_DollarName pb_star)} {(DQ <'*'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) ) } ) ] ) ] spids: [4459 4460 4505 -1] ) (case_arm pat_list: [{<keyword>}] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<strip_tag>} {(DQ ($ Id.VSub_Number 1))}) (C {<printf>} {<-v>} {<r>} {(SQ <':%s'>)} {(DQ ($ Id.VSub_DollarName r))}) ] ) ] spids: [4508 4509 4533 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName printing)} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<escape_str>} {(DQ ($ Id.VSub_Number 1))}) (C {<printf>} {<-v>} {<r>} {(SQ <'"%s"'>)} {(DQ ($ Id.VSub_DollarName r))}) ] spids: [4540 4551] ) ] else_action: [ (C {<printf>} {<-v>} {<r>} {(SQ <'%s'>)} {(DQ ($ Id.VSub_Number 1))}) ] redirects: [] ) ] spids: [4536 4537 4597 -1] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: prn body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'printing='> name:printing) op: assign_op.Equal rhs: {<1>} spids: [4612] ) ] redirects: [] ) (C {<str>} {(DQ ($ Id.VSub_Number 1))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'printing='> name:printing) op: assign_op.Equal rhs: (rhs_word.Empty) spids: [4623] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {<printf>} {(SQ <'%s'>)} {(DQ ($ Id.VSub_DollarName r))}) (C {<echo>})] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'frame_ptr='> name:frame_ptr) op: assign_op.Equal rhs: {<0>} spids: [4647] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'stack_ptr='> name:stack_ptr) op: assign_op.Equal rhs: {<0>} spids: [4650] ) ] redirects: [] ) (C {<declare>} {<-a>} {<stack>}) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<intern_symbol>} {(SQ <'&'>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'AMP='> name:AMP) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [4669] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<intern_symbol>} {(SQ <nil>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NIL='> name:NIL) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [4682] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<intern_symbol>} {(SQ <t>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'T='> name:T) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [4695] ) ] redirects: [] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'global_bindings['> name: global_bindings index: {($ Id.VSub_DollarName NIL)} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName NIL))} spids: [4700] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'global_bindings['> name: global_bindings index: {($ Id.VSub_DollarName T)} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName T))} spids: [4709] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'car['> name: car index: {($ Id.VSub_DollarName NIL)} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName NIL))} spids: [4718] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'cdr['> name: cdr index: {($ Id.VSub_DollarName NIL)} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName NIL))} spids: [4727] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<new_array>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EMPTY='> name:EMPTY) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [4741] ) ] redirects: [] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'current_env='> name:current_env) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName NIL))} spids: [4747] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<intern_symbol>} {(SQ <quote>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'QUOTE='> name:QUOTE) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [4761] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<intern_symbol>} {(SQ <fn>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FN='> name:FN) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [4772] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<intern_symbol>} {(SQ <if>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IF='> name:IF) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [4783] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<intern_symbol>} {(SQ <'set!'>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SET_BANG='> name:SET_BANG) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [4794] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<intern_symbol>} {(SQ <def>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DEF='> name:DEF) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [4805] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<intern_symbol>} {(SQ <do>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DO='> name:DO) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [4816] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<intern_symbol>} {(SQ <recur>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RECUR='> name:RECUR) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [4827] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<intern_symbol>} {(SQ <binding>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BINDING='> name:BINDING) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [4838] ) ] redirects: [] ) ] ) (C {<declare>} {<-A>} {<specials>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'specials['> name: specials index: {($ Id.VSub_DollarName QUOTE)} ) op: assign_op.Equal rhs: {<1>} spids: [4849] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'specials['> name: specials index: {($ Id.VSub_DollarName FN)} ) op: assign_op.Equal rhs: {<1>} spids: [4856] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'specials['> name: specials index: {($ Id.VSub_DollarName IF)} ) op: assign_op.Equal rhs: {<1>} spids: [4863] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'specials['> name: specials index: {($ Id.VSub_DollarName SET_BANG)} ) op: assign_op.Equal rhs: {<1>} spids: [4870] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'specials['> name: specials index: {($ Id.VSub_DollarName DEF)} ) op: assign_op.Equal rhs: {<1>} spids: [4877] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'specials['> name: specials index: {($ Id.VSub_DollarName DO)} ) op: assign_op.Equal rhs: {<1>} spids: [4884] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'specials['> name: specials index: {($ Id.VSub_DollarName RECUR)} ) op: assign_op.Equal rhs: {<1>} spids: [4891] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'specials['> name: specials index: {($ Id.VSub_DollarName BINDING)} ) op: assign_op.Equal rhs: {<1>} spids: [4898] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <'eq?'>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EQ='> name:EQ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [4914] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <'nil?'>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NILP='> name:NILP) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [4925] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <car>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CAR='> name:CAR) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [4936] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <cdr>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CDR='> name:CDR) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [4947] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <cons>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CONS='> name:CONS) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [4958] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <list>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LIST='> name:LIST) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [4969] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <vector>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VECTOR='> name:VECTOR) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [4980] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <keyword>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KEYWORD='> name:KEYWORD) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [4991] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <eval>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EVAL='> name:EVAL) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [5002] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <apply>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'APPLY='> name:APPLY) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [5013] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <read>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'READ='> name:READ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [5024] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <'+'>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ADD='> name:ADD) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [5035] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <->)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SUB='> name:SUB) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [5046] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(DQ ($ Id.VSub_DollarName pb_star))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MUL='> name:MUL) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [5057] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <'/'>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DIV='> name:DIV) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [5068] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <mod>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MOD='> name:MOD) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [5079] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <'<'>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LT='> name:LT) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [5090] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <'>'>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GT='> name:GT) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [5101] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <'cons?'>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CONSP='> name:CONSP) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [5112] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <'symbol?'>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SYMBOLP='> name:SYMBOLP) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [5123] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <'number?'>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NUMBERP='> name:NUMBERP) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [5134] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <'string?'>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'STRINGP='> name:STRINGP) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [5145] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <'fn?'>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FNP='> name:FNP) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [5156] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <gensym>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GENSYM='> name:GENSYM) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [5167] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <random>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RAND='> name:RAND) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [5178] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <exit>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EXIT='> name:EXIT) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [5189] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <println>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PRINTLN='> name:PRINTLN) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [5200] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <sh>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SH='> name:SH) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [5211] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <'sh!'>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SH_BANG='> name:SH_BANG) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [5222] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <load-file>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LOAD_FILE='> name:LOAD_FILE) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [5233] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <gc>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GC='> name:GC) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [5244] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <error>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ERROR='> name:ERROR) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [5255] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <type>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TYPE='> name:TYPE) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [5266] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <str>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'STR='> name:STR) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [5277] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <split>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SPLIT='> name:SPLIT) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [5288] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<defprim>} {(SQ <getenv>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GETENV='> name:GETENV) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [5299] ) ] redirects: [] ) ] ) (command.ShFunction name: eval_args body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'args='> (DQ ($ Id.VSub_Number 1))}) (C {<type>} {(DQ ($ Id.VSub_DollarName args))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName r))} right: {<cons>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(DQ ($ Id.VSub_DollarName args))} right: {($ Id.VSub_DollarName NIL)} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<lisp_eval>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName args)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'stack['> name: stack index: { (word_part.ArithSub anode: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike stack_ptr) ) ) } ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [5373] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'args='> name:args) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cdr> var_name: cdr bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName args)} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [5391] ) ] redirects: [] ) ] ) redirects: [] ) ] spids: [5325 5340] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName r))} right: {<vector>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<count_array>} {(DQ ($ Id.VSub_DollarName args))}) (C {<local>} {<i>} {<Id.Lit_VarLike 'len='> (DQ ($ Id.VSub_DollarName r))}) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: ($ Id.Lit_ArithVarLike len) ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike i) ) body: (command.DoGroup children: [ (C {<vget>} {(DQ ($ Id.VSub_DollarName args))} {(DQ ($ Id.VSub_DollarName i))} ) (C {<lisp_eval>} {(DQ ($ Id.VSub_DollarName r))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'stack['> name: stack index: { (word_part.ArithSub anode: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike stack_ptr) ) ) } ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [5480] ) ] redirects: [] ) ] ) redirects: [] ) ] spids: [5405 5420] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(DQ ($ Id.VSub_Number 1))} right: {(DQ ($ Id.VSub_DollarName NIL))} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<str>} {(DQ ($ Id.VSub_DollarName args))}) (C {<error>} {(DQ <'Unknown argument type: '> ($ Id.VSub_DollarName r))}) ] spids: [5501 5518] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: listify_args body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'p='> (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: ($ Id.Lit_ArithVarLike stack_ptr) right: {<Id.Lit_Digits 1>} ) ) } {<Id.Lit_VarLike 'ret='> ($ Id.VSub_DollarName NIL)} {<stop>} ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Unary op_id:Id.BoolUnary_z child:{(DQ ($ Id.VSub_Number 1))}) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'stop='> name:stop) op: assign_op.Equal rhs: {($ Id.VSub_DollarName frame_ptr)} spids: [5578] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'stop='> name:stop) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} spids: [5583] ) ] redirects: [] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_LessEqual left: ($ Id.Lit_ArithVarLike stop) right: ($ Id.Lit_ArithVarLike p) ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<cons>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name stack> var_name: stack bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName p)}) right: <Id.Right_DollarBrace '}'> ) ) } {(DQ ($ Id.VSub_DollarName ret))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [5621] ) ] redirects: [] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'p='> name:p) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: ($ Id.Lit_ArithVarLike p) right: {<Id.Lit_Digits 1>} ) ) } spids: [5627] ) ] redirects: [] ) ] ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName ret))} spids: [5641] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: vectify_args body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'stop='> (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: ($ Id.Lit_ArithVarLike stack_ptr) right: {<Id.Lit_Digits 1>} ) ) } {<ret>} ) (C {<new_array>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [5674] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Unary op_id:Id.BoolUnary_z child:{(DQ ($ Id.VSub_Number 1))}) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'p='> name:p) op: assign_op.Equal rhs: {($ Id.VSub_DollarName frame_ptr)} spids: [5692] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'p='> name:p) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} spids: [5697] ) ] redirects: [] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_LessEqual left: ($ Id.Lit_ArithVarLike p) right: ($ Id.Lit_ArithVarLike stop) ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<append>} {(DQ ($ Id.VSub_DollarName ret))} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name stack> var_name: stack bracket_op: (bracket_op.ArrayIndex expr: { (word_part.ArithSub anode: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike p) ) ) } ) right: <Id.Right_DollarBrace '}'> ) ) } ) ] ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName ret))} spids: [5741] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: acons body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'key='> (DQ ($ Id.VSub_Number 1))} {<Id.Lit_VarLike 'datum='> (DQ ($ Id.VSub_Number 2))} {<Id.Lit_VarLike 'a_list='> (DQ ($ Id.VSub_Number 3))} ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<cons>} {(DQ ($ Id.VSub_DollarName key))} {(DQ ($ Id.VSub_DollarName datum))}) (C {<cons>} {(DQ ($ Id.VSub_DollarName r))} {(DQ ($ Id.VSub_DollarName a_list))}) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: aget body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'key='> (DQ ($ Id.VSub_Number 1))} {<Id.Lit_VarLike 'a_list='> (DQ ($ Id.VSub_Number 2))} ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(DQ ($ Id.VSub_DollarName a_list))} right: {($ Id.VSub_DollarName NIL)} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName a_list)} ) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Right_DollarBrace '}'> ) ) } right: {(DQ ($ Id.VSub_DollarName key))} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cdr> var_name: cdr bracket_op: (bracket_op.ArrayIndex expr: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName a_list)} ) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [5867] ) ] redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) ] spids: [5837 5864] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'a_list='> name:a_list) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cdr> var_name: cdr bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName a_list)} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [5892] ) ] redirects: [] ) ] ) redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {($ Id.VSub_DollarName NIL)} spids: [5906] ) ] redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: analyze body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'fn='> (DQ ($ Id.VSub_Number 1))} {<Id.Lit_VarLike 'body='> (DQ ($ Id.VSub_Number 2))} {<Id.Lit_VarLike 'env='> (DQ ($ Id.VSub_Number 3))} ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(DQ ($ Id.VSub_DollarName body))} right: {(DQ ($ Id.VSub_DollarName NIL))} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<type>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName body)}) right: <Id.Right_DollarBrace '}'> ) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName r))} right: {<cons>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Case to_match: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName body)} ) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Right_DollarBrace '}'> ) ) } arms: [ (case_arm pat_list: [{($ Id.VSub_DollarName FN)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'environments['> name: environments index: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName body)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName env))} spids: [6015] ) ] redirects: [] ) ] spids: [6012 6013 6029 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName RECUR)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'recur_fns['> name: recur_fns index: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName body)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName fn))} spids: [6045] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'recur_frames['> name: recur_frames index: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName body)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName frame_ptr))} spids: [6069] ) ] redirects: [] ) ] spids: [6041 6042 6093 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (C {<analyze>} {(DQ ($ Id.VSub_DollarName fn))} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName body)} ) right: <Id.Right_DollarBrace '}'> ) ) } {(DQ ($ Id.VSub_DollarName env))} ) ] spids: [6096 6097 6118 -1] ) ] redirects: [] ) ] spids: [5975 5990] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'body='> name:body) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cdr> var_name: cdr bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName body)} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [6127] ) ] redirects: [] ) ] ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: copy_list body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'lst='> (DQ ($ Id.VSub_Number 1))} {<Id.Lit_VarLike 'copy='> (DQ ($ Id.VSub_DollarName NIL))} {<Id.Lit_VarLike 'prev='> (DQ ($ Id.VSub_DollarName NIL))} {<Id.Lit_VarLike 'curr='> (DQ ($ Id.VSub_DollarName NIL))} ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(DQ ($ Id.VSub_DollarName lst))} right: {(DQ ($ Id.VSub_DollarName NIL))} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<cons>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName lst)}) right: <Id.Right_DollarBrace '}'> ) ) } {(DQ ($ Id.VSub_DollarName NIL))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'curr='> name:curr) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [6210] ) ] redirects: [] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName copy))} right: {(DQ ($ Id.VSub_DollarName NIL))} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'copy='> name:copy) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName curr))} spids: [6236] ) ] redirects: [] ) ] spids: [6216 6233] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'cdr['> name: cdr index: {(DQ ($ Id.VSub_DollarName prev))} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName curr))} spids: [6245] ) ] redirects: [] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'prev='> name:prev) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName curr))} spids: [6262] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lst='> name:lst) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cdr> var_name: cdr bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName lst)}) right: <Id.Right_DollarBrace '}'> ) ) } spids: [6268] ) ] redirects: [] ) ] ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName copy))} spids: [6282] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: apply_user body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'fn='> (DQ ($ Id.VSub_Number 1))}) (C {<local>} {<Id.Lit_VarLike 'body='> (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cdr> var_name: cdr bracket_op: (bracket_op.ArrayIndex expr: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cdr> var_name: cdr bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName fn)}) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Right_DollarBrace '}'> ) ) } ) (C {<local>} {<Id.Lit_VarLike 'params='> (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cdr> var_name: cdr bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName fn)}) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Right_DollarBrace '}'> ) ) } ) (C {<local>} {<Id.Lit_VarLike 'p='> (DQ ($ Id.VSub_DollarName frame_ptr))}) (C {<local>} {<Id.Lit_VarLike 'ret='> (DQ ($ Id.VSub_DollarName NIL))}) (C {<local>} {<old_env>}) (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name environments> var_name: environments bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName fn)}) right: <Id.Right_DollarBrace '}'> ) ) } ) redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'env='> ($ Id.VSub_DollarName NIL)}) (C {<local>} {<Id.Lit_VarLike 'env='> (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name environments> var_name: environments bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName fn)}) right: <Id.Right_DollarBrace '}'> ) ) } ) ] ) (C {<type>} {(DQ ($ Id.VSub_DollarName params))}) (C {<local>} {<Id.Lit_VarLike 'ptype='> (DQ ($ Id.VSub_DollarName r))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName ptype))} right: {(DQ <cons>)} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(DQ ($ Id.VSub_DollarName params))} right: {($ Id.VSub_DollarName NIL)} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName params)} ) right: <Id.Right_DollarBrace '}'> ) ) } right: {($ Id.VSub_DollarName AMP)} ) ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<acons>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName params)} ) right: <Id.Right_DollarBrace '}'> ) ) } { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name stack> var_name: stack bracket_op: (bracket_op.ArrayIndex expr: { (word_part.ArithSub anode: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike p) ) ) } ) right: <Id.Right_DollarBrace '}'> ) ) } {(DQ ($ Id.VSub_DollarName env))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'env='> name:env) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [6499] ) ] redirects: [] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'params='> name:params) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cdr> var_name: cdr bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName params)} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [6505] ) ] redirects: [] ) ] ) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName params)} ) right: <Id.Right_DollarBrace '}'> ) ) } right: {($ Id.VSub_DollarName AMP)} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<listify_args>} {(DQ ($ Id.VSub_DollarName p))}) (C {<local>} {<Id.Lit_VarLike 'more='> (DQ ($ Id.VSub_DollarName r))}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<acons>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cdr> var_name: cdr bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName params)} ) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Right_DollarBrace '}'> ) ) } {(DQ ($ Id.VSub_DollarName more))} {(DQ ($ Id.VSub_DollarName env))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'env='> name:env) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [6584] ) ] redirects: [] ) ] ) ] spids: [6519 6539] ) ] else_action: [] redirects: [] ) ] spids: [6416 6433] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName ptype))} right: {(DQ <vector>)} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<local>} {<Id.Lit_VarLike 'i='> <1>} {<len>}) (C {<count_array>} {(DQ ($ Id.VSub_DollarName params))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'len='> name:len) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [6628] ) ] redirects: [] ) (C {<vget>} {($ Id.VSub_DollarName params)} {<0>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_LessEqual left: ($ Id.Lit_ArithVarLike i) right: ($ Id.Lit_ArithVarLike len) ) redirects: [] ) (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(DQ ($ Id.VSub_DollarName r))} right: {($ Id.VSub_DollarName AMP)} ) redirects: [] ) ] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<acons>} {(DQ ($ Id.VSub_DollarName r))} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name stack> var_name: stack bracket_op: (bracket_op.ArrayIndex expr: { (word_part.ArithSub anode: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike p) ) ) } ) right: <Id.Right_DollarBrace '}'> ) ) } {(DQ ($ Id.VSub_DollarName env))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'env='> name:env) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [6695] ) ] redirects: [] ) ] ) (C {<vget>} {($ Id.VSub_DollarName params)} { (word_part.ArithSub anode: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike i) ) ) } ) ] ) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName r))} right: {(DQ ($ Id.VSub_DollarName AMP))} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<listify_args>} {(DQ ($ Id.VSub_DollarName p))}) (C {<local>} {<Id.Lit_VarLike 'more='> (DQ ($ Id.VSub_DollarName r))}) ] ) (C {<vget>} {($ Id.VSub_DollarName params)} {($ Id.VSub_DollarName i)}) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<acons>} {(DQ ($ Id.VSub_DollarName r))} {(DQ ($ Id.VSub_DollarName more))} {(DQ ($ Id.VSub_DollarName env))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'env='> name:env) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [6774] ) ] redirects: [] ) ] ) ] spids: [6715 6732] ) ] else_action: [] redirects: [] ) ] spids: [6593 6610] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(DQ ($ Id.VSub_DollarName params))} right: {($ Id.VSub_DollarName NIL)} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<error>} {(DQ <'Illegal type ('> (${ Id.VSub_Name ptype) <') for params in function'>)} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [6783 6798] ) ] else_action: [] redirects: [] ) (C {<analyze>} {(DQ ($ Id.VSub_DollarName fn))} {(DQ ($ Id.VSub_DollarName body))} {(DQ ($ Id.VSub_DollarName env))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'old_env='> name:old_env) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName current_env))} spids: [6838] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'current_env='> name:current_env) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName env))} spids: [6844] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<do_>} {(DQ ($ Id.VSub_DollarName body))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [6858] ) ] redirects: [] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'current_env='> name:current_env) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName old_env))} spids: [6864] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName ret))} spids: [6870] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: eval_file body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<strmap_file>} {(DQ ($ Id.VSub_Number 1))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_getc='> name:_getc) op: assign_op.Equal rhs: {<strmap_getc>} spids: [6892] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_ungetc='> name:_ungetc) op: assign_op.Equal rhs: {<strmap_ungetc>} spids: [6896] ) ] redirects: [] ) (C {<lisp_read>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_getc='> name:_getc) op: assign_op.Equal rhs: {<getc>} spids: [6903] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_ungetc='> name:_ungetc) op: assign_op.Equal rhs: {<ungetc>} spids: [6907] ) ] redirects: [] ) (C {<protect>} {(DQ ($ Id.VSub_DollarName r))}) (C {<lisp_eval>} {(DQ ($ Id.VSub_DollarName r))}) (C {<unprotect>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: check_numbers body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id:Id.BoolUnary_n child:{(DQ ($ Id.VSub_Number 1))}) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [(C {<typeP>} {(DQ ($ Id.VSub_Number 1))} {<integer>})] negated: T stderr_indices: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<str>} {(DQ ($ Id.VSub_Number 1))}) (C {<error>} {(DQ <'\''> ($ Id.VSub_DollarName r) <'\' is not a number'>)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [6953 6967] ) ] else_action: [] redirects: [] ) (C {<shift>}) ] ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: rev_str body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<i>} {<Id.Lit_VarLike 'rev='> (DQ )}) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 prefix_op: <Id.VSub_Pound '#'> right: <Id.Right_DollarBrace '}'> ) } ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:($ Id.Lit_ArithVarLike i)) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rev='> name:rev) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 suffix_op: (suffix_op.Slice begin: {($ Id.VSub_DollarName i)} length: {<Id.Lit_Digits 1>} ) right: <Id.Arith_RBrace _> ) (${ Id.VSub_Name rev) ) } spids: [7045] ) ] redirects: [] ) ] ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName rev))} spids: [7063] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: apply_primitive body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'primitive='> (DQ ($ Id.VSub_Number 1))}) (C {<local>} {<Id.Lit_VarLike 'arg0='> (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name stack> var_name: stack bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName frame_ptr)}) right: <Id.Right_DollarBrace '}'> ) ) } ) (C {<local>} {<Id.Lit_VarLike 'arg1='> (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name stack> var_name: stack bracket_op: (bracket_op.ArrayIndex expr: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: ($ Id.Lit_ArithVarLike frame_ptr) right: {<Id.Lit_Digits 1>} ) ) } ) right: <Id.Right_DollarBrace '}'> ) ) } ) (C {<local>} {<Id.Lit_VarLike 'arg2='> (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name stack> var_name: stack bracket_op: (bracket_op.ArrayIndex expr: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: ($ Id.Lit_ArithVarLike frame_ptr) right: {<Id.Lit_Digits 2>} ) ) } ) right: <Id.Right_DollarBrace '}'> ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {($ Id.VSub_DollarName NIL)} spids: [7136] ) ] redirects: [] ) (command.Case to_match: {($ Id.VSub_DollarName primitive)} arms: [ (case_arm pat_list: [{($ Id.VSub_DollarName EQ)}] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName arg0))} right: {(DQ ($ Id.VSub_DollarName arg1))} ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName T))} spids: [7166] ) ] redirects: [] ) ] ) ] spids: [7147 7148 7171 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName NILP)}] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName arg0))} right: {($ Id.VSub_DollarName NIL)} ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName T))} spids: [7191] ) ] redirects: [] ) ] ) ] spids: [7174 7175 7196 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName CAR)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName arg0)} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [7202] ) ] redirects: [] ) ] spids: [7199 7200 7212 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName CDR)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cdr> var_name: cdr bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName arg0)} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [7218] ) ] redirects: [] ) ] spids: [7215 7216 7228 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName CONS)}] action: [ (C {<cons>} {(DQ ($ Id.VSub_DollarName arg0))} {(DQ ($ Id.VSub_DollarName arg1))}) ] spids: [7231 7232 7244 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName LIST)}] action: [(C {<listify_args>})] spids: [7247 7248 7252 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName VECTOR)}] action: [(C {<vectify_args>})] spids: [7255 7256 7260 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName KEYWORD)}] action: [ (C {<type>} {(DQ ($ Id.VSub_DollarName arg0))}) (command.Case to_match: {($ Id.VSub_DollarName r)} arms: [ (case_arm pat_list: [{<string>}] action: [(C {<make_keyword>} {(DQ ($ Id.VSub_DollarName arg0))})] spids: [7281 7282 7290 -1] ) (case_arm pat_list: [{<keyword>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName arg0))} spids: [7296] ) ] redirects: [] ) ] spids: [7293 7294 7301 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (C {<strip_tag>} {(DQ ($ Id.VSub_DollarName arg0))}) (C {<error>} {(DQ <'Unable to make keyword from: '> ($ Id.VSub_DollarName r))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName NIL))} spids: [7323] ) ] redirects: [] ) ] spids: [7304 7305 -1 7329] ) ] redirects: [] ) ] spids: [7263 7264 7332 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName STR)}] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<listify_args>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'strs='> name:strs) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [7343] ) ] redirects: [] ) ] ) (C {<local>} {<Id.Lit_VarLike 'ret='> (DQ )}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(DQ ($ Id.VSub_DollarName strs))} right: {(DQ ($ Id.VSub_DollarName NIL))} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<str>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName strs)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name ret) ($ Id.VSub_DollarName r))} spids: [7388] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'strs='> name:strs) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cdr> var_name: cdr bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName strs)} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [7397] ) ] redirects: [] ) ] ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName ret))} spids: [7411] ) ] redirects: [] ) ] spids: [7335 7336 7417 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName SPLIT)}] action: [ (C {<local>} {<i>} {<Id.Lit_VarLike 'ret='> (DQ ($ Id.VSub_DollarName NIL))} {<Id.Lit_VarLike 'last='> <0>} ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<rev_str>} {(DQ ($ Id.VSub_DollarName arg1))}) (C {<local>} {<Id.Lit_VarLike 'rev='> (DQ ($ Id.VSub_DollarName r))}) ] ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name rev> var_name: rev prefix_op: <Id.VSub_Pound '#'> right: <Id.Right_DollarBrace '}'> ) } ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike i) ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name rev> var_name: rev suffix_op: (suffix_op.Slice begin: {($ Id.VSub_DollarName i)} length: {<Id.Lit_Digits 1>} ) right: <Id.Arith_RBrace _> ) ) } right: {(DQ ($ Id.VSub_DollarName arg0))} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<rev_str>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name rev> var_name: rev suffix_op: (suffix_op.Slice begin: {($ Id.VSub_DollarName last)} length: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: ($ Id.Lit_ArithVarLike i) right: ($ Id.Lit_ArithVarLike last) ) ) } ) right: <Id.Arith_RBrace _> ) ) } ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<cons>} {(DQ ($ Id.VSub_DollarName r))} {(DQ ($ Id.VSub_DollarName ret))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ret='> name: ret ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [7538] ) ] redirects: [] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'last='> name: last ) op: assign_op.Equal rhs: { (DQ (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 1>} ) ) ) } spids: [7544] ) ] redirects: [] ) ] spids: [7480 7503] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_NEqual left: ($ Id.Lit_ArithVarLike last) right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<rev_str>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name rev> var_name: rev suffix_op: (suffix_op.Slice begin: {($ Id.VSub_DollarName last)} length: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name rev> var_name: rev prefix_op: <Id.VSub_Pound '#'> right: <Id.Right_DollarBrace '}'> ) } right: ($ Id.Lit_ArithVarLike last) ) ) } ) right: <Id.Arith_RBrace _> ) ) } ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<cons>} {(DQ ($ Id.VSub_DollarName r))} {(DQ ($ Id.VSub_DollarName ret))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [7613] ) ] redirects: [] ) ] ) ] spids: [7563 7575] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName ret))} spids: [7622] ) ] redirects: [] ) ] spids: [7420 7421 7628 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName GETENV)}] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {(DQ ($ Id.VSub_DollarName arg0))} ) redirects: [] ) (C {<eval>} { (DQ <'r='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name arg0) ) } ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(DQ ($ Id.VSub_DollarName r))} ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {($ Id.VSub_DollarName NIL)} spids: [7670] ) ] redirects: [] ) ] ) ] spids: [7631 7632 7674 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName EVAL)}] action: [(C {<lisp_eval>} {(DQ ($ Id.VSub_DollarName arg0))})] spids: [7677 7678 7686 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName READ)}] action: [(C {<lisp_read>})] spids: [7689 7690 7694 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName MOD)}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<check_numbers>} {(DQ ($ Id.VSub_DollarName arg0))} {(DQ ($ Id.VSub_DollarName arg1))} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<strip_tag>} {(DQ ($ Id.VSub_DollarName arg0))}) (C {<local>} {<Id.Lit_VarLike 'x='> (DQ ($ Id.VSub_DollarName r))}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<strip_tag>} {(DQ ($ Id.VSub_DollarName arg1))}) (C {<local>} {<Id.Lit_VarLike 'y='> (DQ ($ Id.VSub_DollarName r))}) ] ) (C {<make_integer>} { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Percent left: ($ Id.Lit_ArithVarLike x) right: ($ Id.Lit_ArithVarLike y) ) ) } ) ] spids: [7701 7715] ) ] else_action: [] redirects: [] ) ] spids: [7697 7698 7765 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName LT)}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<check_numbers>} {(DQ ($ Id.VSub_DollarName arg0))} {(DQ ($ Id.VSub_DollarName arg1))} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<strip_tag>} {(DQ ($ Id.VSub_DollarName arg0))}) (C {<local>} {<Id.Lit_VarLike 'x='> (DQ ($ Id.VSub_DollarName r))}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<strip_tag>} {(DQ ($ Id.VSub_DollarName arg1))}) (C {<local>} {<Id.Lit_VarLike 'y='> (DQ ($ Id.VSub_DollarName r))}) ] ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike x) right: ($ Id.Lit_ArithVarLike y) ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {($ Id.VSub_DollarName T)} spids: [7832] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {($ Id.VSub_DollarName NIL)} spids: [7837] ) ] redirects: [] ) ] ) ] spids: [7772 7786] ) ] else_action: [] redirects: [] ) ] spids: [7768 7769 7844 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName GT)}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<check_numbers>} {(DQ ($ Id.VSub_DollarName arg0))} {(DQ ($ Id.VSub_DollarName arg1))} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<strip_tag>} {(DQ ($ Id.VSub_DollarName arg0))}) (C {<local>} {<Id.Lit_VarLike 'x='> (DQ ($ Id.VSub_DollarName r))}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<strip_tag>} {(DQ ($ Id.VSub_DollarName arg1))}) (C {<local>} {<Id.Lit_VarLike 'y='> (DQ ($ Id.VSub_DollarName r))}) ] ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Great left: ($ Id.Lit_ArithVarLike x) right: ($ Id.Lit_ArithVarLike y) ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {($ Id.VSub_DollarName T)} spids: [7911] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {($ Id.VSub_DollarName NIL)} spids: [7916] ) ] redirects: [] ) ] ) ] spids: [7851 7865] ) ] else_action: [] redirects: [] ) ] spids: [7847 7848 7923 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName CONSP)}] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<typeP>} {(DQ ($ Id.VSub_DollarName arg0))} {<cons>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {($ Id.VSub_DollarName T)} spids: [7939] ) ] redirects: [] ) ] ) ] spids: [7926 7927 7942 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName SYMBOLP)}] action: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (C {<typeP>} {(DQ ($ Id.VSub_DollarName arg0))} {<symbol>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {($ Id.VSub_DollarName T)} spids: [7958] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {($ Id.VSub_DollarName NIL)} spids: [7963] ) ] redirects: [] ) ] ) ] spids: [7945 7946 7966 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName NUMBERP)}] action: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (C {<typeP>} {(DQ ($ Id.VSub_DollarName arg0))} {<integer>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {($ Id.VSub_DollarName T)} spids: [7982] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {($ Id.VSub_DollarName NIL)} spids: [7987] ) ] redirects: [] ) ] ) ] spids: [7969 7970 7990 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName STRINGP)}] action: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (C {<typeP>} {(DQ ($ Id.VSub_DollarName arg0))} {<string>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {($ Id.VSub_DollarName T)} spids: [8006] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {($ Id.VSub_DollarName NIL)} spids: [8011] ) ] redirects: [] ) ] ) ] spids: [7993 7994 8014 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName FNP)}] action: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (C {<typeP>} {(DQ ($ Id.VSub_DollarName arg0))} {<cons>}) (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName arg0)} ) right: <Id.Right_DollarBrace '}'> ) ) } right: {($ Id.VSub_DollarName FN)} ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {($ Id.VSub_DollarName T)} spids: [8049] ) ] redirects: [] ) ] ) ] spids: [8017 8018 8052 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName GC)}] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<gc>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {($ Id.VSub_DollarName NIL)} spids: [8062] ) ] redirects: [] ) ] ) ] spids: [8055 8056 8065 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName GENSYM)}] action: [(C {<gensym>})] spids: [8068 8069 8073 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName ADD)}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<check_numbers>} {(DQ ($ Id.VSub_DollarName arg0))} {(DQ ($ Id.VSub_DollarName arg1))} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<strip_tag>} {(DQ ($ Id.VSub_DollarName arg0))}) (C {<local>} {<Id.Lit_VarLike 'x='> (DQ ($ Id.VSub_DollarName r))}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<strip_tag>} {(DQ ($ Id.VSub_DollarName arg1))}) (C {<local>} {<Id.Lit_VarLike 'y='> (DQ ($ Id.VSub_DollarName r))}) ] ) (C {<make_integer>} { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: ($ Id.Lit_ArithVarLike x) right: ($ Id.Lit_ArithVarLike y) ) ) } ) ] spids: [8080 8094] ) ] else_action: [] redirects: [] ) ] spids: [8076 8077 8144 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName SUB)}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<check_numbers>} {(DQ ($ Id.VSub_DollarName arg0))} {(DQ ($ Id.VSub_DollarName arg1))} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<strip_tag>} {(DQ ($ Id.VSub_DollarName arg0))}) (C {<local>} {<Id.Lit_VarLike 'x='> (DQ ($ Id.VSub_DollarName r))}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<strip_tag>} {(DQ ($ Id.VSub_DollarName arg1))}) (C {<local>} {<Id.Lit_VarLike 'y='> (DQ ($ Id.VSub_DollarName r))}) ] ) (C {<make_integer>} { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: ($ Id.Lit_ArithVarLike x) right: ($ Id.Lit_ArithVarLike y) ) ) } ) ] spids: [8151 8165] ) ] else_action: [] redirects: [] ) ] spids: [8147 8148 8215 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName APPLY)}] action: [ (C {<local>} {<Id.Lit_VarLike 'old_frame_ptr='> ($ Id.VSub_DollarName frame_ptr)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'frame_ptr='> name:frame_ptr) op: assign_op.Equal rhs: {($ Id.VSub_DollarName stack_ptr)} spids: [8228] ) ] redirects: [] ) (C {<type>} {(DQ ($ Id.VSub_DollarName arg1))}) (command.Case to_match: {($ Id.VSub_DollarName r)} arms: [ (case_arm pat_list: [{<cons>}] action: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<typeP>} {(DQ ($ Id.VSub_DollarName arg1))} {<cons>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'stack['> name: stack index: { (word_part.ArithSub anode: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike stack_ptr) ) ) } ) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName arg1)} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [8264] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'arg1='> name: arg1 ) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cdr> var_name: cdr bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName arg1)} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [8287] ) ] redirects: [] ) ] ) redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName arg1)} right: {($ Id.VSub_DollarName NIL)} ) redirects: [] ) (C {<error>} {(DQ <'Bad argument to apply: not a proper list'>)}) ] ) ] spids: [8246 8247 8320 -1] ) (case_arm pat_list: [{<vector>}] action: [ (C {<count_array>} {(DQ ($ Id.VSub_DollarName arg1))}) (C {<local>} {<Id.Lit_VarLike 'len='> (DQ ($ Id.VSub_DollarName r))}) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: ($ Id.Lit_ArithVarLike len) ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike i) ) body: (command.DoGroup children: [ (C {<vget>} {(DQ ($ Id.VSub_DollarName arg1))} {(DQ ($ Id.VSub_DollarName i))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'stack['> name: stack index: { (word_part.ArithSub anode: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike stack_ptr) ) ) } ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [8375] ) ] redirects: [] ) ] ) redirects: [] ) ] spids: [8323 8324 8396 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [(C {<error>} {(DQ <'Bad argument to apply: not a list'>)})] spids: [8399 8400 -1 8409] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(DQ ($ Id.VSub_DollarName e))} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<apply>} {(DQ ($ Id.VSub_DollarName arg0))})] spids: [8412 8425] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'stack_ptr='> name:stack_ptr) op: assign_op.Equal rhs: {($ Id.VSub_DollarName frame_ptr)} spids: [8438] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'frame_ptr='> name:frame_ptr) op: assign_op.Equal rhs: {($ Id.VSub_DollarName old_frame_ptr)} spids: [8442] ) ] redirects: [] ) ] spids: [8218 8219 8446 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName ERROR)}] action: [ (command.Simple words: [{<printf>} {(SQ <'lisp error: '>)}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] more_env: [] do_fork: T ) (command.Simple words: [{<prn>} {(DQ ($ Id.VSub_DollarName arg0))}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] more_env: [] do_fork: T ) ] spids: [8449 8450 8473 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName TYPE)}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName arg0))} right: {($ Id.VSub_DollarName NIL)} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {($ Id.VSub_DollarName NIL)} spids: [8498] ) ] redirects: [] ) ] spids: [8480 8495] ) ] else_action: [ (C {<type>} {(DQ ($ Id.VSub_DollarName arg0))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName r))} right: {<cons>} ) redirects: [] ) (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName arg0)} ) right: <Id.Right_DollarBrace '}'> ) ) } right: {($ Id.VSub_DollarName FN)} ) redirects: [] ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<intern_symbol>} {(DQ <function>)})] spids: [8512 8546] ) ] else_action: [(C {<intern_symbol>} {(DQ ($ Id.VSub_DollarName r))})] redirects: [] ) ] redirects: [] ) ] spids: [8476 8477 8572 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName MUL)}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<check_numbers>} {(DQ ($ Id.VSub_DollarName arg0))} {(DQ ($ Id.VSub_DollarName arg1))} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<strip_tag>} {(DQ ($ Id.VSub_DollarName arg0))}) (C {<local>} {<Id.Lit_VarLike 'x='> (DQ ($ Id.VSub_DollarName r))}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<strip_tag>} {(DQ ($ Id.VSub_DollarName arg1))}) (C {<local>} {<Id.Lit_VarLike 'y='> (DQ ($ Id.VSub_DollarName r))}) ] ) (C {<make_integer>} { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Star left: ($ Id.Lit_ArithVarLike x) right: ($ Id.Lit_ArithVarLike y) ) ) } ) ] spids: [8579 8593] ) ] else_action: [] redirects: [] ) ] spids: [8575 8576 8643 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName DIV)}] action: [ (C {<local>} {<x>} {<y>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<check_numbers>} {(DQ ($ Id.VSub_DollarName arg0))} {(DQ ($ Id.VSub_DollarName arg1))} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<strip_tag>} {($ Id.VSub_DollarName arg0)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [8680] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<strip_tag>} {($ Id.VSub_DollarName arg1)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'y='> name:y) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [8690] ) ] redirects: [] ) ] ) (C {<make_integer>} { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Slash left: ($ Id.Lit_ArithVarLike x) right: ($ Id.Lit_ArithVarLike y) ) ) } ) ] spids: [8657 8671] ) ] else_action: [] redirects: [] ) ] spids: [8646 8647 8709 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName RAND)}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<check_numbers>} {(DQ ($ Id.VSub_DollarName arg0))}) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<strip_tag>} {($ Id.VSub_DollarName arg0)}) (C {<make_integer>} { (DQ (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Percent left: ($ Id.Lit_ArithVarLike RANDOM) right: ($ Id.Lit_ArithVarLike r) ) ) ) } ) ] spids: [8716 8726] ) ] else_action: [] redirects: [] ) ] spids: [8712 8713 8751 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName PRINTLN)}] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<listify_args>}) (C {<local>} {<Id.Lit_VarLike 'to_print='> (DQ ($ Id.VSub_DollarName r))}) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(DQ ($ Id.VSub_DollarName to_print))} right: {(DQ ($ Id.VSub_DollarName NIL))} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<type>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName to_print)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName r))} arms: [ (case_arm pat_list: [{<string>}] action: [ (C {<echo>} {<-e>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName to_print)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) ] spids: [8811 8812 8829 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (C {<prn>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName to_print)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) ] spids: [8832 8833 8847 -1] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'to_print='> name: to_print ) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cdr> var_name: cdr bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName to_print)} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [8853] ) ] redirects: [] ) ] ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName NIL))} spids: [8867] ) ] redirects: [] ) ] spids: [8754 8755 8873 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName SH)}] action: [ (C {<local>} {<ret>}) (C {<eval>} { (DQ <'ret='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'('> (${ Id.VSub_Name arg0) <')'> ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: { (single_quoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [<Id.Char_OneChar '\\n'>] right: <Id.Right_SingleQuote '\''> ) } spids: [8898] ) ] redirects: [] ) (C {<string_list>} { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.ForEach iter_names: [i] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName ret)}]) body: (command.DoGroup children: [ (command.Sentence child: (C {<echo>} {(DQ ($ Id.VSub_DollarName i))}) terminator: <Id.Op_Semi _> ) ] ) redirects: [] ) right: <Id.Eof_RParen _> ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName DEFAULT_IFS))} spids: [8929] ) ] redirects: [] ) ] spids: [8876 8877 8935 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName SH_BANG)}] action: [ (C {<eval>} {(DQ (${ Id.VSub_Name arg0))}) (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_QMark '?')} right: {<0>} ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {($ Id.VSub_DollarName T)} spids: [8963] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {($ Id.VSub_DollarName NIL)} spids: [8968] ) ] redirects: [] ) ] ) ] spids: [8938 8939 8972 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName LOAD_FILE)}] action: [ (C {<local>} {<f>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_r child: {(${ Id.VSub_Name arg0)} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'f='> name:f) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name arg0))} spids: [9000] ) ] redirects: [] ) ] spids: [8984 8997] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_r child: {(DQ (${ Id.VSub_Name arg0) <.gk>)} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'f='> name:f) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name arg0) <.gk>)} spids: [9027] ) ] redirects: [] ) ] spids: [9008 9024] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(DQ ($ Id.VSub_DollarName f))} right: {(DQ )} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<eval_file>} {(DQ ($ Id.VSub_DollarName f))})] spids: [9039 9055] ) ] else_action: [ (command.Simple words: [{<echo>} {(DQ <'File not found: '> (${ Id.VSub_Name arg0))}] redirects: [ (redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] more_env: [] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName NIL))} spids: [9081] ) ] redirects: [] ) ] redirects: [] ) ] spids: [8975 8976 9090 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName EXIT)}] action: [ (C {<strip_tag>} {($ Id.VSub_DollarName arg0)}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {(DQ ($ Id.VSub_DollarName r))} ) ] spids: [9093 9094 9109 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<strip_tag>} {(DQ ($ Id.VSub_Number 1))}) (C {<error>} { (DQ <'unknown primitive function type: '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name symbols> var_name: symbols bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName r)}) right: <Id.Right_DollarBrace '}'> ) ) } ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [9112 9113 -1 9141] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: apply body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_Number 1)} ) right: <Id.Right_DollarBrace '}'> ) ) } right: {(DQ ($ Id.VSub_DollarName FN))} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<apply_user>} {(DQ ($ Id.VSub_Number 1))})] spids: [9153 9175] ) ] else_action: [(C {<apply_primitive>} {(DQ ($ Id.VSub_Number 1))})] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: add_bindings body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<type>} {(DQ ($ Id.VSub_Number 1))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName r)} right: {<cons>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<local>} {<Id.Lit_VarLike 'pairs='> (DQ ($ Id.VSub_Number 1))} {<val>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(DQ ($ Id.VSub_DollarName pairs))} right: {($ Id.VSub_DollarName NIL)} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cdr> var_name: cdr bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName pairs)} ) right: <Id.Right_DollarBrace '}'> ) ) } right: {($ Id.VSub_DollarName NIL)} ) ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<lisp_eval>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cdr> var_name: cdr bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName pairs)} ) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Right_DollarBrace '}'> ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'val='> name:val) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [9291] ) ] redirects: [] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {(DQ ($ Id.VSub_DollarName e))} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) terminator: <Id.Op_Semi _> ) ] spids: [9297 9310] ) ] else_action: [] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<acons>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName pairs)} ) right: <Id.Right_DollarBrace '}'> ) ) } {(DQ ($ Id.VSub_DollarName val))} {(DQ ($ Id.VSub_DollarName current_env))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'current_env='> name: current_env ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [9341] ) ] redirects: [] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pairs='> name:pairs) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cdr> var_name: cdr bracket_op: (bracket_op.ArrayIndex expr: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cdr> var_name: cdr bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName pairs)} ) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [9347] ) ] redirects: [] ) ] ) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(DQ ($ Id.VSub_DollarName pairs))} right: {($ Id.VSub_DollarName NIL)} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<error>} {(DQ <'Bad bindings. Must be an even number of binding forms.'>)} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [9366 9381] ) ] else_action: [] redirects: [] ) ] spids: [9214 9227] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName r))} right: {<vector>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<count_array>} {(DQ ($ Id.VSub_Number 1))}) (C {<local>} {<i>} {<v>} {<Id.Lit_VarLike 'len='> (DQ ($ Id.VSub_DollarName r))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: (arith_expr.Binary op_id: Id.Arith_Percent left: ($ Id.Lit_ArithVarLike len) right: {<Id.Lit_Digits 2>} ) right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: ($ Id.Lit_ArithVarLike len) ) body: (command.DoGroup children: [ (C {<vget>} {(DQ ($ Id.VSub_Number 1))} { (word_part.ArithSub anode: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike i) ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'v='> name:v) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [9491] ) ] redirects: [] ) (C {<vget>} {(DQ ($ Id.VSub_Number 1))} { (word_part.ArithSub anode: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike i) ) ) } ) (C {<lisp_eval>} {(DQ ($ Id.VSub_DollarName r))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {(DQ ($ Id.VSub_DollarName e))} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) terminator: <Id.Op_Semi _> ) ] spids: [9517 9530] ) ] else_action: [] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<acons>} {(DQ ($ Id.VSub_DollarName v))} {(DQ ($ Id.VSub_DollarName r))} {(DQ ($ Id.VSub_DollarName current_env))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'current_env='> name: current_env ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [9556] ) ] redirects: [] ) ] ) ] ) redirects: [] ) ] spids: [9436 9454] ) ] else_action: [ (C {<error>} {(DQ <'Bad bindings. Must be an even number of binding forms.'>)}) ] redirects: [] ) ] spids: [9399 9414] ) ] else_action: [(C {<error>} {(DQ <'bindings not available.'>)})] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: do_ body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'body='> (DQ ($ Id.VSub_Number 1))} {<Id.Lit_VarLike 'result='> (DQ ($ Id.VSub_DollarName NIL))} ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(DQ ($ Id.VSub_DollarName body))} right: {($ Id.VSub_DollarName NIL)} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<lisp_eval>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName body)}) right: <Id.Right_DollarBrace '}'> ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'result='> name:result) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [9644] ) ] redirects: [] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'body='> name:body) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cdr> var_name: cdr bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName body)} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [9650] ) ] redirects: [] ) ] ) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<typeP>} {(DQ ($ Id.VSub_DollarName result))} {<cons>}) (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName result)} ) right: <Id.Right_DollarBrace '}'> ) ) } right: {(DQ ($ Id.VSub_DollarName FN))} ) redirects: [] ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<copy_list>} {(DQ ($ Id.VSub_DollarName result))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'environments['> name: environments index: {(DQ ($ Id.VSub_DollarName r))} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName current_env))} spids: [9706] ) ] redirects: [] ) ] spids: [9664 9696] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName result))} spids: [9723] ) ] redirects: [] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: eval_special body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'special='> (DQ ($ Id.VSub_Number 1))}) (C {<local>} {<Id.Lit_VarLike 'op='> (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_Number 1)}) right: <Id.Right_DollarBrace '}'> ) ) } ) (C {<local>} {<Id.Lit_VarLike 'args='> (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cdr> var_name: cdr bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_Number 1)}) right: <Id.Right_DollarBrace '}'> ) ) } ) (C {<local>} {<Id.Lit_VarLike 'arg0='> (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName args)}) right: <Id.Right_DollarBrace '}'> ) ) } ) (C {<local>} {<Id.Lit_VarLike 'arg1='> (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cdr> var_name: cdr bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName args)}) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Right_DollarBrace '}'> ) ) } ) (C {<local>} {<Id.Lit_VarLike 'arg2='> (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cdr> var_name: cdr bracket_op: (bracket_op.ArrayIndex expr: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cdr> var_name: cdr bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName args)} ) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Right_DollarBrace '}'> ) ) } ) (command.Case to_match: {($ Id.VSub_DollarName op)} arms: [ (case_arm pat_list: [{($ Id.VSub_DollarName QUOTE)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName arg0))} spids: [9839] ) ] redirects: [] ) ] spids: [9836 9837 9844 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName DO)}] action: [(C {<do_>} {($ Id.VSub_DollarName args)})] spids: [9847 9848 9854 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName FN)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {($ Id.VSub_DollarName special)} spids: [9860] ) ] redirects: [] ) ] spids: [9857 9858 9863 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName IF)}] action: [ (C {<lisp_eval>} {(DQ ($ Id.VSub_DollarName arg0))}) (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(DQ ($ Id.VSub_DollarName r))} right: {(DQ ($ Id.VSub_DollarName NIL))} ) redirects: [] ) (C {<lisp_eval>} {(DQ ($ Id.VSub_DollarName arg1))}) (C {<lisp_eval>} {(DQ ($ Id.VSub_DollarName arg2))}) ] ) ] spids: [9866 9867 9908 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName SET_BANG)}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name global_bindings> var_name: global_bindings bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName arg0)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<lisp_eval>} {(DQ ($ Id.VSub_DollarName arg1))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'global_bindings['> name: global_bindings index: {($ Id.VSub_DollarName arg0)} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [9944] ) ] redirects: [] ) ] ) ] spids: [9915 9933] ) ] else_action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<strip_tag>} {(DQ ($ Id.VSub_DollarName arg0))}) (C {<error>} { (DQ <'unbound variable: '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name symbols> var_name: symbols bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName r)}) right: <Id.Right_DollarBrace '}'> ) ) } ) ] ) ] redirects: [] ) ] spids: [9911 9912 9981 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName RECUR)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'frame_ptr='> name:frame_ptr) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name recur_frames> var_name: recur_frames bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_Number 1)}) right: <Id.Right_DollarBrace '}'> ) ) } spids: [9988] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'stack_ptr='> name:stack_ptr) op: assign_op.Equal rhs: {($ Id.VSub_DollarName frame_ptr)} spids: [9999] ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(DQ ($ Id.VSub_DollarName args))} right: {($ Id.VSub_DollarName NIL)} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<lisp_eval>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName args)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'stack['> name: stack index: { (word_part.ArithSub anode: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike stack_ptr) ) ) } ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [10033] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'args='> name:args) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cdr> var_name: cdr bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName args)} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [10051] ) ] redirects: [] ) ] ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'current_env='> name: current_env ) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name environments> var_name: environments bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_Number 1)}) right: <Id.Right_DollarBrace '}'> ) ) } spids: [10065] ) ] redirects: [] ) (C {<apply_user>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name recur_fns> var_name: recur_fns bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_Number 1)}) right: <Id.Right_DollarBrace '}'> ) ) } ) ] spids: [9984 9985 10088 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName DEF)}] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<lisp_eval>} {(DQ ($ Id.VSub_DollarName arg1))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'global_bindings['> name: global_bindings index: {(DQ ($ Id.VSub_DollarName arg0))} ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r)} spids: [10103] ) ] redirects: [] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName arg0))} spids: [10115] ) ] redirects: [] ) ] spids: [10091 10092 10121 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName BINDING)}] action: [ (C {<local>} {<Id.Lit_VarLike 'binding_body='> (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cdr> var_name: cdr bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName args)}) right: <Id.Right_DollarBrace '}'> ) ) } ) (C {<local>} {<Id.Lit_VarLike 'old_env='> (DQ ($ Id.VSub_DollarName current_env))}) (C {<add_bindings>} {($ Id.VSub_DollarName arg0)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(DQ ($ Id.VSub_DollarName e))} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<do_>} {($ Id.VSub_DollarName binding_body)})] spids: [10154 10167] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'current_env='> name: current_env ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName old_env))} spids: [10178] ) ] redirects: [] ) ] spids: [10124 10125 10184 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (C {<strip_tag>} {($ Id.VSub_DollarName op)}) (C {<error>} { (DQ <'eval_special: unknown form: '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name symbols> var_name: symbols bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName r)}) right: <Id.Right_DollarBrace '}'> ) ) } ) ] spids: [10187 10188 -1 10209] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: eval_function body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'op='> (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_Number 1)}) right: <Id.Right_DollarBrace '}'> ) ) } {<eval_op>} ) (C {<local>} {<Id.Lit_VarLike 'args='> (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name cdr> var_name: cdr bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_Number 1)}) right: <Id.Right_DollarBrace '}'> ) ) } ) (C {<local>} {<Id.Lit_VarLike 'old_frame_ptr='> ($ Id.VSub_DollarName frame_ptr)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'frame_ptr='> name:frame_ptr) op: assign_op.Equal rhs: {($ Id.VSub_DollarName stack_ptr)} spids: [10255] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<lisp_eval>} {(DQ ($ Id.VSub_DollarName op))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'eval_op='> name:eval_op) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [10267] ) ] redirects: [] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(DQ ($ Id.VSub_DollarName e))} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<protect>} {(DQ ($ Id.VSub_DollarName eval_op))}) (C {<eval_args>} {(DQ ($ Id.VSub_DollarName args))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(DQ ($ Id.VSub_DollarName e))} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<apply>} {(DQ ($ Id.VSub_DollarName eval_op))})] spids: [10303 10316] ) ] else_action: [] redirects: [] ) (C {<unprotect>}) ] spids: [10273 10286] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'stack_ptr='> name:stack_ptr) op: assign_op.Equal rhs: {($ Id.VSub_DollarName frame_ptr)} spids: [10335] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'frame_ptr='> name:frame_ptr) op: assign_op.Equal rhs: {($ Id.VSub_DollarName old_frame_ptr)} spids: [10339] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: lisp_eval body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<type>} {($ Id.VSub_Number 1)}) (command.Case to_match: {($ Id.VSub_DollarName r)} arms: [ (case_arm pat_list: [{<symbol>}] action: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_Number 1))} right: {(DQ ($ Id.VSub_DollarName NIL))} ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName NIL))} spids: [10384] ) ] redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Return return> ) ] ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_Number 1))} right: {(DQ ($ Id.VSub_DollarName T))} ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName T))} spids: [10410] ) ] redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Return return> ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<aget>} {(DQ ($ Id.VSub_Number 1))} {(DQ ($ Id.VSub_DollarName current_env))}) (command.ControlFlow token: <Id.ControlFlow_Return return> ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name global_bindings> var_name: global_bindings bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_Number 1)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name global_bindings> var_name: global_bindings bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_Number 1)} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [10456] ) ] redirects: [] ) ] spids: [10435 10453] ) ] else_action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<strip_tag>} {(DQ ($ Id.VSub_Number 1))}) (C {<error>} { (DQ <'unable to resolve '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name symbols> var_name: symbols bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName r)}) right: <Id.Right_DollarBrace '}'> ) ) } ) ] ) ] redirects: [] ) ] spids: [10364 10365 10494 -1] ) (case_arm pat_list: [{<cons>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name specials> var_name: specials bracket_op: (bracket_op.ArrayIndex expr: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name car> var_name: car bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_Number 1)} ) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Right_DollarBrace '}'> ) ) } ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<eval_special>} {(DQ ($ Id.VSub_Number 1))})] spids: [10501 10524] ) ] else_action: [(C {<eval_function>} {(DQ ($ Id.VSub_Number 1))})] redirects: [] ) ] spids: [10497 10498 10547 -1] ) (case_arm pat_list: [{<vector>}] action: [ (C {<local>} {<Id.Lit_VarLike 'old_frame_ptr='> ($ Id.VSub_DollarName frame_ptr)}) (C {<local>} {<Id.Lit_VarLike 'old_stack_ptr='> ($ Id.VSub_DollarName stack_ptr)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'frame_ptr='> name:frame_ptr) op: assign_op.Equal rhs: {($ Id.VSub_DollarName stack_ptr)} spids: [10566] ) ] redirects: [] ) (C {<eval_args>} {(DQ ($ Id.VSub_Number 1))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(DQ ($ Id.VSub_DollarName e))} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<vectify_args>})] spids: [10577 10590] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'stack_ptr='> name:stack_ptr) op: assign_op.Equal rhs: {($ Id.VSub_DollarName old_stack_ptr)} spids: [10599] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'frame_ptr='> name:frame_ptr) op: assign_op.Equal rhs: {($ Id.VSub_DollarName old_frame_ptr)} spids: [10603] ) ] redirects: [] ) ] spids: [10550 10551 10607 -1] ) (case_arm pat_list: [{<integer>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [10613] ) ] redirects: [] ) ] spids: [10610 10611 10616 -1] ) (case_arm pat_list: [{<string>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} spids: [10622] ) ] redirects: [] ) ] spids: [10619 10620 10627 -1] ) (case_arm pat_list: [{<keyword>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} spids: [10633] ) ] redirects: [] ) ] spids: [10630 10631 10638 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (C {<error>} {(DQ <'lisp_eval: unrecognized type'>)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [10641 10642 10657 -1] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: init_history body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<intern_symbol>} {(DQ (${ Id.VSub_Name pb_star) <1>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hist1='> name:hist1) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [10687] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<intern_symbol>} {(DQ (${ Id.VSub_Name pb_star) <2>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hist2='> name:hist2) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [10704] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<intern_symbol>} {(DQ (${ Id.VSub_Name pb_star) <3>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hist3='> name:hist3) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [10721] ) ] redirects: [] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'global_bindings['> name: global_bindings index: {(DQ ($ Id.VSub_DollarName hist1))} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName NIL))} spids: [10727] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'global_bindings['> name: global_bindings index: {(DQ ($ Id.VSub_DollarName hist2))} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName NIL))} spids: [10741] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'global_bindings['> name: global_bindings index: {(DQ ($ Id.VSub_DollarName hist3))} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName NIL))} spids: [10755] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: update_history body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'global_bindings['> name: global_bindings index: {(DQ ($ Id.VSub_DollarName hist3))} ) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name global_bindings> var_name: global_bindings bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName hist2)}) right: <Id.Right_DollarBrace '}'> ) ) } spids: [10778] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'global_bindings['> name: global_bindings index: {(DQ ($ Id.VSub_DollarName hist2))} ) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name global_bindings> var_name: global_bindings bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName hist1)}) right: <Id.Right_DollarBrace '}'> ) ) } spids: [10797] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'global_bindings['> name: global_bindings index: {(DQ ($ Id.VSub_DollarName hist1))} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName r))} spids: [10816] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: repl body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<init_history>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [(command.Sentence child:(C {<true>}) terminator:<Id.Op_Semi _>)] ) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'e='> name:e) op: assign_op.Equal rhs: (rhs_word.Empty) spids: [10850] ) ] redirects: [] ) (C {<lisp_read>}) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {(DQ ($ Id.VSub_DollarName e))} ) redirects: [] ) (command.Simple words: [ {<printf>} { (DQ <'read error: '> ($ Id.VSub_DollarName e) <Id.Lit_BadBackslash '\\'> <n> ) } ] redirects: [ (redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] more_env: [] do_fork: T ) ] ) (C {<protect>} {(DQ ($ Id.VSub_DollarName r))}) (C {<lisp_eval>} {(DQ ($ Id.VSub_DollarName r))}) (C {<update_history>}) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {(DQ ($ Id.VSub_DollarName e))} ) redirects: [] ) (command.Simple words: [ {<printf>} { (DQ <'eval error: '> ($ Id.VSub_DollarName e) <Id.Lit_BadBackslash '\\'> <n> ) } ] redirects: [ (redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] more_env: [] do_fork: T ) ] ) (C {<prn>} {(DQ ($ Id.VSub_DollarName r))}) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {(DQ ($ Id.VSub_DollarName e))} ) redirects: [] ) (command.Simple words: [ {<printf>} { (DQ <'print error: '> ($ Id.VSub_DollarName e) <Id.Lit_BadBackslash '\\'> <n> ) } ] redirects: [ (redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] more_env: [] do_fork: T ) ] ) (C {<unprotect>}) ] ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: eval_string body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'str='> (DQ ($ Id.VSub_Number 1))}) (command.Simple words: [{<lisp_read>}] redirects: [ (redir op: <Id.Redir_TLess '<<<'> loc: (redir_loc.Fd fd:0) arg: {(DQ <'(do '> ($ Id.VSub_DollarName str) <')'>)} ) ] more_env: [] do_fork: T ) (C {<protect>} {(DQ ($ Id.VSub_DollarName r))}) (C {<lisp_eval>} {(DQ ($ Id.VSub_DollarName r))}) (C {<unprotect>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_Star '*'))} {<Id.Lit_RBracket ']'>}) (C {<repl>}) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARGV='> name:ARGV) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Star '*'))} spids: [11032] ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Star '*'))} {<Id.Lit_RBracket ']'>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'param='> name:param) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [11054] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTARG='> name:OPTARG) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [11061] ) ] redirects: [] ) (command.Case to_match: {($ Id.VSub_DollarName param)} arms: [ (case_arm pat_list: [{<-e>} {<--eval>}] action: [ (command.Sentence child: (C {<eval_string>} {(DQ ($ Id.VSub_DollarName OPTARG))}) terminator: <Id.Op_Semi _> ) (C {<shift>}) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName r)} right: {($ Id.VSub_DollarName NIL)} ) redirects: [] ) (C {<prn>} {($ Id.VSub_DollarName r)}) ] ) ] spids: [11072 11075 11104 -1] ) (case_arm pat_list: [{<-l>} {<--load>}] action: [ (command.Sentence child: (C {<eval_file>} {(DQ ($ Id.VSub_DollarName OPTARG))}) terminator: <Id.Op_Semi _> ) (C {<shift>}) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName r)} right: {($ Id.VSub_DollarName NIL)} ) redirects: [] ) (C {<prn>} {($ Id.VSub_DollarName r)}) ] ) ] spids: [11107 11110 11139 -1] ) (case_arm pat_list: [{<-t>} {<--test>}] action: [] spids: [11142 11145 11147 -1] ) (case_arm pat_list: [{<-r>} {<--repl>}] action: [(C {<repl>})] spids: [11150 11153 11157 -1] ) (case_arm pat_list: [{<-> <Id.Lit_Star '*'>}] action: [(C {<usage>})] spids: [11160 11162 11166 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_f child: {(DQ ($ Id.VSub_DollarName param))} ) redirects: [] ) (C {<has_shebangP>} {(DQ ($ Id.VSub_DollarName param))}) (C {<eval_file>} {(DQ ($ Id.VSub_DollarName param))}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName r)} right: {($ Id.VSub_DollarName NIL)} ) redirects: [] ) (C {<prn>} {($ Id.VSub_DollarName r)}) ] ) ] spids: [11169 11170 11216 -1] ) ] redirects: [] ) ] ) redirects: [] ) ] )