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:
parent
01380620bd
commit
28ee4c2966
7 changed files with 94 additions and 95 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -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*.*
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
50
defs/id.def
Normal 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
56
id.c
|
@ -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
28
template/id.c.tmpl
Normal 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
|
||||||
|
}
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue