diff options
author | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2019-05-13 21:25:22 +0900 |
---|---|---|
committer | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2019-06-19 18:17:25 +0900 |
commit | 1a2546c2be839baa7d0a50dc056d4d6987d26852 (patch) | |
tree | 19fef5d8b8d96452a51ab68e8093ea895192ca27 /test/racc/test_scan_y.rb | |
parent | cbe06cd3501fdadd0e6e63094da2973484d70b0b (diff) | |
download | ruby-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.rb | 51 |
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 |