summaryrefslogtreecommitdiff
path: root/tool/pure_parser.rb
diff options
context:
space:
mode:
Diffstat (limited to 'tool/pure_parser.rb')
-rw-r--r--tool/pure_parser.rb20
1 files changed, 20 insertions, 0 deletions
diff --git a/tool/pure_parser.rb b/tool/pure_parser.rb
new file mode 100644
index 0000000000..aa00a2defa
--- /dev/null
+++ b/tool/pure_parser.rb
@@ -0,0 +1,20 @@
+#!/usr/bin/ruby -pi
+BEGIN {
+ require_relative 'colorize'
+
+ colorize = Colorize.new
+ file = ARGV.shift
+ begin
+ version = IO.popen(ARGV+%w[--version], &:read)
+ rescue Errno::ENOENT
+ abort "Failed to run `#{colorize.fail ARGV.join(' ')}'; You may have to install it."
+ end
+ unless /\Abison .* (\d+)\.\d+/ =~ version
+ puts colorize.fail("not bison")
+ exit
+ end
+ exit if $1.to_i >= 3
+ ARGV.clear
+ ARGV.push(file)
+}
+$_.sub!(/^%define\s+api\.pure/, '%pure-parser')