1#! /usr/bin/ruby -p 2# -*- coding: us-ascii -*- 3BEGIN { 4 require 'optparse' 5 $:.unshift(File.dirname(__FILE__)) 6 require 'vpath' 7 vpath = VPath.new 8 header = nil 9 10 opt = OptionParser.new do |o| 11 vpath.def_options(o) 12 header = o.order!(ARGV).shift 13 end or abort opt.opt_s 14 15 TOKENS = {} 16 h = vpath.read(header) rescue abort("#{header} not found in #{vpath.inspect}") 17 h.scan(/^#define\s+RUBY_TOKEN_(\w+)\s+(\d+)/) do |token, id| 18 TOKENS[token] = id 19 end 20 21 TOKENS_RE = /\bRUBY_TOKEN\((#{TOKENS.keys.join('|')})\)\s*(?=\s)/ 22} 23 24$_.gsub!(TOKENS_RE) {TOKENS[$1]} if /^%token/ =~ $_ 25