%# -*- c -*- /* DO NOT EDIT THIS FILE DIRECTLY */ /********************************************************************** id.h - $Author$ created at: Sun Oct 19 21:12:51 2008 Copyright (C) 2007 Koichi Sasada **********************************************************************/ <% require 'optparse' op_id_offset = 128 token_op_ids = %w[ tDOT2 tDOT3 tUPLUS tUMINUS tPOW tDSTAR tCMP tLSHFT tRSHFT tLEQ tGEQ tEQ tEQQ tNEQ tMATCH tNMATCH tAREF tASET tCOLON2 tCOLON3 ] defs = File.join(File.dirname(File.dirname(erb.filename)), "defs/id.def") ids = eval(File.read(defs), binding, defs) types = ids.keys.grep(/^[A-Z]/) %> #ifndef RUBY_ID_H #define RUBY_ID_H #define ID_SCOPE_SHIFT 3 #define ID_SCOPE_MASK 0x07 #define ID_LOCAL 0x00 #define ID_INSTANCE 0x01 #define ID_GLOBAL 0x03 #define ID_ATTRSET 0x04 #define ID_CONST 0x05 #define ID_CLASS 0x06 #define ID_JUNK 0x07 #define ID_INTERNAL ID_JUNK #define symIFUNC ID2SYM(idIFUNC) #define symCFUNC ID2SYM(idCFUNC) % token_op_ids.each_with_index do |token, index| #define RUBY_TOKEN_<%=token[/\At(.+)\z/, 1]%> <%=op_id_offset + index%> % end #define RUBY_TOKEN(t) RUBY_TOKEN_##t enum ruby_method_ids { idDot2 = RUBY_TOKEN(DOT2), idDot3 = RUBY_TOKEN(DOT3), idUPlus = RUBY_TOKEN(UPLUS), idUMinus = RUBY_TOKEN(UMINUS), idPow = RUBY_TOKEN(POW), idCmp = RUBY_TOKEN(CMP), idPLUS = '+', idMINUS = '-', idMULT = '*', idDIV = '/', idMOD = '%', idLT = '<', idLTLT = RUBY_TOKEN(LSHFT), idLE = RUBY_TOKEN(LEQ), idGT = '>', idGE = RUBY_TOKEN(GEQ), idEq = RUBY_TOKEN(EQ), idEqq = RUBY_TOKEN(EQQ), idNeq = RUBY_TOKEN(NEQ), idNot = '!', idBackquote = '`', idEqTilde = RUBY_TOKEN(MATCH), idNeqTilde = RUBY_TOKEN(NMATCH), idAREF = RUBY_TOKEN(AREF), idASET = RUBY_TOKEN(ASET), tPRESERVED_ID_BEGIN = <%=op_id_offset + token_op_ids.size - 1%>, % ids[:preserved].each do |token| id<%=token%>, % end tPRESERVED_ID_END, % ids.values_at(*types).flatten.each do |token| t<%=token%>, % end % types.each do |type| % types = ids[type] or next % types.empty? and next #define TOKEN2<%=type%>ID(n) id##n = ((t##n<) % types.each do |token| TOKEN2<%=type%>ID(<%=token%>), % end % end tLAST_OP_ID = tPRESERVED_ID_END-1, idLAST_OP_ID = tLAST_OP_ID >> ID_SCOPE_SHIFT }; #endif /* RUBY_ID_H */