let complain_soft () =
let ss, se = symbol_start (), symbol_end () in
let the_string = (Global.get Mathcommon.lexbuf).Lexing.lex_buffer in
if !_sl && !_se && !_pe then pe the_string;
if !_pe then begin
let snip = snippet (try subb the_string ss se with _ -> "BUG!") 15 in
if se > succ ss then begin
if !_se then Mathcommon.show_error ss se;
epf "{Parsing failed on pos %d-%d: `%s'}\n%!" ss (pred se) snip
end else begin
if !_se then Mathcommon.show_error ss (ss+1);
let nsnip = if snip = "" then "" else va ": `%s'" snip in
epf "{Parsing failed on pos %d%s}\n%!" ss nsnip
end;
begin match snip with
| "=" -> pe "{Perhaps you are trying to bind a variable with a reserved name, such as `pi', `log' etc.}"
| _ -> ()
end;
end