From de85d6e92ec7b7642ad02ca93cb6d5cdf75ac481 Mon Sep 17 00:00:00 2001 From: nobu Date: Sun, 19 Oct 2008 12:12:53 +0000 Subject: * 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 --- ChangeLog | 8 ++++ common.mk | 2 +- id.h | 98 ++++++++++++++++++++++++++++--------------- template/id.h.tmpl | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++++ tool/generic_erb.rb | 12 +++--- 5 files changed, 196 insertions(+), 41 deletions(-) create mode 100644 template/id.h.tmpl 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 + + * 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 * 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<