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
|
||||
/exts.mk
|
||||
/goruby
|
||||
/id.h
|
||||
/id.[ch]
|
||||
/largefile.h
|
||||
/lex.c
|
||||
/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>
|
||||
|
||||
* 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
|
||||
|
||||
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
|
||||
|
||||
|
@ -857,7 +857,12 @@ incs: $(INSNS) {$(VPATH)}node_name.inc {$(VPATH)}encdb.h {$(VPATH)}transdb.h {$(
|
|||
|
||||
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 $@
|
||||
$(Q) $(BASERUBY) $(srcdir)/tool/generic_erb.rb --output=$@ \
|
||||
$(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
|
||||
|
||||
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[
|
||||
tDOT2 tDOT3 tUPLUS tUMINUS tPOW tDSTAR tCMP tLSHFT tRSHFT
|
||||
tLEQ tGEQ tEQ tEQQ tNEQ tMATCH tNMATCH tAREF tASET
|
||||
tCOLON2 tCOLON3
|
||||
]
|
||||
|
||||
preserved_ids = %w[
|
||||
NULL
|
||||
EmptyP
|
||||
Respond_to
|
||||
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
|
||||
]
|
||||
preserved_ids = nil
|
||||
attr_ids = nil
|
||||
defs = File.join(File.dirname(erb.filename), "../defs/id.def")
|
||||
eval(File.read(defs), binding, defs)
|
||||
%>
|
||||
#ifndef RUBY_ID_H
|
||||
#define RUBY_ID_H
|
||||
|
|
Loading…
Reference in a new issue