1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

id.c: generate

* common.mk, defs/id.def, template/id.c.tmpl: generate id.c as well as id.h.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38192 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2012-12-04 17:36:19 +00:00
parent 01380620bd
commit 28ee4c2966
7 changed files with 94 additions and 95 deletions

2
.gitignore vendored
View file

@ -56,7 +56,7 @@ y.tab.c
/encdb.h /encdb.h
/exts.mk /exts.mk
/goruby /goruby
/id.h /id.[ch]
/largefile.h /largefile.h
/lex.c /lex.c
/libruby*.* /libruby*.*

View file

@ -1,3 +1,7 @@
Wed Dec 5 02:36:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
* common.mk, defs/id.def, template/id.c.tmpl: generate id.c as well as id.h.
Wed Dec 5 00:56:21 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com> Wed Dec 5 00:56:21 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
* thread.c (rb_mutex_owned_p): new method that return current * thread.c (rb_mutex_owned_p): new method that return current

View file

@ -841,7 +841,7 @@ INSNS2VMOPT = --srcdir="$(srcdir)"
{$(VPATH)}vm.inc: $(srcdir)/template/vm.inc.tmpl {$(VPATH)}vm.inc: $(srcdir)/template/vm.inc.tmpl
srcs: {$(VPATH)}parse.c {$(VPATH)}lex.c {$(VPATH)}newline.c srcs-ext srcs-enc srcs: {$(VPATH)}parse.c {$(VPATH)}lex.c {$(VPATH)}newline.c {$(VPATH)}id.c srcs-ext srcs-enc
EXT_SRCS = $(srcdir)/ext/ripper/ripper.c $(srcdir)/ext/json/parser/parser.c EXT_SRCS = $(srcdir)/ext/ripper/ripper.c $(srcdir)/ext/json/parser/parser.c
@ -857,7 +857,12 @@ incs: $(INSNS) {$(VPATH)}node_name.inc {$(VPATH)}encdb.h {$(VPATH)}transdb.h {$(
insns: $(INSNS) insns: $(INSNS)
id.h: $(srcdir)/tool/generic_erb.rb $(srcdir)/template/id.h.tmpl id.h: $(srcdir)/tool/generic_erb.rb $(srcdir)/template/id.h.tmpl $(srcdir)/defs/id.def
$(ECHO) generating $@
$(Q) $(BASERUBY) $(srcdir)/tool/generic_erb.rb --output=$@ \
$(srcdir)/template/$@.tmpl
id.c: $(srcdir)/tool/generic_erb.rb $(srcdir)/template/id.c.tmpl $(srcdir)/defs/id.def
$(ECHO) generating $@ $(ECHO) generating $@
$(Q) $(BASERUBY) $(srcdir)/tool/generic_erb.rb --output=$@ \ $(Q) $(BASERUBY) $(srcdir)/tool/generic_erb.rb --output=$@ \
$(srcdir)/template/$@.tmpl $(srcdir)/template/$@.tmpl

50
defs/id.def Normal file
View file

@ -0,0 +1,50 @@
# -*- ruby -*-
predefined = %[\
intern
method_missing MethodMissing
length
size
gets
succ
each
lambda
send
__send__
initialize
initialize_copy
initialize_clone
initialize_dup
_ UScore
"/*NULL*/" NULL
empty?
respond_to? Respond_to
respond_to_missing? Respond_to_missing
<IFUNC>
<CFUNC>
core#set_method_alias
core#set_variable_alias
core#undef_method
core#define_method
core#define_singleton_method
core#set_postexe
core#hash_from_ary
core#hash_merge_ary
core#hash_merge_ptr
core#hash_merge_kwd
]
predefined_ids = {}
preserved_ids = []
attr_ids = []
predefined.each_line do |line|
next if /^#/ =~ line or (name, token = line.split; !name)
token ||= name
if /#/ =~ token
token = "_#{token.gsub(/\W+/, '_')}"
else
token = token.sub(/\?/, 'P').sub(/\A[a-z]/) {$&.upcase}
token.gsub!(/\W+/, "")
end
(/\A(?!\d)\w+\z/ =~ name ? attr_ids : preserved_ids) << token
predefined_ids[token] = name
end

56
id.c
View file

@ -1,56 +0,0 @@
/**********************************************************************
id.c -
$Author$
created at: Thu Jul 12 04:37:51 2007
Copyright (C) 2004-2007 Koichi Sasada
**********************************************************************/
#include "ruby/ruby.h"
#include "id.h"
static void
Init_id(void)
{
#undef rb_intern
#define rb_intern(str) rb_intern_const(str)
rb_encoding *enc = rb_usascii_encoding();
REGISTER_SYMID(idNULL, "");
REGISTER_SYMID(idIFUNC, "<IFUNC>");
REGISTER_SYMID(idCFUNC, "<CFUNC>");
REGISTER_SYMID(idRespond_to, "respond_to?");
REGISTER_SYMID(idRespond_to_missing, "respond_to_missing?");
REGISTER_SYMID(id_core_set_method_alias, "core#set_method_alias");
REGISTER_SYMID(id_core_set_variable_alias, "core#set_variable_alias");
REGISTER_SYMID(id_core_undef_method, "core#undef_method");
REGISTER_SYMID(id_core_define_method, "core#define_method");
REGISTER_SYMID(id_core_define_singleton_method, "core#define_singleton_method");
REGISTER_SYMID(id_core_set_postexe, "core#set_postexe");
REGISTER_SYMID(id_core_hash_from_ary, "core#hash_from_ary");
REGISTER_SYMID(id_core_hash_merge_ary, "core#hash_merge_ary");
REGISTER_SYMID(id_core_hash_merge_ptr, "core#hash_merge_ptr");
REGISTER_SYMID(id_core_hash_merge_kwd, "core#hash_merge_kwd");
REGISTER_SYMID(idEach, "each");
REGISTER_SYMID(idLength, "length");
REGISTER_SYMID(idSize, "size");
REGISTER_SYMID(idEmptyP, "empty?");
REGISTER_SYMID(idLambda, "lambda");
REGISTER_SYMID(idIntern, "intern");
REGISTER_SYMID(idGets, "gets");
REGISTER_SYMID(idSucc, "succ");
REGISTER_SYMID(idMethodMissing, "method_missing");
REGISTER_SYMID(idSend, "send");
REGISTER_SYMID(id__send__, "__send__");
REGISTER_SYMID(idInitialize, "initialize");
REGISTER_SYMID(idInitialize_copy, "initialize_copy");
REGISTER_SYMID(idInitialize_clone, "initialize_clone");
REGISTER_SYMID(idInitialize_dup, "initialize_dup");
REGISTER_SYMID(idUScore, "_");
}

28
template/id.c.tmpl Normal file
View file

@ -0,0 +1,28 @@
%# -*- c -*-
/* DO NOT EDIT THIS FILE DIRECTLY */
/**********************************************************************
id.c -
$Author$
created at: Wed Dec 5 02:36:10 2012
Copyright (C) 2004-2007 Koichi Sasada
**********************************************************************/
<%
predefined_ids = nil
defs = File.join(File.dirname(erb.filename), "../defs/id.def")
eval(File.read(defs), binding, defs)
%>
static void
Init_id(void)
{
#undef rb_intern
#define rb_intern(str) rb_intern_const(str)
rb_encoding *enc = rb_usascii_encoding();
% predefined_ids.each_pair do |token, name|
REGISTER_SYMID(id<%=token%>, "<%=name%>");
% end
}

View file

@ -15,48 +15,16 @@ require 'optparse'
op_id_offset = 128 op_id_offset = 128
attr_ids = %w[
Intern
MethodMissing
Length
Size
Gets
Succ
Each
Lambda
Send
__send__
Initialize
Initialize_copy
Initialize_clone
Initialize_dup
UScore
]
token_op_ids = %w[ token_op_ids = %w[
tDOT2 tDOT3 tUPLUS tUMINUS tPOW tDSTAR tCMP tLSHFT tRSHFT tDOT2 tDOT3 tUPLUS tUMINUS tPOW tDSTAR tCMP tLSHFT tRSHFT
tLEQ tGEQ tEQ tEQQ tNEQ tMATCH tNMATCH tAREF tASET tLEQ tGEQ tEQ tEQQ tNEQ tMATCH tNMATCH tAREF tASET
tCOLON2 tCOLON3 tCOLON2 tCOLON3
] ]
preserved_ids = %w[ preserved_ids = nil
NULL attr_ids = nil
EmptyP defs = File.join(File.dirname(erb.filename), "../defs/id.def")
Respond_to eval(File.read(defs), binding, defs)
Respond_to_missing
IFUNC
CFUNC
_core_set_method_alias
_core_set_variable_alias
_core_undef_method
_core_define_method
_core_define_singleton_method
_core_set_postexe
_core_hash_from_ary
_core_hash_merge_ary
_core_hash_merge_ptr
_core_hash_merge_kwd
]
%> %>
#ifndef RUBY_ID_H #ifndef RUBY_ID_H
#define RUBY_ID_H #define RUBY_ID_H