aboutsummaryrefslogtreecommitdiffstats
path: root/tool/id2token.rb
blob: cf730958422389bbf81481232706f62140fd58a7 (plain)
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/ =~ $_