1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
#! /usr/bin/ruby -p
# -*- coding: us-ascii -*-
# Used to build the Ruby parsing code in common.mk and Ripper.
BEGIN {
require 'optparse'
opt = OptionParser.new do |o|
o.order!(ARGV)
end or abort opt.opt_s
TOKENS = {}
defs = File.join(File.dirname(File.dirname(__FILE__)), "defs/id.def")
ids = eval(File.read(defs), nil, defs)
ids[:token_op].each do |_id, _op, token, id|
TOKENS[token] = id
end
TOKENS_RE = /\bRUBY_TOKEN\((#{TOKENS.keys.join('|')})\)\s*(?=\s)/
}
$_.gsub!(TOKENS_RE) {TOKENS[$1]} if /^%token/ =~ $_
|