dhaka 1.0.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,6 +11,10 @@ require 'fake_logger'
11
11
 
12
12
  class ParserTest < Test::Unit::TestCase
13
13
 
14
+ def build_tokens(token_symbol_names)
15
+ token_symbol_names.collect {|symbol_name| Dhaka::Token.new(symbol_name, nil, nil)}
16
+ end
17
+
14
18
  def setup
15
19
  @grammar = SimpleGrammar
16
20
  @parser = Dhaka::Parser.new(@grammar)
@@ -53,12 +57,8 @@ class ParserTest < Test::Unit::TestCase
53
57
  dot_representation = @parser.to_dot
54
58
  end
55
59
 
56
- def build_tokens(token_symbol_names, grammar)
57
- token_symbol_names.collect {|symbol_name| Dhaka::Token.new(grammar.symbol_for_name(symbol_name), nil)}
58
- end
59
-
60
- def test_parser_generates_syntax_tree_given_a_stream_of_symbols
61
- syntax_tree = @parser.parse(build_tokens(['(','n','-','(','n','-','n',')',')','-','n','#'], @grammar)).syntax_tree
60
+ def test_parser_generates_parse_tree_given_a_stream_of_symbols
61
+ parse_tree = @parser.parse(build_tokens(['(','n','-','(','n','-','n',')',')','-','n','#', Dhaka::END_SYMBOL_NAME])).parse_tree
62
62
  assert_equal \
63
63
  ["literal",
64
64
  "term",
@@ -73,22 +73,22 @@ class ParserTest < Test::Unit::TestCase
73
73
  "literal",
74
74
  "subtraction",
75
75
  "expression",
76
- "start"], syntax_tree.linearize
76
+ "start"], parse_tree.linearize.collect {|node| node.production.name}
77
77
  end
78
78
 
79
- def test_syntax_trees_can_be_exported_to_dot_format
80
- syntax_tree = @parser.parse(build_tokens(['(','n','-','(','n','-','n',')',')','-','n','#'], @grammar)).syntax_tree
81
- syntax_tree.to_dot
79
+ def test_parse_trees_can_be_exported_to_dot_format
80
+ parse_tree = @parser.parse(build_tokens(['(','n','-','(','n','-','n',')',')','-','n','#', Dhaka::END_SYMBOL_NAME])).parse_tree
81
+ parse_tree.to_dot
82
82
  end
83
83
 
84
84
  def get_linearized_parse_result(input, parser)
85
- parser.parse(build_tokens(input, parser.grammar)).syntax_tree.linearize
85
+ parser.parse(build_tokens(input)).parse_tree.linearize.collect {|node| node.production.name}
86
86
  end
87
87
 
88
88
  def test_with_a_different_grammar_with_division
89
89
  grammar = ArithmeticGrammar
90
90
  parser = Dhaka::Parser.new(grammar)
91
- parser_input = ['(','n','-','(','n','/','n','-','n',')','/','n',')']
91
+ parser_input = ['(','n','-','(','n','/','n','-','n',')','/','n',')', Dhaka::END_SYMBOL_NAME]
92
92
  assert_equal \
93
93
  ["getting_literals",
94
94
  "factor",
@@ -111,7 +111,7 @@ class ParserTest < Test::Unit::TestCase
111
111
  "term",
112
112
  "expression"], get_linearized_parse_result(parser_input, parser)
113
113
 
114
- parser_input = ['h','(','(','n',')','-','n',',','n',')']
114
+ parser_input = ['h','(','(','n',')','-','n',',','n',')', Dhaka::END_SYMBOL_NAME]
115
115
  assert_equal \
116
116
  ["max_function",
117
117
  "getting_literals",
@@ -138,7 +138,7 @@ class ParserTest < Test::Unit::TestCase
138
138
  def test_with_a_grammar_with_nullables_after_terminals
139
139
  grammar = NullableGrammar
140
140
  parser = Dhaka::Parser.new(grammar)
141
- parser_input = ['(','a',')']
141
+ parser_input = ['(','a',')', Dhaka::END_SYMBOL_NAME]
142
142
  assert_equal \
143
143
  ["literal_a",
144
144
  "empty_element_list",
@@ -150,14 +150,14 @@ class ParserTest < Test::Unit::TestCase
150
150
  def test_with_a_grammar_that_is_not_SLR
151
151
  grammar = LALRButNotSLRGrammar
152
152
  parser = Dhaka::Parser.new(grammar)
153
- parser_input = ['b','d','c']
153
+ parser_input = ['b','d','c', Dhaka::END_SYMBOL_NAME]
154
154
  assert_equal(["A_d", "E_bAc", "start"], get_linearized_parse_result(parser_input, parser))
155
155
  end
156
156
 
157
157
  def test_with_another_grammar_that_is_not_SLR
158
158
  grammar = AnotherLALRButNotSLRGrammar
159
159
  parser = Dhaka::Parser.new(grammar)
160
- parser_input = ['*', 'id', '=', 'id']
160
+ parser_input = ['*', 'id', '=', 'id', Dhaka::END_SYMBOL_NAME]
161
161
  assert_equal(["identifier", "l_value", "contents", "identifier", "l_value", "assignment"], get_linearized_parse_result(parser_input, parser))
162
162
  end
163
163
 
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
3
3
  specification_version: 1
4
4
  name: dhaka
5
5
  version: !ruby/object:Gem::Version
6
- version: 1.0.0
7
- date: 2007-01-08 00:00:00 -05:00
6
+ version: 2.0.0
7
+ date: 2007-01-21 00:00:00 -05:00
8
8
  summary: An LALR1 parser generator written in Ruby
9
9
  require_paths:
10
10
  - lib
@@ -65,6 +65,7 @@ files:
65
65
  - test/bracket_grammar.rb
66
66
  - test/bracket_tokenizer.rb
67
67
  - test/brackets_test.rb
68
+ - test/chittagong_driver_test.rb
68
69
  - test/chittagong_evaluator.rb
69
70
  - test/chittagong_evaluator_test.rb
70
71
  - test/chittagong_grammar.rb