aboutsummaryrefslogtreecommitdiffstats
path: root/test/racc/testscanner.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/racc/testscanner.rb')
-rw-r--r--test/racc/testscanner.rb51
1 files changed, 51 insertions, 0 deletions
diff --git a/test/racc/testscanner.rb b/test/racc/testscanner.rb
new file mode 100644
index 0000000000..471c6bac5c
--- /dev/null
+++ b/test/racc/testscanner.rb
@@ -0,0 +1,51 @@
+#
+# racc scanner tester
+#
+
+require 'racc/raccs'
+
+
+class ScanError < StandardError; end
+
+def testdata( dir, argv )
+ if argv.empty? then
+ Dir.glob( dir + '/*' ) -
+ Dir.glob( dir + '/*.swp' ) -
+ [ dir + '/CVS' ]
+ else
+ argv.collect {|i| dir + '/' + i }
+ end
+end
+
+
+if ARGV.delete '--print' then
+ $raccs_print_type = true
+ printonly = true
+else
+ printonly = false
+end
+
+testdata( File.dirname($0) + '/scandata', ARGV ).each do |file|
+ $stderr.print File.basename(file) + ': '
+ begin
+ ok = File.read(file)
+ s = Racc::GrammarFileScanner.new( ok )
+ sym, (val, lineno) = s.scan
+ if printonly then
+ $stderr.puts
+ $stderr.puts val
+ next
+ end
+
+ val = '{' + val + "}\n"
+ sym == :ACTION or raise ScanError, 'is not action!'
+ val == ok or raise ScanError, "\n>>>\n#{ok}----\n#{val}<<<"
+
+ $stderr.puts 'ok'
+ rescue => err
+ $stderr.puts 'fail (' + err.type.to_s + ')'
+ $stderr.puts err.message
+ $stderr.puts err.backtrace
+ $stderr.puts
+ end
+end