summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-10-19 12:12:53 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-10-19 12:12:53 +0000
commitde85d6e92ec7b7642ad02ca93cb6d5cdf75ac481 (patch)
tree604a3d78d3322e8a13b853cc1778acc20132a45d
parentb014f1bc021702ee2800752aa37bfe7848118f2a (diff)
* common.mk (srcs): removed ID_H_TARGET.
* tool/generic_erb.rb: always overwrites if no if-change option. * template/id.h.tmpl: shows which token differs. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19847 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog8
-rw-r--r--common.mk2
-rw-r--r--id.h98
-rw-r--r--template/id.h.tmpl117
-rw-r--r--tool/generic_erb.rb12
5 files changed, 196 insertions, 41 deletions
diff --git a/ChangeLog b/ChangeLog
index 81f32b04fc..b1275986c5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Sun Oct 19 21:12:51 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (srcs): removed ID_H_TARGET.
+
+ * tool/generic_erb.rb: always overwrites if no if-change option.
+
+ * template/id.h.tmpl: shows which token differs.
+
Sun Oct 19 18:15:15 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
* enc/trans/single_byte.trans: adding WINDOWS-wwww encodings
diff --git a/common.mk b/common.mk
index cb7f315687..eb0f02d37c 100644
--- a/common.mk
+++ b/common.mk
@@ -625,7 +625,7 @@ vmtc.inc: $(srcdir)/template/vmtc.inc.tmpl
vm.inc: $(srcdir)/template/vm.inc.tmpl
-srcs: {$(VPATH)}parse.c $(ID_H_TARGET) {$(VPATH)}lex.c {$(VPATH)}newline.c $(srcdir)/ext/ripper/ripper.c srcs-enc
+srcs: {$(VPATH)}parse.c {$(VPATH)}lex.c {$(VPATH)}newline.c $(srcdir)/ext/ripper/ripper.c srcs-enc
srcs-enc: $(ENC_MK)
$(MAKE) -f $(ENC_MK) RUBY="$(MINIRUBY)" MINIRUBY="$(MINIRUBY)" $(MFLAGS) srcs
diff --git a/id.h b/id.h
index 576ab8cf6e..37c73ed0e8 100644
--- a/id.h
+++ b/id.h
@@ -1,3 +1,4 @@
+/* DO NOT EDIT THIS FILE DIRECTLY */
/**********************************************************************
id.h -
@@ -64,39 +65,70 @@ enum ruby_method_ids {
id_core_define_singleton_method = 374,
id_core_set_postexe = 375,
tLAST_TOKEN = 376,
-#elif tUPLUS != 321 || \
- tUMINUS != 322 || \
- tPOW != 323 || \
- tCMP != 324 || \
- tEQ != 325 || \
- tEQQ != 326 || \
- tNEQ != 327 || \
- tGEQ != 328 || \
- tLEQ != 329 || \
- tANDOP != 330 || \
- tOROP != 331 || \
- tMATCH != 332 || \
- tNMATCH != 333 || \
- tDOT2 != 334 || \
- tDOT3 != 335 || \
- tAREF != 336 || \
- tASET != 337 || \
- tLSHFT != 338 || \
- tRSHFT != 339 || \
- tLAMBDA != 352 || \
- idNULL != 365 || \
- idRespond_to != 366 || \
- idIFUNC != 367 || \
- idCFUNC != 368 || \
- idThrowState != 369 || \
- id_core_set_method_alias != 370 || \
- id_core_set_variable_alias != 371 || \
- id_core_undef_method != 372 || \
- id_core_define_method != 373 || \
- id_core_define_singleton_method != 374 || \
- id_core_set_postexe != 375 || \
- tLAST_TOKEN != 376
-#error id.h is out of date.
+#elif tUPLUS != 321
+#error tUPLUS differs
+#elif tUMINUS != 322
+#error tUMINUS differs
+#elif tPOW != 323
+#error tPOW differs
+#elif tCMP != 324
+#error tCMP differs
+#elif tEQ != 325
+#error tEQ differs
+#elif tEQQ != 326
+#error tEQQ differs
+#elif tNEQ != 327
+#error tNEQ differs
+#elif tGEQ != 328
+#error tGEQ differs
+#elif tLEQ != 329
+#error tLEQ differs
+#elif tANDOP != 330
+#error tANDOP differs
+#elif tOROP != 331
+#error tOROP differs
+#elif tMATCH != 332
+#error tMATCH differs
+#elif tNMATCH != 333
+#error tNMATCH differs
+#elif tDOT2 != 334
+#error tDOT2 differs
+#elif tDOT3 != 335
+#error tDOT3 differs
+#elif tAREF != 336
+#error tAREF differs
+#elif tASET != 337
+#error tASET differs
+#elif tLSHFT != 338
+#error tLSHFT differs
+#elif tRSHFT != 339
+#error tRSHFT differs
+#elif tLAMBDA != 352
+#error tLAMBDA differs
+#elif idNULL != 365
+#error idNULL differs
+#elif idRespond_to != 366
+#error idRespond_to differs
+#elif idIFUNC != 367
+#error idIFUNC differs
+#elif idCFUNC != 368
+#error idCFUNC differs
+#elif idThrowState != 369
+#error idThrowState differs
+#elif id_core_set_method_alias != 370
+#error id_core_set_method_alias differs
+#elif id_core_set_variable_alias != 371
+#error id_core_set_variable_alias differs
+#elif id_core_undef_method != 372
+#error id_core_undef_method differs
+#elif id_core_define_method != 373
+#error id_core_define_method differs
+#elif id_core_define_singleton_method != 374
+#error id_core_define_singleton_method differs
+#elif id_core_set_postexe != 375
+#error id_core_set_postexe differs
+#elif tLAST_TOKEN != 376
+#error tLAST_TOKEN differs
#endif
idPLUS = '+',
idMINUS = '-',
diff --git a/template/id.h.tmpl b/template/id.h.tmpl
new file mode 100644
index 0000000000..84ca313a24
--- /dev/null
+++ b/template/id.h.tmpl
@@ -0,0 +1,117 @@
+%# -*- 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'
+vpath = ["."]
+input = nil
+opt = OptionParser.new do |o|
+ o.on('-v', '--vpath=DIR') {|dirs| vpath.concat dirs.split(File::PATH_SEPARATOR)}
+ input, = o.order!(ARGV)
+end or abort opt.opt_s
+
+tokens = nil
+vpath.find do |dir|
+ begin
+ if line = File.read(File.join(dir, input))[/^\s*enum\s+yytokentype\s*\{([^{}]*)\s*\};/m, 1]
+ tokens = line.scan(/\b(t(?:LAST_TOKEN|U(?:PLUS|MINUS)|POW|CMP|EQQ?|[NGL]EQ|(?:AND|OR)OP|N?MATCH|DOT\d|AREF|ASET|[LR]SHFT|LAMBDA)|id\w+)\s*=\s*(\d+),?/m)
+ end
+ rescue Errno::ENOENT
+ nil
+ else
+ true
+ end
+end
+%>
+#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
+
+#ifdef USE_PARSE_H
+#include "parse.h"
+#endif
+
+#define symIFUNC ID2SYM(idIFUNC)
+#define symCFUNC ID2SYM(idCFUNC)
+
+enum ruby_method_ids {
+#ifndef tLAST_TOKEN
+% tokens.each do |token, value|
+ <%=token%> = <%=value%>,
+% end
+% tokens.map do |token, value|
+#elif <%=token%> != <%=value%>
+#error <%=token%> differs
+% end
+#endif
+ idPLUS = '+',
+ idMINUS = '-',
+ idMULT = '*',
+ idDIV = '/',
+ idMOD = '%',
+ idLT = '<',
+ idLTLT = tLSHFT,
+ idLE = tLEQ,
+ idGT = '>',
+ idGE = tGEQ,
+ idEq = tEQ,
+ idEqq = tEQQ,
+ idNeq = tNEQ,
+ idNot = '!',
+ idBackquote = '`',
+ idEqTilde = tMATCH,
+ idAREF = tAREF,
+ idASET = tASET,
+ idLAST_TOKEN = tLAST_TOKEN >> ID_SCOPE_SHIFT,
+ tIntern,
+ tMethodMissing,
+ tLength,
+ tGets,
+ tSucc,
+ tEach,
+ tLambda,
+ tSend,
+ t__send__,
+ tInitialize,
+#if SUPPORT_JOKE
+ tBitblt,
+ tAnswer,
+#endif
+ tLAST_ID,
+#define TOKEN2ID(n) id##n = ((t##n<<ID_SCOPE_SHIFT)|ID_LOCAL)
+ TOKEN2ID(Intern),
+ TOKEN2ID(MethodMissing),
+ TOKEN2ID(Length),
+ TOKEN2ID(Gets),
+ TOKEN2ID(Succ),
+ TOKEN2ID(Each),
+ TOKEN2ID(Lambda),
+ TOKEN2ID(Send),
+ TOKEN2ID(__send__),
+ TOKEN2ID(Initialize),
+#if SUPPORT_JOKE
+ TOKEN2ID(Bitblt),
+ TOKEN2ID(Answer),
+#endif
+};
+
+#endif /* RUBY_ID_H */
diff --git a/tool/generic_erb.rb b/tool/generic_erb.rb
index c234f3a52f..f7ef48deea 100644
--- a/tool/generic_erb.rb
+++ b/tool/generic_erb.rb
@@ -16,13 +16,11 @@ erb = ERB.new(File.read(template), nil, '%')
erb.filename = template
result = erb.result
if output
- if ifchange
- if (IO.read(output) rescue nil) == result
- puts "#{output} unchanged"
- else
- open(output, "wb") {|f| f.print result}
- puts "#{output} updated"
- end
+ if ifchange and (IO.read(output) rescue nil) == result
+ puts "#{output} unchanged"
+ else
+ open(output, "wb") {|f| f.print result}
+ puts "#{output} updated"
end
if timestamp
if timestamp == true