···33 $ cat > arith.sh << EOF
44 > i=7
55 > j=0
66- > case \$(( ( (j+=6*i)==0x2A)>0 ? 014 : 015 )) in
66+ > case \$(( ((j+=6*i)==0x2A)>0 ? 014 : 015 )) in
77 > ( 12 | 14 ) ;; # OK or BUG_NOOCTAL
88 > ( * ) exit ;;
99 > esac
+8-8
vendor/morbig.0.11.0/src/prelexer.mll
···433433| "$((" {
434434 debug ~rule:"arithmetic-exp" lexbuf current;
435435 let current = push_arith current in
436436- let current = next_double_rparen 1 current lexbuf in
436436+ let current = next_double_rparen true 1 current lexbuf in
437437 token current lexbuf
438438 }
439439···714714 lexing_error lexbuf (Printf.sprintf "Unclosed subshell (got '%c')" c)
715715 }
716716717717-and next_double_rparen dplevel current = parse
717717+and next_double_rparen in_arith dplevel current = parse
718718 | "((" {
719719 let current = push_string current "((" in
720720- next_double_rparen (dplevel+1) current lexbuf
720720+ next_double_rparen in_arith (if in_arith then dplevel else dplevel+1) current lexbuf
721721 }
722722-| "$((" {
722722+ | "$((" {
723723 debug ~rule:"arithmetic-exp" lexbuf current;
724724 let current = push_arith current in
725725- let current = next_double_rparen (dplevel+1) current lexbuf in
725725+ let current = next_double_rparen true (dplevel+1) current lexbuf in
726726 current
727727 }
728728 | '`' as op | "$" ( '(' as op) {
···731731 let current = subshell op escaping_level current lexbuf in
732732 let expected_closing_char = if op = '`' then '`' else ')' in
733733 let current = close_subshell expected_closing_char current lexbuf in
734734- next_double_rparen dplevel current lexbuf
734734+ next_double_rparen in_arith dplevel current lexbuf
735735 }
736736 | "))" {
737737 let current = pop_arith current in
738738 if dplevel = 1
739739 then current
740740- else if dplevel > 1 then next_double_rparen (dplevel-1) current lexbuf
740740+ else if dplevel > 1 then next_double_rparen false (dplevel-1) current lexbuf
741741 else assert false
742742 }
743743 | eof {
744744 lexing_error lexbuf "Unterminated arithmetic expression."
745745 }
746746 | _ as c {
747747- next_double_rparen dplevel (push_character current c) lexbuf
747747+ next_double_rparen in_arith dplevel (push_character current c) lexbuf
748748 }
749749750750(*specification: