summaryrefslogtreecommitdiff
path: root/test/racc/test_scan_y.rb
diff options
context:
space:
mode:
authorHiroshi SHIBATA <hsbt@ruby-lang.org>2019-05-13 21:25:22 +0900
committerHiroshi SHIBATA <hsbt@ruby-lang.org>2019-06-19 18:17:25 +0900
commit1a2546c2be839baa7d0a50dc056d4d6987d26852 (patch)
tree19fef5d8b8d96452a51ab68e8093ea895192ca27 /test/racc/test_scan_y.rb
parentcbe06cd3501fdadd0e6e63094da2973484d70b0b (diff)
downloadruby-1a2546c2be839baa7d0a50dc056d4d6987d26852.tar.gz
Backport racc-1.4.15 from upstream.
Diffstat (limited to 'test/racc/test_scan_y.rb')
-rw-r--r--test/racc/test_scan_y.rb51
1 files changed, 51 insertions, 0 deletions
diff --git a/test/racc/test_scan_y.rb b/test/racc/test_scan_y.rb
new file mode 100644
index 0000000000..b5f9593654
--- /dev/null
+++ b/test/racc/test_scan_y.rb
@@ -0,0 +1,51 @@
+require File.expand_path(File.join(File.dirname(__FILE__), 'helper'))
+
+module Racc
+ class TestScanY < TestCase
+ def setup
+ file = File.join(ASSET_DIR, 'scan.y')
+ @debug_flags = Racc::DebugFlags.parse_option_string('o')
+ parser = Racc::GrammarFileParser.new(@debug_flags)
+ @result = parser.parse(File.read(file), File.basename(file))
+ @states = Racc::States.new(@result.grammar).nfa
+ @states.dfa
+ end
+
+ def test_compile
+ generator = Racc::ParserFileGenerator.new(@states, @result.params.dup)
+
+ # it generates valid ruby
+ assert Module.new {
+ self.class_eval(generator.generate_parser)
+ }
+
+ grammar = @states.grammar
+
+ assert_equal 0, @states.n_srconflicts
+ assert_equal 0, @states.n_rrconflicts
+ assert_equal 0, grammar.n_useless_nonterminals
+ assert_equal 0, grammar.n_useless_rules
+ assert_nil grammar.n_expected_srconflicts
+ end
+
+ def test_compile_line_convert
+ params = @result.params.dup
+ params.convert_line_all = true
+
+ generator = Racc::ParserFileGenerator.new(@states, @result.params.dup)
+
+ # it generates valid ruby
+ assert Module.new {
+ self.class_eval(generator.generate_parser)
+ }
+
+ grammar = @states.grammar
+
+ assert_equal 0, @states.n_srconflicts
+ assert_equal 0, @states.n_rrconflicts
+ assert_equal 0, grammar.n_useless_nonterminals
+ assert_equal 0, grammar.n_useless_rules
+ assert_nil grammar.n_expected_srconflicts
+ end
+ end
+end