[m-rev.] diff: mangle erlang variable names
Peter Wang
wangp at students.csse.unimelb.edu.au
Fri Jun 22 12:10:30 AEST 2007
Estimated hours taken: 0.25
Branches: main
compiler/elds_to_erlang.m:
Mangle Erlang variable names by replacing weird characters with the
decimal ASCII code.
Index: compiler/elds_to_erlang.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/elds_to_erlang.m,v
retrieving revision 1.20
diff -u -r1.20 elds_to_erlang.m
--- compiler/elds_to_erlang.m 19 Jun 2007 01:10:52 -0000 1.20
+++ compiler/elds_to_erlang.m 22 Jun 2007 02:08:32 -0000
@@ -712,13 +712,21 @@
:- pred output_var_string(string::in, io::di, io::uo) is det.
output_var_string(String, !IO) :-
- % XXX this assumes all Mercury variable names are a subset of Erlang
- % variable names
- % However, the compiler can produce some illegal variable names
- % which we should mangle e.g. TypeClassInfo_for_+_8
- io.write_string(String, !IO),
+ % The compiler can produce some illegal variable names e.g.
+ % 'TypeClassInfo_for_+_8' so we need to mangle. We assume the first
+ % character is okay for Erlang (uppercase or underscore).
+ string.foldl(output_var_string_2, String, !IO),
space(!IO).
+:- pred output_var_string_2(char::in, io::di, io::uo) is det.
+
+output_var_string_2(C, !IO) :-
+ (if char.is_alnum_or_underscore(C) then
+ io.write_char(C, !IO)
+ else
+ io.write_int(char.to_int(C), !IO)
+ ).
+
:- pred output_pred_proc_id(module_info::in, pred_proc_id::in,
io::di, io::uo) is det.
--------------------------------------------------------------------------
mercury-reviews mailing list
Post messages to: mercury-reviews at csse.unimelb.edu.au
Administrative Queries: owner-mercury-reviews at csse.unimelb.edu.au
Subscriptions: mercury-reviews-request at csse.unimelb.edu.au
--------------------------------------------------------------------------
More information about the reviews
mailing list