[erlang-bugs] erl_pp bug in r11b-2?

Ulf Wiger ulf@REDACTED
Thu Nov 23 22:03:15 CET 2006


When I switched from R11B to R11B-2 on my Ubuntu, I started getting
strange syntax errors in a file generated by leex.

The .xrl file, as well as the leex.[eh]rl files used are at
http://erlhive.svn.sourceforge.net/viewvc/erlhive/lib/erlhive/src/

After some tracing, I decided that the bug seems to be in erl_pp.erl. I
cut out the call to erl_pp that I picked up from tracing on leex, and ran
it in both R11 (stdlib-1.14.1) and R11B-2 (stdlib-1.14.2). Results follow:

uwiger@REDACTED:~/dev/leex_bug$ ~/lib/otp/r11b-2/bin/erl
Erlang (BEAM) emulator version 5.5.2 [source] [async-threads:0] [hipe]
[kernel-poll:false]

Eshell V5.5.2  (abort with ^G)
1> io:format("~s~n",
[erl_pp:exprs([{match,14,{var,14,'Atom'},{call,14,{atom,14,list_to_atom},[{var,14,'YYtext'}]}},{tuple,15,[{atom,15,token},{'case',15,{call,15,{atom,15,reserved_word},[{var,15,'Atom'}]},[{clause,16,[{atom,16,true}],[],[{tuple,16,[{var,16,'Atom'},{var,16,'YYline'}]}]},{clause,17,[{atom,17,false}],[],[{tuple,17,[{atom,17,atom},{var,17,'YYline'},
{var,17,'Atom'}]}]}]}]}],4,none)]).
Atom = list_to_atom(YYtext){token,
     case reserved_word(Atom) of
         true -> {Atom,YYline}; false -> {atom,YYline,Atom}
     end}
ok
2>
BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
       (v)ersion (k)ill (D)b-tables (d)istribution
a
uwiger@REDACTED:~/dev/leex_bug$ ~/lib/otp/r11b/bin/erl
Erlang (BEAM) emulator version 5.5.1 [source] [async-threads:0] [hipe]

Eshell V5.5.1  (abort with ^G)
1> io:format("~s~n",
[erl_pp:exprs([{match,14,{var,14,'Atom'},{call,14,{atom,14,list_to_atom},[{var,14,'YYtext'}]}},{tuple,15,[{atom,15,token},{'case',15,{call,15,{atom,15,reserved_word},[{var,15,'Atom'}]},[{clause,16,[{atom,16,true}],[],[{tuple,16,[{var,16,'Atom'},{var,16,'YYline'}]}]},{clause,17,[{atom,17,false}],[],[{tuple,17,[{atom,17,atom},{var,17,'YYline'},
{var,17,'Atom'}]}]}]}]}],4,none)]).
Atom = list_to_atom(YYtext),
    {token,
     case reserved_word(Atom) of
         true ->
             {Atom,YYline};
         false ->
             {atom,YYline,Atom}
     end}
ok


My debugging ended with running a diff on erl_pp between stdlib-1.4.1 and
stdlib-1.4.2, but the module seems to have been quite heavily modified.

BR,
Ulf W




More information about the erlang-bugs mailing list