File: id2token.rb

package info (click to toggle)
ruby3.4 3.4.5-1~exp1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 154,784 kB
  • sloc: ruby: 1,259,653; ansic: 829,955; yacc: 28,233; pascal: 7,359; sh: 3,864; python: 1,799; cpp: 1,158; asm: 808; makefile: 801; javascript: 414; lisp: 109; perl: 62; awk: 36; sed: 4; xml: 4
file content (23 lines) | stat: -rwxr-xr-x 546 bytes parent folder | download | duplicates (2)
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/ =~ $_