// $Source$ // $Revision$ // $Date$ $use Class Convert; $use "rfp_list"; $use "reserved-c++"; // import $func? Reserved-Word?; $const Conv-Table = ('!' 'e') ('?' 'q') ('_' '') ('-' 'm') ('+' 'p') ('<' 'lt') ('>' 'gt') ('=' 'eq') ('*' 'a') ('/' 's') (' ' 'sp') ('\\' 'bs') ('|' 'bar') ('~' 'tilde') ('@' 'at') ('#' 'num') ('$' 'dollar') ('%' 'percnt') ('^' 'circ') ('&' 'amp') ('(' 'lpar') (')' 'rpar') ('[' 'lsqb') (']' 'rsqb') ('{' 'lcub') ('}' 'rcub') ('`' 'grave') ('\'' 'apos') ('\"' 'quot') (',' 'comma') ('.' 'period') (':' 'colon') (';' 'semi'); //$func Qualifier2Cpp s.qualifier = e.cpp-namespace; $func Qualifier2Cpp e = e; $func Chars2Cpp e.name = e.cpp-identifier; //$func A-Char2Cpp s.char = e.char-representation; $func A-Char2Cpp e = e; $func Char-To-Unicode s.char = e.unicode; Rfp2Cpp e.rfp-obj, { e.rfp-obj : \{ (VAR (e.name)) = ('_v_') e.name; (EVAR (e.name)) = ('_ve_') e.name; (VVAR (e.name)) = ('_vv_') e.name; (TVAR (e.name)) = ('_vt_') e.name; (SVAR (e.name)) = ('_vs_') e.name; (STATIC (e.name)) = ('_c_') e.name; (LABEL (e.name)) = () e.name; } :: (e.prefix) e.name = e.prefix ; e.rfp-obj : { (OBJ e.names) = e.names; (e.names) = e.names; e.names = e.names; } : e.qualifiers s.name = ; = /*empty*/; } :: e.ident, { = '_r_' e.ident; e.ident; }; Qualifier2Cpp s.qualifier = '::'; Chars2Cpp e.name = )>; A-Char2Cpp s.char, { = s.char; , # \{ s.char : '?'; } = s.char; &Conv-Table : e (s.char e.code) e = '_' e.code '_'; '_' '_'; }; Char-To-Unicode { // '\a' = '07'; '\b' = '08'; '\t' = '09'; '\n' = '0A'; '\v' = '0B'; '\f' = '0C'; '\r' = '0D'; }; $func? Qualifiers2Rfp e.qualifiers = e.words; $func? Chars2Rfp e.name = s.word; $func? Codes2Rfp e.codes = e.chars; Cpp2Rfp e.ident = : { '_r_' e.name = e.name; e.name = e.name; } : \{ '_ve_' e.name = (EVAR ()); '_vv_' e.name = (VVAR ()); '_vt_' e.name = (TVAR ()); '_vs_' e.name = (SVAR ()); e.name = ; }; Qualifiers2Rfp { e.qualifier '::' e.rest = ; e.name = ; }; Chars2Rfp e.name = >; Codes2Rfp { '_' e.code '_' e.rest = &Conv-Table : e (s.char e.code) e = s.char ; s.char e.rest = \{ ; , # \{ s.char : '?'; }; } = s.char ; /*empty*/ = /*empty*/; };