(command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} { (braced_var_sub token: <Id.VSub_Name EVALUATOR__FUNCTIONS_BUILTIN_SH> suffix_op: (suffix_op.Unary tok:<Id.VTest_Plus '+'> arg_word:{<true>}) ) } {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (C {<declare>} {<-g>} {<Id.Lit_VarLike 'EVALUATOR__FUNCTIONS_BUILTIN_SH='> <true>}) (C {<.>} { (braced_var_sub token: <Id.VSub_Name BASH_SOURCE> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>} ) ) <'/common.sh'> } ) (C {<.>} { (braced_var_sub token: <Id.VSub_Name BASH_SOURCE> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>} ) ) <'/variables.sh'> } ) (C {<.>} { (braced_var_sub token: <Id.VSub_Name BASH_SOURCE> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>} ) ) <'/environment.sh'> } ) (command.ShFunction name: 'evaluator::functions::builtin::add' body: (BraceGroup 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: {(${ Id.VSub_Name EVALUATOR_DEBUG)} right: {<1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (C {<stderr>} {(DQ <'evaluator::functions::builtin::add '> (${ Id.VSub_At '@'))}) terminator: <Id.Op_Semi _> ) ] spids: [78 93] ) ] ) (C {<declare>} {<Id.Lit_VarLike 'env='> (DQ (${ Id.VSub_Number 1))}) (C {<declare>} {<Id.Lit_VarLike 'functionName='> (DQ (${ Id.VSub_Number 2))}) (C {<declare>} {<Id.Lit_VarLike 'argsToken='> (DQ (${ Id.VSub_Number 3))}) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <length> } {(DQ (${ Id.VSub_Name argsToken))} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.Op_Less left: {($ Id.VSub_DollarName '$RESULT')} right: {<2>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<stderr>} {(DQ <'add not valid with less than 2 arguments'>)}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [156 169] ) ] ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <first> } {(DQ (${ Id.VSub_Name argsToken))} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'headToken='> (DQ (${ Id.VSub_Name RESULT))}) (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} {(DQ (${ Id.VSub_Name RESULT))} ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} {(DQ (${ Id.VSub_Name RESULT))} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'result='> (DQ (${ Id.VSub_Name RESULT))}) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest> } {(DQ (${ Id.VSub_Name argsToken))} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'rest='> (DQ (${ Id.VSub_Name RESULT))}) (C {<declare>} {<currentToken>}) (C {<declare>} {<currentValue>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <isEmpty_c> } {(DQ (${ Id.VSub_Name rest))} ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <first> } {(DQ (${ Id.VSub_Name rest))} ) (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} {(DQ (${ Id.VSub_Name RESULT))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:currentToken) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [347] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <instanceOf> } {(DQ (${ Id.VSub_Name currentToken))} {<Integer>} ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type>} {(${ Id.VSub_Name currentToken)} ) (C {<stderr>} {(DQ <'Cannot add type ['> (${ Id.VSub_Name RESULT) <']'>)}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [355 376] ) ] ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} {(DQ (${ Id.VSub_Name currentToken))} ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:currentValue) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [421] ) ] ) (command.DParen child: (arith_expr.BinaryAssign op_id: Id.Arith_PlusEqual left: <Id.Lit_ArithVarLike result> right: {(${ Id.VSub_Name currentValue)} ) ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest> } {(DQ (${ Id.VSub_Name rest))} ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rest) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [458] ) ] ) ] ) ) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Integer>} {(DQ (${ Id.VSub_Name result))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESULT) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [484] ) ] ) ] ) ) (command.ShFunction name: 'evaluator::functions::builtin::subtract' body: (BraceGroup 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: {(${ Id.VSub_Name EVALUATOR_DEBUG)} right: {<1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (C {<stderr>} {(DQ <'evaluator::functions::builtin::subtract '> (${ Id.VSub_At '@'))} ) terminator: <Id.Op_Semi _> ) ] spids: [512 527] ) ] ) (C {<declare>} {<Id.Lit_VarLike 'env='> (DQ (${ Id.VSub_Number 1))}) (C {<declare>} {<Id.Lit_VarLike 'functionName='> (DQ (${ Id.VSub_Number 2))}) (C {<declare>} {<Id.Lit_VarLike 'argsToken='> (DQ (${ Id.VSub_Number 3))}) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <length> } {(DQ (${ Id.VSub_Name argsToken))} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.Op_Less left: {($ Id.VSub_DollarName '$RESULT')} right: {<2>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<stderr>} {(DQ <'add not valid with less than 2 arguments'>)}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [590 603] ) ] ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <first> } {(DQ (${ Id.VSub_Name argsToken))} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'headToken='> (DQ (${ Id.VSub_Name RESULT))}) (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} {(DQ (${ Id.VSub_Name RESULT))} ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} {(DQ (${ Id.VSub_Name RESULT))} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'result='> (DQ (${ Id.VSub_Name RESULT))}) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest> } {(DQ (${ Id.VSub_Name argsToken))} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'rest='> (DQ (${ Id.VSub_Name RESULT))}) (C {<declare>} {<currentToken>}) (C {<declare>} {<currentValue>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <isEmpty_c> } {(DQ (${ Id.VSub_Name rest))} ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <first> } {(DQ (${ Id.VSub_Name rest))} ) (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name envToken))} {(DQ (${ Id.VSub_Name RESULT))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:currentToken) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [781] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <instanceOf> } {(DQ (${ Id.VSub_Name currentToken))} {<Integer>} ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type>} {(${ Id.VSub_Name currentToken)} ) (C {<stderr>} {(DQ <'Cannot add type ['> (${ Id.VSub_Name RESULT) <']'>)}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [789 810] ) ] ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} {(DQ (${ Id.VSub_Name currentToken))} ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:currentValue) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [855] ) ] ) (command.DParen child: (arith_expr.BinaryAssign op_id: Id.Arith_MinusEqual left: <Id.Lit_ArithVarLike result> right: {(DQ (${ Id.VSub_Name currentValue))} ) ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest> } {(DQ (${ Id.VSub_Name rest))} ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rest) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [894] ) ] ) ] ) ) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Integer>} {(DQ (${ Id.VSub_Name result))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESULT) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [920] ) ] ) ] ) ) (command.ShFunction name: 'evaluator::functions::builtin::multiply' body: (BraceGroup 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: {(${ Id.VSub_Name EVALUATOR_DEBUG)} right: {<1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (C {<stderr>} {(DQ <'evaluator::functions::builtin::multiply '> (${ Id.VSub_At '@'))} ) terminator: <Id.Op_Semi _> ) ] spids: [948 963] ) ] ) (C {<declare>} {<Id.Lit_VarLike 'env='> (DQ (${ Id.VSub_Number 1))}) (C {<declare>} {<Id.Lit_VarLike 'functionName='> (DQ (${ Id.VSub_Number 2))}) (C {<declare>} {<Id.Lit_VarLike 'argsToken='> (DQ (${ Id.VSub_Number 3))}) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <length> } {(DQ (${ Id.VSub_Name argsToken))} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.Op_Less left: {($ Id.VSub_DollarName '$RESULT')} right: {<2>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<stderr>} {(DQ <'add not valid with less than 2 arguments'>)}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [1026 1039] ) ] ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <first> } {(DQ (${ Id.VSub_Name argsToken))} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'headToken='> (DQ (${ Id.VSub_Name RESULT))}) (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} {(DQ (${ Id.VSub_Name RESULT))} ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} {(DQ (${ Id.VSub_Name RESULT))} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'result='> (DQ (${ Id.VSub_Name RESULT))}) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest> } {(DQ (${ Id.VSub_Name argsToken))} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'rest='> (DQ (${ Id.VSub_Name RESULT))}) (C {<declare>} {<currentToken>}) (C {<declare>} {<currentValue>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <isEmpty_c> } {(DQ (${ Id.VSub_Name rest))} ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <first> } {(DQ (${ Id.VSub_Name rest))} ) (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name envToken))} {(DQ (${ Id.VSub_Name RESULT))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:currentToken) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [1217] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <instanceOf> } {(DQ (${ Id.VSub_Name currentToken))} {<Integer>} ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type>} {(${ Id.VSub_Name currentToken)} ) (C {<stderr>} {(DQ <'Cannot add type ['> (${ Id.VSub_Name RESULT) <']'>)}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [1225 1246] ) ] ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} {(DQ (${ Id.VSub_Name currentToken))} ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:currentValue) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [1291] ) ] ) (command.DParen child: (arith_expr.BinaryAssign op_id: Id.Arith_StarEqual left: <Id.Lit_ArithVarLike result> right: {(DQ (${ Id.VSub_Name currentValue))} ) ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest> } {(DQ (${ Id.VSub_Name rest))} ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rest) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [1330] ) ] ) ] ) ) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Integer>} {(DQ (${ Id.VSub_Name result))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESULT) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [1356] ) ] ) ] ) ) (command.ShFunction name: 'evaluator::functions::builtin::divide' body: (BraceGroup 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: {(${ Id.VSub_Name EVALUATOR_DEBUG)} right: {<1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (C {<stderr>} {(DQ <'evaluator::functions::builtin::divide '> (${ Id.VSub_At '@'))} ) terminator: <Id.Op_Semi _> ) ] spids: [1384 1399] ) ] ) (C {<declare>} {<Id.Lit_VarLike 'env='> (DQ (${ Id.VSub_Number 1))}) (C {<declare>} {<Id.Lit_VarLike 'functionName='> (DQ (${ Id.VSub_Number 2))}) (C {<declare>} {<Id.Lit_VarLike 'argsToken='> (DQ (${ Id.VSub_Number 3))}) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <length> } {(DQ (${ Id.VSub_Name argsToken))} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.Op_Less left: {($ Id.VSub_DollarName '$RESULT')} right: {<2>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<stderr>} {(DQ <'add not valid with less than 2 arguments'>)}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [1462 1475] ) ] ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <first> } {(DQ (${ Id.VSub_Name argsToken))} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'headToken='> (DQ (${ Id.VSub_Name RESULT))}) (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} {(DQ (${ Id.VSub_Name RESULT))} ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} {(DQ (${ Id.VSub_Name RESULT))} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'result='> (DQ (${ Id.VSub_Name RESULT))}) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest> } {(DQ (${ Id.VSub_Name argsToken))} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'rest='> (DQ (${ Id.VSub_Name RESULT))}) (C {<declare>} {<currentToken>}) (C {<declare>} {<currentValue>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <isEmpty_c> } {(DQ (${ Id.VSub_Name rest))} ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <first> } {(DQ (${ Id.VSub_Name rest))} ) (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name envToken))} {(DQ (${ Id.VSub_Name RESULT))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:currentToken) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [1653] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <instanceOf> } {(DQ (${ Id.VSub_Name currentToken))} {<Integer>} ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type>} {(${ Id.VSub_Name currentToken)} ) (C {<stderr>} {(DQ <'Cannot add type ['> (${ Id.VSub_Name RESULT) <']'>)}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [1661 1682] ) ] ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} {(DQ (${ Id.VSub_Name currentToken))} ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:currentValue) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [1727] ) ] ) (command.DParen child: (arith_expr.BinaryAssign op_id: Id.Arith_SlashEqual left: <Id.Lit_ArithVarLike result> right: {(DQ (${ Id.VSub_Name currentValue))} ) ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest> } {(DQ (${ Id.VSub_Name rest))} ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rest) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [1766] ) ] ) ] ) ) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Integer>} {(DQ (${ Id.VSub_Name result))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESULT) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [1792] ) ] ) ] ) ) (command.ShFunction name: 'evaluator::functions::builtin::equals' body: (BraceGroup 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: {(${ Id.VSub_Name EVALUATOR_DEBUG)} right: {<1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (C {<stderr>} {(DQ <'evaluator::functions::builtin::equals '> (${ Id.VSub_At '@'))} ) terminator: <Id.Op_Semi _> ) ] spids: [1820 1835] ) ] ) (C {<declare>} {<Id.Lit_VarLike 'env='> (DQ (${ Id.VSub_Number 1))}) (C {<declare>} {<Id.Lit_VarLike 'functionName='> (DQ (${ Id.VSub_Number 2))}) (C {<declare>} {<Id.Lit_VarLike 'argsToken='> (DQ (${ Id.VSub_Number 3))}) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <length> } {(DQ (${ Id.VSub_Name argsToken))} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.Op_Less left: {($ Id.VSub_DollarName '$RESULT')} right: {<2>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<stderr>} {(DQ <'add not valid with less than 2 arguments'>)}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [1898 1911] ) ] ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <first> } {(DQ (${ Id.VSub_Name argsToken))} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'headToken='> (DQ (${ Id.VSub_Name RESULT))}) (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} {(DQ (${ Id.VSub_Name RESULT))} ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} {(DQ (${ Id.VSub_Name RESULT))} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'first='> (DQ (${ Id.VSub_Name RESULT))}) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest> } {(DQ (${ Id.VSub_Name argsToken))} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'rest='> (DQ (${ Id.VSub_Name RESULT))}) (C {<declare>} {<currentToken>}) (C {<declare>} {<currentValue>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <isEmpty_c> } {(DQ (${ Id.VSub_Name rest))} ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <first> } {(DQ (${ Id.VSub_Name rest))} ) (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name envToken))} {(DQ (${ Id.VSub_Name RESULT))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:currentToken) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [2089] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <instanceOf> } {(DQ (${ Id.VSub_Name currentToken))} {<Integer>} ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type>} {(${ Id.VSub_Name currentToken)} ) (C {<stderr>} {(DQ <'Cannot add type ['> (${ Id.VSub_Name RESULT) <']'>)}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [2097 2118] ) ] ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} {(DQ (${ Id.VSub_Name currentToken))} ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:currentValue) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [2163] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_ne left: {($ Id.VSub_DollarName '$first')} right: {($ Id.VSub_DollarName '$currentValue')} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Boolean>} {<false>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESULT) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [2197] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> ) ] spids: [2171 2184] ) ] ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest> } {(DQ (${ Id.VSub_Name rest))} ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rest) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [2226] ) ] ) ] ) ) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Boolean>} {<true>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESULT) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [2248] ) ] ) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) ) (command.ShFunction name: 'evaluator::functions::builtin::greaterthan' body: (BraceGroup 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: {(${ Id.VSub_Name EVALUATOR_DEBUG)} right: {<1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (C {<stderr>} {(DQ <'evaluator::functions::builtin::equals '> (${ Id.VSub_At '@'))} ) terminator: <Id.Op_Semi _> ) ] spids: [2279 2294] ) ] ) (C {<declare>} {<Id.Lit_VarLike 'env='> (DQ (${ Id.VSub_Number 1))}) (C {<declare>} {<Id.Lit_VarLike 'functionName='> (DQ (${ Id.VSub_Number 2))}) (C {<declare>} {<Id.Lit_VarLike 'argsToken='> (DQ (${ Id.VSub_Number 3))}) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <length> } {(DQ (${ Id.VSub_Name argsToken))} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.Op_Less left: {($ Id.VSub_DollarName '$RESULT')} right: {<2>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<stderr>} {(DQ <'add not valid with less than 2 arguments'>)}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [2357 2370] ) ] ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <first> } {(DQ (${ Id.VSub_Name argsToken))} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'headToken='> (DQ (${ Id.VSub_Name RESULT))}) (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} {(DQ (${ Id.VSub_Name RESULT))} ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} {(DQ (${ Id.VSub_Name RESULT))} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'first='> (DQ (${ Id.VSub_Name RESULT))}) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest> } {(DQ (${ Id.VSub_Name argsToken))} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'rest='> (DQ (${ Id.VSub_Name RESULT))}) (C {<declare>} {<currentToken>}) (C {<declare>} {<currentValue>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <isEmpty_c> } {(DQ (${ Id.VSub_Name rest))} ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <first> } {(DQ (${ Id.VSub_Name rest))} ) (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name envToken))} {(DQ (${ Id.VSub_Name RESULT))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:currentToken) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [2548] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <instanceOf> } {(DQ (${ Id.VSub_Name currentToken))} {<Integer>} ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type>} {(${ Id.VSub_Name currentToken)} ) (C {<stderr>} {(DQ <'Cannot add type ['> (${ Id.VSub_Name RESULT) <']'>)}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [2556 2577] ) ] ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} {(DQ (${ Id.VSub_Name currentToken))} ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:currentValue) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [2622] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalNot child: (bool_expr.Binary op_id: Id.BoolBinary_gt left: {($ Id.VSub_DollarName '$first')} right: {($ Id.VSub_DollarName '$currentValue')} ) ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Boolean>} {<false>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESULT) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [2658] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> ) ] spids: [2630 2645] ) ] ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest> } {(DQ (${ Id.VSub_Name rest))} ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rest) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [2687] ) ] ) ] ) ) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Boolean>} {<true>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESULT) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [2709] ) ] ) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) ) (command.ShFunction name: 'evaluator::functions::builtin::lessthan' body: (BraceGroup 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: {(${ Id.VSub_Name EVALUATOR_DEBUG)} right: {<1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (C {<stderr>} {(DQ <'evaluator::functions::builtin::equals '> (${ Id.VSub_At '@'))} ) terminator: <Id.Op_Semi _> ) ] spids: [2740 2755] ) ] ) (C {<declare>} {<Id.Lit_VarLike 'env='> (DQ (${ Id.VSub_Number 1))}) (C {<declare>} {<Id.Lit_VarLike 'functionName='> (DQ (${ Id.VSub_Number 2))}) (C {<declare>} {<Id.Lit_VarLike 'argsToken='> (DQ (${ Id.VSub_Number 3))}) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <length> } {(DQ (${ Id.VSub_Name argsToken))} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.Op_Less left: {($ Id.VSub_DollarName '$RESULT')} right: {<2>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<stderr>} {(DQ <'add not valid with less than 2 arguments'>)}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [2818 2831] ) ] ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <first> } {(DQ (${ Id.VSub_Name argsToken))} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'headToken='> (DQ (${ Id.VSub_Name RESULT))}) (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} {(DQ (${ Id.VSub_Name RESULT))} ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} {(DQ (${ Id.VSub_Name RESULT))} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'first='> (DQ (${ Id.VSub_Name RESULT))}) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest> } {(DQ (${ Id.VSub_Name argsToken))} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'rest='> (DQ (${ Id.VSub_Name RESULT))}) (C {<declare>} {<currentToken>}) (C {<declare>} {<currentValue>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <isEmpty_c> } {(DQ (${ Id.VSub_Name rest))} ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <first> } {(DQ (${ Id.VSub_Name rest))} ) (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name envToken))} {(DQ (${ Id.VSub_Name RESULT))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:currentToken) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [3009] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <instanceOf> } {(DQ (${ Id.VSub_Name currentToken))} {<Integer>} ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type>} {(${ Id.VSub_Name currentToken)} ) (C {<stderr>} {(DQ <'Cannot add type ['> (${ Id.VSub_Name RESULT) <']'>)}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [3017 3038] ) ] ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} {(DQ (${ Id.VSub_Name currentToken))} ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:currentValue) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [3083] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalNot child: (bool_expr.Binary op_id: Id.BoolBinary_lt left: {($ Id.VSub_DollarName '$first')} right: {($ Id.VSub_DollarName '$currentValue')} ) ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Boolean>} {<false>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESULT) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [3119] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> ) ] spids: [3091 3106] ) ] ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest> } {(DQ (${ Id.VSub_Name rest))} ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rest) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [3148] ) ] ) ] ) ) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Boolean>} {<true>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESULT) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [3170] ) ] ) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) ) (command.ShFunction name: 'evaluator::functions::builtin::greaterthanorequal' body: (BraceGroup 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: {(${ Id.VSub_Name EVALUATOR_DEBUG)} right: {<1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (C {<stderr>} {(DQ <'evaluator::functions::builtin::equals '> (${ Id.VSub_At '@'))} ) terminator: <Id.Op_Semi _> ) ] spids: [3201 3216] ) ] ) (C {<declare>} {<Id.Lit_VarLike 'env='> (DQ (${ Id.VSub_Number 1))}) (C {<declare>} {<Id.Lit_VarLike 'functionName='> (DQ (${ Id.VSub_Number 2))}) (C {<declare>} {<Id.Lit_VarLike 'argsToken='> (DQ (${ Id.VSub_Number 3))}) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <length> } {(DQ (${ Id.VSub_Name argsToken))} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.Op_Less left: {($ Id.VSub_DollarName '$RESULT')} right: {<2>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<stderr>} {(DQ <'add not valid with less than 2 arguments'>)}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [3279 3292] ) ] ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <first> } {(DQ (${ Id.VSub_Name argsToken))} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'headToken='> (DQ (${ Id.VSub_Name RESULT))}) (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} {(DQ (${ Id.VSub_Name RESULT))} ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} {(DQ (${ Id.VSub_Name RESULT))} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'first='> (DQ (${ Id.VSub_Name RESULT))}) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest> } {(DQ (${ Id.VSub_Name argsToken))} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'rest='> (DQ (${ Id.VSub_Name RESULT))}) (C {<declare>} {<currentToken>}) (C {<declare>} {<currentValue>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <isEmpty_c> } {(DQ (${ Id.VSub_Name rest))} ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <first> } {(DQ (${ Id.VSub_Name rest))} ) (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name envToken))} {(DQ (${ Id.VSub_Name RESULT))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:currentToken) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [3470] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <instanceOf> } {(DQ (${ Id.VSub_Name currentToken))} {<Integer>} ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type>} {(${ Id.VSub_Name currentToken)} ) (C {<stderr>} {(DQ <'Cannot add type ['> (${ Id.VSub_Name RESULT) <']'>)}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [3478 3499] ) ] ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} {(DQ (${ Id.VSub_Name currentToken))} ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:currentValue) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [3544] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalNot child: (bool_expr.Binary op_id: Id.BoolBinary_ge left: {($ Id.VSub_DollarName '$first')} right: {($ Id.VSub_DollarName '$currentValue')} ) ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Boolean>} {<false>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESULT) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [3580] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> ) ] spids: [3552 3567] ) ] ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest> } {(DQ (${ Id.VSub_Name rest))} ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rest) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [3609] ) ] ) ] ) ) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Boolean>} {<true>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESULT) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [3631] ) ] ) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) ) (command.ShFunction name: 'evaluator::functions::builtin::lessthanorequal' body: (BraceGroup 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: {(${ Id.VSub_Name EVALUATOR_DEBUG)} right: {<1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (C {<stderr>} {(DQ <'evaluator::functions::builtin::equals '> (${ Id.VSub_At '@'))} ) terminator: <Id.Op_Semi _> ) ] spids: [3662 3677] ) ] ) (C {<declare>} {<Id.Lit_VarLike 'env='> (DQ (${ Id.VSub_Number 1))}) (C {<declare>} {<Id.Lit_VarLike 'functionName='> (DQ (${ Id.VSub_Number 2))}) (C {<declare>} {<Id.Lit_VarLike 'argsToken='> (DQ (${ Id.VSub_Number 3))}) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <length> } {(DQ (${ Id.VSub_Name argsToken))} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.Op_Less left: {($ Id.VSub_DollarName '$RESULT')} right: {<2>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<stderr>} {(DQ <'add not valid with less than 2 arguments'>)}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [3740 3753] ) ] ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <first> } {(DQ (${ Id.VSub_Name argsToken))} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'headToken='> (DQ (${ Id.VSub_Name RESULT))}) (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} {(DQ (${ Id.VSub_Name RESULT))} ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} {(DQ (${ Id.VSub_Name RESULT))} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'first='> (DQ (${ Id.VSub_Name RESULT))}) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest> } {(DQ (${ Id.VSub_Name argsToken))} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'rest='> (DQ (${ Id.VSub_Name RESULT))}) (C {<declare>} {<currentToken>}) (C {<declare>} {<currentValue>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <isEmpty_c> } {(DQ (${ Id.VSub_Name rest))} ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <first> } {(DQ (${ Id.VSub_Name rest))} ) (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name envToken))} {(DQ (${ Id.VSub_Name RESULT))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:currentToken) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [3931] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <instanceOf> } {(DQ (${ Id.VSub_Name currentToken))} {<Integer>} ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type>} {(${ Id.VSub_Name currentToken)} ) (C {<stderr>} {(DQ <'Cannot add type ['> (${ Id.VSub_Name RESULT) <']'>)}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [3939 3960] ) ] ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} {(DQ (${ Id.VSub_Name currentToken))} ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:currentValue) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [4005] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalNot child: (bool_expr.Binary op_id: Id.BoolBinary_le left: {($ Id.VSub_DollarName '$first')} right: {($ Id.VSub_DollarName '$currentValue')} ) ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Boolean>} {<false>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESULT) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [4041] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> ) ] spids: [4013 4028] ) ] ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest> } {(DQ (${ Id.VSub_Name rest))} ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rest) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [4070] ) ] ) ] ) ) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Boolean>} {<true>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESULT) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [4092] ) ] ) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) ) ] )