* 2022-01-18 [ci skip]
[ruby-80x24.org.git] / test / racc / test_scan_y.rb
blobfcd7e53c996c3918fbb3aefd90bfedfacdc1c27a
1 require File.expand_path(File.join(__dir__, 'case'))
3 module Racc
4   class TestScanY < TestCase
5     def setup
6       super
7       file = File.join(ASSET_DIR, 'scan.y')
8       @debug_flags = Racc::DebugFlags.parse_option_string('o')
9       parser = Racc::GrammarFileParser.new(@debug_flags)
10       @result = parser.parse(File.read(file), File.basename(file))
11       @states = Racc::States.new(@result.grammar).nfa
12       @states.dfa
13     end
15     def test_compile
16       generator = Racc::ParserFileGenerator.new(@states, @result.params.dup)
18       # it generates valid ruby
19       assert Module.new {
20         self.class_eval(generator.generate_parser)
21       }
23       grammar = @states.grammar
25       assert_equal 0, @states.n_srconflicts
26       assert_equal 0, @states.n_rrconflicts
27       assert_equal 0, grammar.n_useless_nonterminals
28       assert_equal 0, grammar.n_useless_rules
29       assert_nil grammar.n_expected_srconflicts
30     end
32     def test_compile_line_convert
33       params = @result.params.dup
34       params.convert_line_all = true
36       generator = Racc::ParserFileGenerator.new(@states, @result.params.dup)
38       # it generates valid ruby
39       assert Module.new {
40         self.class_eval(generator.generate_parser)
41       }
43       grammar = @states.grammar
45       assert_equal 0, @states.n_srconflicts
46       assert_equal 0, @states.n_rrconflicts
47       assert_equal 0, grammar.n_useless_nonterminals
48       assert_equal 0, grammar.n_useless_rules
49       assert_nil grammar.n_expected_srconflicts
50     end
51   end
52 end