(CommandList children: [ (FuncDef name: err_exit body: (BraceGroup children: [ (C {(print)} {(-u2)} {(-r)} {(SQ <Lit_EscapedChar "\\t">) (DQ (${ VSub_Name Command) ("[") ($ VSub_Number "$1") ("] ") (BracedVarSub token: <VSub_At "@"> suffix_op: (Slice begin:(ArithWord w:{(Lit_Digits 2)})) spids: [80 84] ) ) } ) (DParen child:(UnaryAssign op_id:Node_PostDPlus child:(LhsName name:Errors))) ] spids: [61] ) spids: [57 60] ) (C {(alias)} {(Lit_VarLike "err_exit=") (SQ <"err_exit $LINENO">)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:Command) op: Equal rhs: { (BracedVarSub token: <VSub_Number 0> suffix_op: (StringUnary op_id:VOp1_DPound arg_word:{("*") (Lit_Slash /)}) spids: [105 110] ) } spids: [104] ) ] spids: [104] ) (C {(integer)} {(Lit_VarLike "aware=") (0)} {(Lit_VarLike "contrary=") (0)} {(Lit_VarLike "Errors=") (0)} {(Lit_VarLike "ignorant=") (0)} ) (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tmp) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(mktemp)} {(-dt)})]) left_token: <Left_CommandSub "$("> spids: [128 132] ) } spids: [127] ) ] spids: [127] ) (BraceGroup children: [ (Sentence child: (C {(err_exit)} {(mktemp)} {(-dt)} {(failed)}) terminator: <Op_Semi ";"> ) (Sentence child:(C {(exit)} {(1)}) terminator:<Op_Semi ";">) ] spids: [136] ) ] op_id: Op_DPipe ) (C {(trap)} {(DQ ("cd /; rm -rf ") ($ VSub_Name "$tmp"))} {(EXIT)}) (FuncDef name: test_glob body: (BraceGroup children: [ (C {(typeset)} {(lineno)} {(expected)} {(drop)} {(arg)} {(got)} {(sep)} {(op)} {(val)} {(add)} {(del)} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:lineno) op: Equal rhs: {($ VSub_Number "$1")} spids: [194] ) ] spids: [194] ) (C {(shift)}) (If arms: [ (if_arm cond: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number "$1")} right: {(--) (Lit_Other "*")} ) ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:del) op: Equal rhs: { (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{(--)}) spids: [218 222] ) } spids: [217] ) ] spids: [217] ) (C {(shift)}) ] spids: [-1 215] ) ] spids: [-1 228] ) (If arms: [ (if_arm cond: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number "$1")} right: {(Lit_Other "+") (Lit_Other "+") (Lit_Other "*")} ) ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:add) op: Equal rhs: { (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{("++")}) spids: [249 253] ) } spids: [248] ) ] spids: [248] ) (C {(shift)}) ] spids: [-1 246] ) ] spids: [-1 259] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:expected) op: Equal rhs: {($ VSub_Number "$1")} spids: [262] ) ] spids: [262] ) (C {(shift)}) (If arms: [ (if_arm cond: [(DParen child:(ArithVarRef name:contrary))] action: [ (If arms: [ (if_arm cond: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name "$expected")} right: {(DQ ("<Beware> ")) (Lit_Other "*")} ) ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:expected) op: Equal rhs: { (BracedVarSub token: <VSub_Name expected> suffix_op: (StringUnary op_id: VOp1_Pound arg_word: {(DQ ("<Beware> "))} ) spids: [300 306] ) } spids: [299] ) ] spids: [299] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:expected) op: Equal rhs: {(DQ ($ VSub_Name "$expected") (" <Beware>"))} spids: [309] ) ] spids: [309] ) ] spids: [-1 297] ) ] spids: [-1 316] ) (If arms: [ (if_arm cond: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name "$expected")} right: {(Lit_Other "*") (DQ ("<aXb> <abd>")) (Lit_Other "*")} ) ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:expected) op: Equal rhs: { (BracedVarSub token: <VSub_Name expected> suffix_op: (PatSub pat: {(DQ ("<aXb> <abd>"))} replace: {(DQ ("<abd> <aXb>"))} do_all: False do_prefix: False do_suffix: False ) spids: [339 349] ) } spids: [338] ) ] spids: [338] ) ] spids: [-1 336] ) ] spids: [-1 352] ) ] spids: [-1 279] ) ] spids: [-1 355] ) (ForEach iter_name: arg do_arg_iter: True body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:got) op: Equal rhs: { (DQ ($ VSub_Name "$got") ($ VSub_Name "$sep") ("<") ($ VSub_Name "$arg") (">") ) } spids: [365] ) ] spids: [365] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:sep) op: Equal rhs: {(DQ (" "))} spids: [375] ) ] spids: [375] ) ] spids: [363 381] ) spids: [-1 -1] ) (If arms: [ (if_arm cond: [ (DParen child: (ArithBinary op_id: Arith_DAmp left: (ArithVarRef name:ignorant) right: (ArithVarRef name:aware) ) ) ] action: [ (If arms: [ (if_arm cond: [(DBracket expr:(WordTest w:{($ VSub_Name "$del")}))] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:got) op: Equal rhs: {(DQ ("<") ($ VSub_Name "$del") ("> ") ($ VSub_Name "$got"))} spids: [411] ) ] spids: [411] ) ] spids: [-1 409] ) ] spids: [-1 420] ) (If arms: [ (if_arm cond: [(DBracket expr:(WordTest w:{($ VSub_Name "$add")}))] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:expected) op: Equal rhs: { (DQ ("<") ($ VSub_Name "$add") ("> ") ($ VSub_Name "$expected")) } spids: [434] ) ] spids: [434] ) ] spids: [-1 432] ) ] spids: [-1 443] ) ] spids: [-1 398] ) ] spids: [-1 446] ) (If arms: [ (if_arm cond: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: {($ VSub_Name "$got")} right: {(DQ ($ VSub_Name "$expected"))} ) ) ] action: [ (C {(SQ <err_exit>)} {($ VSub_Name "$lineno")} { (DQ ("glob -- expected '") ($ VSub_Name "$expected") ("', got '") ($ VSub_Name "$got") ("'") ) } ) ] spids: [-1 464] ) ] spids: [-1 481] ) ] spids: [168] ) spids: [164 167] ) (C {(alias)} {(Lit_VarLike "test_glob=") (SQ <"test_glob $LINENO">)}) (FuncDef name: test_case body: (BraceGroup children: [ (C {(typeset)} {(lineno)} {(expected)} {(subject)} {(pattern)} {(got)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:lineno) op: Equal rhs: {($ VSub_Number "$1")} spids: [513] ) (assign_pair lhs: (LhsName name:expected) op: Equal rhs: {($ VSub_Number "$2")} spids: [516] ) (assign_pair lhs: (LhsName name:subject) op: Equal rhs: {($ VSub_Number "$3")} spids: [519] ) (assign_pair lhs: (LhsName name:pattern) op: Equal rhs: {($ VSub_Number "$4")} spids: [522] ) ] spids: [513] ) (C {(eval)} { (DQ ("\n") ("\t\tcase ") ($ VSub_Name "$subject") (" in\n") ("\t\t") ($ VSub_Name "$pattern") (")\tgot='<match>' ;;\n") ("\t\t*)\t\tgot='<nomatch>' ;;\n") ("\t\tesac\n") ("\t") ) } ) (If arms: [ (if_arm cond: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: {($ VSub_Name "$got")} right: {(DQ ($ VSub_Name "$expected"))} ) ) ] action: [ (C {(SQ <err_exit>)} {($ VSub_Name "$lineno")} { (DQ ("case ") ($ VSub_Name "$subject") (" in ") ($ VSub_Name "$pattern") (") -- expected '") ($ VSub_Name "$expected") ("', got '") ($ VSub_Name "$got") ("'") ) } ) ] spids: [-1 557] ) ] spids: [-1 578] ) ] spids: [497] ) spids: [493 496] ) (C {(alias)} {(Lit_VarLike "test_case=") (SQ <"test_case $LINENO">)}) (C {(unset)} {(undefined)}) (AndOr children: [ (C {(cd)} {($ VSub_Name "$tmp")}) (BraceGroup children: [ (Sentence child: (C {(err_exit)} {(DQ ("cd ") ($ VSub_Name "$tmp") (" failed"))}) terminator: <Op_Semi ";"> ) (Sentence child:(C {(exit)} {(1)}) terminator:<Op_Semi ";">) ] spids: [601] ) ] op_id: Op_DPipe ) (C {(export)} {(Lit_VarLike "LC_COLLATE=") (C)}) (C {(touch)} {(B)} {(b)}) (C {(set)} {(--)} {(Lit_Other "*")}) (Case to_match: {($ VSub_Star "$*")} arms: [ (case_arm pat_list: [{(SQ <"b B">)}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:contrary) op:Equal rhs:{(1)} spids:[648])] spids: [648] ) ] spids: [644 646 651 -1] ) (case_arm pat_list: [{(b)} {(B)}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:ignorant) op:Equal rhs:{(1)} spids:[658])] spids: [658] ) ] spids: [653 656 661 -1] ) ] spids: [637 641 663] ) (C {(set)} {(--)} { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [{(/bin/sh)} {(-c)} {(SQ <"echo [a-c]">)}] more_env: [(env_pair name:LC_ALL val:{(C)} spids:[670])] ) ] ) left_token: <Left_CommandSub "$("> spids: [669 680] ) } ) (Case to_match: {($ VSub_Star "$*")} arms: [ (case_arm pat_list: [{(B)}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:aware) op:Equal rhs:{(1)} spids:[691])] spids: [691] ) ] spids: [688 689 694 -1] ) ] spids: [682 686 696] ) (C {(rm)} {(-rf)} {(Lit_Other "*")}) (C {(touch)} {(a)} {(b)} {(c)} {(d)} {(abc)} {(abd)} {(abe)} {(bb)} {(bcd)} {(ca)} {(cb)} {(dd)} {(de)} {(Beware)} ) (C {(mkdir)} {(bdir)}) (C {(test_glob)} {(SQ <"<a> <abc> <abd> <abe> <X*>">)} {(a) (Lit_Other "*")} {(X) (Lit_Other "*")}) (C {(test_glob)} {(SQ <"<a> <abc> <abd> <abe>">)} {(EscapedLiteralPart token:<Lit_EscapedChar "\\a">) (Lit_Other "*")} ) (If arms: [ (if_arm cond: [ (Subshell child: (C {(set)} {(--nullglob)}) redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[772])] spids: [764 770] ) ] action: [ (C {(set)} {(--nullglob)}) (C {(test_glob)} {(SQ <"<a> <abc> <abd> <abe>">)} {(a) (Lit_Other "*")} {(X) (Lit_Other "*")}) (C {(set)} {(--nonullglob)}) ] spids: [-1 775] ) ] spids: [-1 802] ) (If arms: [ (if_arm cond: [ (Subshell child: (C {(set)} {(--failglob)}) redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[815])] spids: [807 813] ) ] action: [ (C {(set)} {(--failglob)}) (C {(mkdir)} {(tmp)}) (C {(touch)} {(tmp/l1)} {(tmp/l2)} {(tmp/l3)}) (C {(test_glob)} {(SQ )} {(tmp/l) (Lit_Other "[") (12) (Lit_Other "]")} {(tmp/) (Lit_Other "*") (4)} {(tmp/) (Lit_Other "*") (3)} ) (C {(test_glob)} {(SQ )} {(tmp/l) (Lit_Other "[") (12) (Lit_Other "]")} {(tmp/) (Lit_Other "*") (4)} {(tmp/) (Lit_Other "*") (3)} ) (C {(rm)} {(-r)} {(tmp)}) (C {(set)} {(--nofailglob)}) ] spids: [-1 818] ) ] spids: [-1 891] ) (C {(test_glob)} {(SQ <"<bdir/>">)} {(b) (Lit_Other "*") (/)}) (C {(test_glob)} {(SQ <"<*>">)} {(EscapedLiteralPart token:<Lit_EscapedChar "\\*">)}) (C {(test_glob)} {(SQ <"<a*>">)} {(SQ <"a*">)}) (C {(test_glob)} {(SQ <"<a*>">)} {(a) (EscapedLiteralPart token:<Lit_EscapedChar "\\*">)}) (C {(test_glob)} {(SQ <"<c> <ca> <cb> <a*> <*q*>">)} {(c) (Lit_Other "*")} {(a) (EscapedLiteralPart token:<Lit_EscapedChar "\\*">)} {(Lit_Other "*") (q) (Lit_Other "*")} ) (C {(test_glob)} {(SQ <"<**>">)} {(DQ ("*")) (Lit_Other "*")}) (C {(test_glob)} {(SQ <"<**>">)} {(EscapedLiteralPart token:<Lit_EscapedChar "\\*">) (Lit_Other "*")} ) (C {(test_glob)} {(SQ <"<\\.\\./*/>">)} { (DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\.">) (EscapedLiteralPart token:<Lit_EscapedChar "\\.">) ("/*/") ) } ) (C {(test_glob)} {(SQ <"<s/\\..*//>">)} {(SQ <"s/\\..*//">)}) (C {(test_glob)} {(SQ <"</^root:/{s/^[!:]*:[!:]*:\\([!:]*\\).*$/\\1/>">)} { (DQ ("/^root:/{s/^[!:]*:[!:]*:") (EscapedLiteralPart token:<Lit_EscapedChar "\\(">) ("[!:]*") (EscapedLiteralPart token:<Lit_EscapedChar "\\)">) (".*") ) (SQ <"$">) (DQ (/) (EscapedLiteralPart token:<Lit_EscapedChar "\\1">) (/)) } ) (C {(test_glob)} {(SQ <"<abc> <abd> <abe> <bb> <cb>">)} {(Lit_Other "[") (a-c) (Lit_Other "]") (b) (Lit_Other "*")} ) (C {(test_glob)} {(Lit_Other "+") (Lit_Other "+") (Beware)} {(SQ <"<abd> <abe> <bb> <bcd> <bdir> <ca> <cb> <dd> <de>">)} {(Lit_Other "[") (a-y) (Lit_Other "]") (Lit_Other "*") (Lit_Other "[") (KW_Bang "!") (c) (Lit_Other "]") } ) (C {(test_glob)} {(SQ <"<abd> <abe>">)} {(a) (Lit_Other "*") (Lit_Other "[") (KW_Bang "!") (c) (Lit_Other "]")} ) (C {(touch)} {(a-b)} {(aXb)}) (C {(test_glob)} {(SQ <"<a-b> <aXb>">)} {(a) (Lit_Other "[") (X-) (Lit_Other "]") (b)}) (C {(touch)} {(.x)} {(.y)}) (C {(test_glob)} {(--Beware)} {(SQ <"<Beware> <d> <dd> <de>">)} {(Lit_Other "[") (KW_Bang "!") (a-c) (Lit_Other "]") (Lit_Other "*")} ) (If arms: [ (if_arm cond: [ (SimpleCommand words: [{(mkdir)} {(a) (EscapedLiteralPart token:<Lit_EscapedChar "\\*">) (b)}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[1106])] ) ] action: [ (C {(touch)} {(a) (EscapedLiteralPart token:<Lit_EscapedChar "\\*">) (b/ooo)}) (C {(test_glob)} {(SQ <"<a*b/ooo>">)} {(a) (EscapedLiteralPart token:<Lit_EscapedChar "\\*">) (b/) (Lit_Other "*")} ) (C {(test_glob)} {(SQ <"<a*b/ooo>">)} {(a) (EscapedLiteralPart token:<Lit_EscapedChar "\\*">) (Lit_Other "?") (/) (Lit_Other "*") } ) (C {(test_case)} {(SQ <"<match>">)} {(SQ <"!7">)} {(SQ <"*\\!*">)}) (C {(test_case)} {(SQ <"<match>">)} {(SQ <"r.*">)} {(SQ <"*.\\*">)}) (C {(test_glob)} {(SQ <"<abc>">)} {(a) (Lit_Other "[") (b) (Lit_Other "]") (c)}) (C {(test_glob)} {(SQ <"<abc>">)} {(a) (Lit_Other "[") (DQ (b)) (Lit_Other "]") (c)}) (C {(test_glob)} {(SQ <"<abc>">)} {(a) (Lit_Other "[") (EscapedLiteralPart token:<Lit_EscapedChar "\\b">) (Lit_Other "]") (c) } ) (C {(test_glob)} {(SQ <"<abc>">)} {(a) (Lit_Other "?") (c)}) (C {(test_case)} {(SQ <"<match>">)} {(SQ <abc>)} {(SQ <"a\"b\"c">)}) (C {(test_case)} {(SQ <"<match>">)} {(SQ <abc>)} {(SQ <"a*c">)}) (C {(test_case)} {(SQ <"<nomatch>">)} {(SQ <abc>)} {(SQ <"\"a?c\"">)}) (C {(test_case)} {(SQ <"<nomatch>">)} {(SQ <abc>)} {(SQ <"a\\*c">)}) (C {(test_case)} {(SQ <"<nomatch>">)} {(SQ <abc>)} {(SQ <"a\\[b]c">)}) (C {(test_case)} {(SQ <"<match>">)} {(SQ <"\"$undefined\"">)} {(SQ <"\"\"">)}) (C {(test_case)} {(SQ <"<match>">)} {(SQ <abc>)} {(SQ <"a[\"\\b\"]c">)}) (C {(rm)} {(-rf)} {(mkdir)} {(a) (EscapedLiteralPart token:<Lit_EscapedChar "\\*">) (b)}) ] spids: [-1 1109] ) ] spids: [-1 1343] ) (C {(mkdir)} {(man)}) (C {(mkdir)} {(man/man1)}) (C {(touch)} {(man/man1/sh.1)}) (C {(test_glob)} {(SQ <"<man/man1/sh.1>">)} {(Lit_Other "*") (/man) (Lit_Other "*") (/sh.) (Lit_Other "*")} ) (C {(test_glob)} {(SQ <"<man/man1/sh.1>">)} { (CommandSubPart command_list: (CommandList children: [(C {(echo)} {(Lit_Other "*") (/man) (Lit_Other "*") (/sh.) (Lit_Other "*")})] ) left_token: <Left_CommandSub "$("> spids: [1377 1385] ) } ) (C {(test_glob)} {(SQ <"<man/man1/sh.1>">)} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(echo)} {(Lit_Other "*") (/man) (Lit_Other "*") (/sh.) (Lit_Other "*")})] ) left_token: <Left_CommandSub "$("> spids: [1394 1402] ) ) } ) (C {(test_case)} {(SQ <"<match>">)} {(SQ <abc>)} {(SQ <"a***c">)}) (C {(test_case)} {(SQ <"<match>">)} {(SQ <abc>)} {(SQ <"a*****?c">)}) (C {(test_case)} {(SQ <"<match>">)} {(SQ <abc>)} {(SQ <"?*****??">)}) (C {(test_case)} {(SQ <"<match>">)} {(SQ <abc>)} {(SQ <"*****??">)}) (C {(test_case)} {(SQ <"<match>">)} {(SQ <abc>)} {(SQ <"*****??c">)}) (C {(test_case)} {(SQ <"<match>">)} {(SQ <abc>)} {(SQ <"?*****?c">)}) (C {(test_case)} {(SQ <"<match>">)} {(SQ <abc>)} {(SQ <"?***?****c">)}) (C {(test_case)} {(SQ <"<match>">)} {(SQ <abc>)} {(SQ <"?***?****?">)}) (C {(test_case)} {(SQ <"<match>">)} {(SQ <abc>)} {(SQ <"?***?****">)}) (C {(test_case)} {(SQ <"<match>">)} {(SQ <abc>)} {(SQ <"*******c">)}) (C {(test_case)} {(SQ <"<match>">)} {(SQ <abc>)} {(SQ <"*******?">)}) (C {(test_case)} {(SQ <"<match>">)} {(SQ <abcdecdhjk>)} {(SQ <"a*cd**?**??k">)}) (C {(test_case)} {(SQ <"<match>">)} {(SQ <abcdecdhjk>)} {(SQ <"a**?**cd**?**??k">)}) (C {(test_case)} {(SQ <"<match>">)} {(SQ <abcdecdhjk>)} {(SQ <"a**?**cd**?**??k***">)}) (C {(test_case)} {(SQ <"<match>">)} {(SQ <abcdecdhjk>)} {(SQ <"a**?**cd**?**??***k">)}) (C {(test_case)} {(SQ <"<match>">)} {(SQ <abcdecdhjk>)} {(SQ <"a**?**cd**?**??***k**">)}) (C {(test_case)} {(SQ <"<match>">)} {(SQ <abcdecdhjk>)} {(SQ <"a****c**?**??*****">)}) (C {(test_case)} {(SQ <"<match>">)} {(DQ ("'-'"))} {(SQ <"[-abc]">)}) (C {(test_case)} {(SQ <"<match>">)} {(DQ ("'-'"))} {(SQ <"[abc-]">)}) (C {(test_case)} {(SQ <"<match>">)} {(DQ ("'") (EscapedLiteralPart token:<Lit_EscapedChar "\\\\">) ("'"))} {(SQ <"\\\\">)} ) (C {(test_case)} {(SQ <"<match>">)} {(DQ ("'") (EscapedLiteralPart token:<Lit_EscapedChar "\\\\">) ("'"))} {(SQ <"[\\\\]">)} ) (C {(test_case)} {(SQ <"<match>">)} {(DQ ("'") (EscapedLiteralPart token:<Lit_EscapedChar "\\\\">) ("'"))} {(DQ ("'") (EscapedLiteralPart token:<Lit_EscapedChar "\\\\">) ("'"))} ) (C {(test_case)} {(SQ <"<match>">)} {(DQ ("'['"))} {(SQ <"[[]">)}) (C {(test_case)} {(SQ <"<match>">)} {(SQ <"[">)} {(SQ <"[[]">)}) (C {(test_case)} {(SQ <"<match>">)} {(DQ ("'['"))} {(SQ <"[">)}) (C {(test_case)} {(SQ <"<match>">)} {(SQ <"[">)} {(SQ <"[">)}) (C {(test_case)} {(SQ <"<match>">)} {(DQ ("'[abc'"))} {(DQ ("'['*"))}) (C {(test_case)} {(SQ <"<nomatch>">)} {(DQ ("'[abc'"))} {(SQ <"[*">)}) (C {(test_case)} {(SQ <"<match>">)} {(SQ <"[abc">)} {(DQ ("'['*"))}) (C {(test_case)} {(SQ <"<nomatch>">)} {(SQ <"[abc">)} {(SQ <"[*">)}) (C {(test_case)} {(SQ <"<match>">)} {(SQ <abd>)} {(DQ ("a[b/c]d"))}) (C {(test_case)} {(SQ <"<match>">)} {(SQ <a/d>)} {(DQ ("a[b/c]d"))}) (C {(test_case)} {(SQ <"<match>">)} {(SQ <acd>)} {(DQ ("a[b/c]d"))}) (C {(test_case)} {(SQ <"<match>">)} {(DQ ("']'"))} {(SQ <"[]]">)}) (C {(test_case)} {(SQ <"<match>">)} {(DQ ("'-'"))} {(SQ <"[]-]">)}) (C {(test_case)} {(SQ <"<match>">)} {(SQ <p>)} {(SQ <"[a-\\z]">)}) (C {(test_case)} {(SQ <"<match>">)} {(SQ <"\"/tmp\"">)} {(SQ <"[/\\\\]*">)}) (C {(test_case)} {(SQ <"<nomatch>">)} {(SQ <abc>)} {(SQ <"??**********?****?">)}) (C {(test_case)} {(SQ <"<nomatch>">)} {(SQ <abc>)} {(SQ <"??**********?****c">)}) (C {(test_case)} {(SQ <"<nomatch>">)} {(SQ <abc>)} {(SQ <"?************c****?****">)}) (C {(test_case)} {(SQ <"<nomatch>">)} {(SQ <abc>)} {(SQ <"*c*?**">)}) (C {(test_case)} {(SQ <"<nomatch>">)} {(SQ <abc>)} {(SQ <"a*****c*?**">)}) (C {(test_case)} {(SQ <"<nomatch>">)} {(SQ <abc>)} {(SQ <"a********???*******">)}) (C {(test_case)} {(SQ <"<nomatch>">)} {(DQ ("'a'"))} {(SQ <"[]">)}) (C {(test_case)} {(SQ <"<nomatch>">)} {(SQ <a>)} {(SQ <"[]">)}) (C {(test_case)} {(SQ <"<nomatch>">)} {(DQ ("'['"))} {(SQ <"[abc">)}) (C {(test_case)} {(SQ <"<nomatch>">)} {(SQ <"[">)} {(SQ <"[abc">)}) (C {(test_glob)} {(Lit_Other "+") (Lit_Other "+") (Beware)} {(SQ <"<b> <bb> <bcd> <bdir>">)} {(b) (Lit_Other "*")} ) (C {(test_glob)} {(SQ <"<Beware> <b> <bb> <bcd> <bdir>">)} {(Lit_Other "[") (bB) (Lit_Other "]") (Lit_Other "*")} ) (If arms: [ (if_arm cond: [ (Subshell child: (C {(set)} {(--nocaseglob)}) redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[2108])] spids: [2100 2106] ) ] action: [ (C {(set)} {(--nocaseglob)}) (C {(test_glob)} {(SQ <"<Beware> <b> <bb> <bcd> <bdir>">)} {(b) (Lit_Other "*")}) (C {(test_glob)} {(SQ <"<Beware> <b> <bb> <bcd> <bdir>">)} {(Lit_Other "[") (b) (Lit_Other "]") (Lit_Other "*")} ) (C {(test_glob)} {(SQ <"<Beware> <b> <bb> <bcd> <bdir>">)} {(Lit_Other "[") (bB) (Lit_Other "]") (Lit_Other "*")} ) (C {(set)} {(--nonocaseglob)}) ] spids: [-1 2111] ) ] spids: [-1 2159] ) (If arms: [ (if_arm cond: [ (Subshell child: (C {(set)} {(-f)}) redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[2172])] spids: [2164 2170] ) ] action: [ (C {(set)} {(-f)}) (C {(test_glob)} {(SQ <"<*>">)} {(Lit_Other "*")}) (C {(set)} {(Lit_Other "+") (f)}) ] spids: [-1 2175] ) ] spids: [-1 2199] ) (If arms: [ (if_arm cond: [ (Subshell child: (C {(set)} {(--noglob)}) redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[2212])] spids: [2204 2210] ) ] action: [ (C {(set)} {(--noglob)}) (C {(test_glob)} {(SQ <"<*>">)} {(Lit_Other "*")}) (C {(set)} {(--glob)}) ] spids: [-1 2215] ) ] spids: [-1 2238] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:FIGNORE) op:Equal rhs:{(SQ <"@(.*|*)">)} spids:[2241])] spids: [2241] ) (C {(test_glob)} {(SQ <"<*>">)} {(Lit_Other "*")}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FIGNORE) op: Equal rhs: {(SQ <"@(.*|*c|*e|?)">)} spids: [2255] ) ] spids: [2255] ) (C {(test_glob)} {(SQ <"<a-b> <aXb> <abd> <bb> <bcd> <bdir> <ca> <cb> <dd> <man>">)} {(Lit_Other "*")} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FIGNORE) op: Equal rhs: {(SQ <"@(.*|*b|*d|?)">)} spids: [2269] ) ] spids: [2269] ) (C {(test_glob)} {(SQ <"<Beware> <abc> <abe> <bdir> <ca> <de> <man>">)} {(Lit_Other "*")}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:FIGNORE) op:Equal rhs:{(SQ )} spids:[2283])] spids: [2283] ) (C {(test_glob)} {(SQ <"<man/man1/sh.1>">)} {(Lit_Other "*") (/man) (Lit_Other "*") (/sh.) (Lit_Other "*")} ) (C {(unset)} {(FIGNORE)}) (C {(test_glob)} {(SQ <"<bb> <ca> <cb> <dd> <de>">)} {(Lit_Other "?") (Lit_Other "?")}) (C {(test_glob)} {(SQ <"<man/man1/sh.1>">)} {(Lit_Other "*") (/man) (Lit_Other "*") (/sh.) (Lit_Other "*")} ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:GLOBIGNORE) op:Equal rhs:{(SQ <".*:*">)} spids:[2324])] spids: [2324] ) (C {(set)} {(--)} {(Lit_Other "*")}) (If arms: [ (if_arm cond: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number "$1")} right: {(SQ <"*">)} ) ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GLOBIGNORE) op: Equal rhs: {(SQ <".*:*c:*e:?">)} spids: [2352] ) ] spids: [2352] ) (C {(test_glob)} {(SQ <"<>">)} {(Lit_Other "*")}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GLOBIGNORE) op: Equal rhs: {(SQ <".*:*b:*d:?">)} spids: [2368] ) ] spids: [2368] ) (C {(test_glob)} {(SQ <"<>">)} {(Lit_Other "*")}) (C {(unset)} {(GLOBIGNORE)}) (C {(test_glob)} {(SQ <"<>">)} {(Lit_Other "*")}) (C {(test_glob)} {(SQ <"<man/man1/sh.1>">)} {(Lit_Other "*") (/man) (Lit_Other "*") (/sh.) (Lit_Other "*")} ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:GLOBIGNORE) op:Equal rhs:{(SQ )} spids:[2412])] spids: [2412] ) (C {(test_glob)} {(SQ <"<man/man1/sh.1>">)} {(Lit_Other "*") (/man) (Lit_Other "*") (/sh.) (Lit_Other "*")} ) ] spids: [-1 2349] ) ] spids: [-1 2427] ) (C {(unset)} {(GLOBIGNORE)}) (FuncDef name: test_sub body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:x) op: Equal rhs: {(SQ <"${subject">) ($ VSub_Number "$2") (SQ <"}">)} spids: [2441] ) ] spids: [2441] ) (C {(eval)} {(Lit_VarLike "g=") ($ VSub_Name "$x")}) (If arms: [ (if_arm cond: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: {(DQ ($ VSub_Name "$g"))} right: {(DQ ($ VSub_Number "$3"))} ) ) ] action: [ (C {(SQ <err_exit>)} {($ VSub_Number "$1")} {(Lit_VarLike "subject=") (DQ ("'") ($ VSub_Name "$subject") ("' ") ($ VSub_Name "$x") (" failed, expected '") ($ VSub_Number "$3") ("', got '") ($ VSub_Name "$g") ("'") ) } ) ] spids: [-1 2474] ) ] spids: [-1 2496] ) ] spids: [2438] ) spids: [2434 2437] ) (C {(alias)} {(Lit_VarLike "test_sub=") (SQ <"test_sub $LINENO">)}) (C {(set)} {(--noglob)} {(--nobraceexpand)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:subject) op: Equal rhs: {(SQ <"A regular expressions test">)} spids: [2515] ) ] spids: [2515] ) (C {(test_sub)} {(SQ <"/e/#">)} {(SQ <"A r#gular expressions test">)}) (C {(test_sub)} {(SQ <"//e/#">)} {(SQ <"A r#gular #xpr#ssions t#st">)}) (C {(test_sub)} {(SQ <"/[^e]/#">)} {(SQ <"# regular expressions test">)}) (C {(test_sub)} {(SQ <"//[^e]/#">)} {(SQ <"###e######e###e########e##">)}) (C {(test_sub)} {(SQ <"/+(e)/#">)} {(SQ <"A r#gular expressions test">)}) (C {(test_sub)} {(SQ <"//+(e)/#">)} {(SQ <"A r#gular #xpr#ssions t#st">)}) (C {(test_sub)} {(SQ <"/@-(e)/#">)} {(SQ <"A r#gular expressions test">)}) (C {(test_sub)} {(SQ <"//@-(e)/#">)} {(SQ <"A r#gular #xpr#ssions t#st">)}) (C {(test_sub)} {(SQ <"/?(e)/#">)} {(SQ <"#A regular expressions test">)}) (C {(test_sub)} {(SQ <"//?(e)/#">)} {(SQ <"#A# #r#g#u#l#a#r# #x#p#r#s#s#i#o#n#s# #t#s#t#">)}) (C {(test_sub)} {(SQ <"/*(e)/#">)} {(SQ <"#A regular expressions test">)}) (C {(test_sub)} {(SQ <"//*(e)/#">)} {(SQ <"#A# #r#g#u#l#a#r# #x#p#r#s#s#i#o#n#s# #t#s#t#">)}) (C {(test_sub)} {(SQ <"//@(e)/[\\1]">)} {(SQ <"A r[e]gular [e]xpr[e]ssions t[e]st">)}) (C {(test_sub)} {(SQ <"//@-(e)/[\\1]">)} {(SQ <"A r[e]gular [e]xpr[e]ssions t[e]st">)}) (C {(test_sub)} {(SQ <"//+(e)/[\\1]">)} {(SQ <"A r[e]gular [e]xpr[e]ssions t[e]st">)}) (C {(test_sub)} {(SQ <"//+-(e)/[\\1]">)} {(SQ <"A r[e]gular [e]xpr[e]ssions t[e]st">)}) (C {(test_sub)} {(SQ <"//@(+(e))/[\\1]">)} {(SQ <"A r[e]gular [e]xpr[e]ssions t[e]st">)}) (C {(test_sub)} {(SQ <"//@(+-(e))/[\\1]">)} {(SQ <"A r[e]gular [e]xpr[e]ssions t[e]st">)}) (C {(test_sub)} {(SQ <"//-(e)/#">)} {(SQ <"A regular expressions test">)}) (C {(test_sub)} {(SQ <"//--(e)/#">)} {(SQ <"A regular expressions test">)}) (C {(test_sub)} {(SQ <"//?(e)/[\\1]">)} {(SQ <"[]A[] []r[e]g[]u[]l[]a[]r[] [e]x[]p[]r[e]s[]s[]i[]o[]n[]s[] []t[e]s[]t[]">)} ) (C {(test_sub)} {(SQ <"//{0,1}(e)/[\\1]">)} {(SQ <"[]A[] []r[e]g[]u[]l[]a[]r[] [e]x[]p[]r[e]s[]s[]i[]o[]n[]s[] []t[e]s[]t[]">)} ) (C {(test_sub)} {(SQ <"//*(e)/[\\1]">)} {(SQ <"[]A[] []r[e]g[]u[]l[]a[]r[] [e]x[]p[]r[e]s[]s[]i[]o[]n[]s[] []t[e]s[]t[]">)} ) (C {(test_sub)} {(SQ <"//{0,}(e)/[\\1]">)} {(SQ <"[]A[] []r[e]g[]u[]l[]a[]r[] [e]x[]p[]r[e]s[]s[]i[]o[]n[]s[] []t[e]s[]t[]">)} ) (C {(test_sub)} {(SQ <"//@(?(e))/[\\1]">)} {(SQ <"[]A[] []r[e]g[]u[]l[]a[]r[] [e]x[]p[]r[e]s[]s[]i[]o[]n[]s[] []t[e]s[]t[]">)} ) (C {(test_sub)} {(SQ <"//@({0,1}(e))/[\\1]">)} {(SQ <"[]A[] []r[e]g[]u[]l[]a[]r[] [e]x[]p[]r[e]s[]s[]i[]o[]n[]s[] []t[e]s[]t[]">)} ) (C {(test_sub)} {(SQ <"//@(*(e))/[\\1]">)} {(SQ <"[]A[] []r[e]g[]u[]l[]a[]r[] [e]x[]p[]r[e]s[]s[]i[]o[]n[]s[] []t[e]s[]t[]">)} ) (C {(test_sub)} {(SQ <"//@({0,}(e))/[\\1]">)} {(SQ <"[]A[] []r[e]g[]u[]l[]a[]r[] [e]x[]p[]r[e]s[]s[]i[]o[]n[]s[] []t[e]s[]t[]">)} ) (C {(test_sub)} {(SQ <"/?-(e)/#">)} {(SQ <"#A regular expressions test">)}) (C {(test_sub)} {(SQ <"/@(?-(e))/[\\1]">)} {(SQ <"[]A regular expressions test">)}) (C {(test_sub)} {(SQ <"/!(e)/#">)} {(SQ <"#">)}) (C {(test_sub)} {(SQ <"//!(e)/#">)} {(SQ <"#">)}) (C {(test_sub)} {(SQ <"/@(!(e))/[\\1]">)} {(SQ <"[A regular expressions test]">)}) (C {(test_sub)} {(SQ <"//@(!(e))/[\\1]">)} {(SQ <"[A regular expressions test]">)}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:subject) op:Equal rhs:{(SQ <e>)} spids:[2862])] spids: [2862] ) (C {(test_sub)} {(SQ <"/!(e)/#">)} {(SQ <"#e">)}) (C {(test_sub)} {(SQ <"//!(e)/#">)} {(SQ <"#e#">)}) (C {(test_sub)} {(SQ <"/!(e)/[\\1]">)} {(SQ <"[]e">)}) (C {(test_sub)} {(SQ <"//!(e)/[\\1]">)} {(SQ <"[]e[]">)}) (C {(test_sub)} {(SQ <"/@(!(e))/[\\1]">)} {(SQ <"[]e">)}) (C {(test_sub)} {(SQ <"//@(!(e))/[\\1]">)} {(SQ <"[]e[]">)}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:subject) op:Equal rhs:{(SQ <a>)} spids:[2929])] spids: [2929] ) (C {(test_sub)} {(SQ <"/@(!(a))/[\\1]">)} {(SQ <"[]a">)}) (C {(test_sub)} {(SQ <"//@(!(a))/[\\1]">)} {(SQ <"[]a[]">)}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:subject) op:Equal rhs:{(SQ <aha>)} spids:[2956])] spids: [2956] ) (C {(test_sub)} {(SQ <"/@(!(a))/[\\1]">)} {(SQ <"[aha]">)}) (C {(test_sub)} {(SQ <"//@(!(a))/[\\1]">)} {(SQ <"[aha]">)}) (C {(test_sub)} {(SQ <"/@(!(aha))/[\\1]">)} {(SQ <"[ah]a">)}) (C {(test_sub)} {(SQ <"//@(!(aha))/[\\1]">)} {(SQ <"[ah][a]">)}) (C {(exit)} { (ArithSubPart anode: (TernaryOp cond: (ArithBinary op_id: Arith_Less left: (ArithVarRef name:Errors) right: (ArithWord w:{(Lit_Digits 125)}) ) true_expr: (ArithVarRef name:Errors) false_expr: (ArithWord w:{(Lit_Digits 125)}) ) spids: [3005 3014] ) } ) ] )