(List (Com {[LIT_CHARS source]} {[ComSub (Com {[LIT_CHARS dirname]} {[VarSub 0]})] [LIT_CHARS /reader.sh]} ) (Com {[LIT_CHARS source]} {[ComSub (Com {[LIT_CHARS dirname]} {[VarSub 0]})] [LIT_CHARS /printer.sh]} ) (FunctionDef READ [] (List (AndOr OP_AND_IF (Com {[LIT_DBRACKET_LIKE "["]} {[DQ [VarSub 1]]} {[LIT_DBRACKET_LIKE "]"]} ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('r', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS READLINE]} ) ) ) (Com {[LIT_CHARS READ_STR]} {[DQ [VarSub r]]} ) ) ) (FunctionDef EVAL [] (List (= scope= flags=0 words=[] bindings=[('ast', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('env', {[DQ [VarSub 2]]})]) (= scope= flags=0 words=[] bindings=[('r', {[SQ ]})]) (AndOr OP_AND_IF (DBracket {B1 UNARY_STRING_n {[DQ [VarSub __ERROR]]}}) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) (= scope= flags=0 words=[] bindings=[('r', {[DQ [VarSub ast]]})]) ) ) (FunctionDef PRINT [] (If (DBracket {B1 UNARY_STRING_n {[DQ [VarSub __ERROR]]}}) (List (Com {[LIT_CHARS _pr_str]} {[DQ [VarSub __ERROR]]} {[LIT_CHARS yes]} ) (= scope= flags=0 words=[] bindings=[('r', {[DQ [LIT_CHARS "Error: "][VarSub r]]})]) (= scope= flags=0 words=[] bindings=[('__ERROR', {[SQ ]})]) ) (ElseTrue) (Com {[LIT_CHARS _pr_str]} {[DQ [VarSub 1]]} {[LIT_CHARS yes]} ) ) ) (FunctionDef REP [] (List (Com {[LIT_CHARS READ]} {[DQ [VarSub 1]]} ) (Com {[LIT_CHARS EVAL]} {[DQ [VarSub r]]} ) (Com {[LIT_CHARS PRINT]} {[DQ [VarSub r]]} ) ) ) (While (Com {[LIT_CHARS true]} ) (List (AndOr OP_OR_IF (Com {[LIT_CHARS READLINE]} {[DQ [LIT_CHARS "user> "]]} ) (Com {[LIT_CHARS exit]} {[DQ [VarSub ?]]} ) ) (AndOr OP_AND_IF (DBracket {B1 UNARY_STRING_n {[DQ [VarSub r]]}}) (AndOr OP_AND_IF (Com {[LIT_CHARS REP]} {[DQ [VarSub r]]} ) (Com {[LIT_CHARS echo]} {[DQ [VarSub r]]} ) ) ) ) ) )