#!/usr/bin/env ruby1.9.1 #charset: utf-8 require 'pp' files = Dir[ARGV[0]] $reg = /\/\*\s*(\w+) bits\s*\*\/\s*\n((?:#.+?\n)+)/i $def = /^#\s*define[ \t]+([^ \t]+)/ regs = [] files.each do |f| File.read(f).scan($reg).each do |match| reg, fields = match fields.scan($def).each do |field| regs << [reg, field[0]] unless field[0][reg+'_'] end end end files.each do |f| regs.each do |reg_field| reg, field = reg_field t = File.read(f).gsub(/\b#{field}\b/, reg+'_'+field) File.open(f, 'w') {|w| w.print t} end end