citrus 2.3.2 → 2.3.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -44,120 +44,4 @@ class Test::Unit::TestCase
44
44
  [ :word, zero_or_more([ ' ', :word ]) ]
45
45
  end
46
46
  end
47
-
48
- module CalcTestMethods
49
- # A helper method that tests the successful parsing and evaluation of the
50
- # given mathematical expression.
51
- def do_test(expr, grammar)
52
- match = grammar.parse(expr)
53
- assert(match)
54
- assert_equal(expr, match)
55
- assert_equal(expr.length, match.length)
56
- assert_equal(eval(expr), match.value)
57
- end
58
-
59
- def test_int
60
- do_test('3')
61
- end
62
-
63
- def test_float
64
- do_test('1.5')
65
- end
66
-
67
- def test_addition
68
- do_test('1+2')
69
- end
70
-
71
- def test_addition_multi
72
- do_test('1+2+3')
73
- end
74
-
75
- def test_addition_float
76
- do_test('1.5+3')
77
- end
78
-
79
- def test_subtraction
80
- do_test('3-2')
81
- end
82
-
83
- def test_subtraction_float
84
- do_test('4.5-3')
85
- end
86
-
87
- def test_multiplication
88
- do_test('2*5')
89
- end
90
-
91
- def test_multiplication_float
92
- do_test('1.5*3')
93
- end
94
-
95
- def test_division
96
- do_test('20/5')
97
- end
98
-
99
- def test_division_float
100
- do_test('4.5/3')
101
- end
102
-
103
- def test_complex
104
- do_test('7*4+3.5*(4.5/3)')
105
- end
106
-
107
- def test_complex_spaced
108
- do_test('7 * 4 + 3.5 * (4.5 / 3)')
109
- end
110
-
111
- def test_complex_with_underscores
112
- do_test('(12_000 / 3) * 2.5')
113
- end
114
-
115
- def test_modulo
116
- do_test('3 % 2 + 4')
117
- end
118
-
119
- def test_exponent
120
- do_test('2**9')
121
- end
122
-
123
- def test_exponent_float
124
- do_test('2**2.2')
125
- end
126
-
127
- def test_negative_exponent
128
- do_test('2**-3')
129
- end
130
-
131
- def test_exponent_exponent
132
- do_test('2**2**2')
133
- end
134
-
135
- def test_exponent_group
136
- do_test('2**(3+1)')
137
- end
138
-
139
- def test_negative
140
- do_test('-5')
141
- end
142
-
143
- def test_double_negative
144
- do_test('--5')
145
- end
146
-
147
- def test_complement
148
- do_test('~4')
149
- end
150
-
151
- def test_double_complement
152
- do_test('~~4')
153
- end
154
-
155
- def test_mixed_unary
156
- do_test('~-4')
157
- end
158
-
159
- def test_complex_with_negatives
160
- do_test('4 * -7 / (8.0 + 1_2)**2')
161
- end
162
- end
163
47
  end
@@ -25,7 +25,6 @@ class MatchTest < Test::Unit::TestCase
25
25
  b = Rule.for('b')
26
26
  c = Rule.for('c')
27
27
  s = Rule.for([ a, b, c ])
28
- s.name = 's'
29
28
  r = Repeat.new(s, 0, Infinity)
30
29
 
31
30
  events = [
@@ -26,7 +26,7 @@ class MemoizedInputTest < Test::Unit::TestCase
26
26
  def test_cache_hits1
27
27
  input = MemoizedInput.new('a')
28
28
  input.exec(LetterA.rule(:top))
29
- assert_equal(3, input.cache_hits)
29
+ assert_equal(2, input.cache_hits)
30
30
  end
31
31
 
32
32
  def test_cache_hits2
@@ -1,32 +1,83 @@
1
+ # encoding: UTF-8
2
+
1
3
  require File.expand_path('../helper', __FILE__)
2
4
 
3
5
  class MultibyteTest < Test::Unit::TestCase
4
6
  grammar :Multibyte do
5
7
  rule :string do
6
- "\xFF"
8
+ "ä"
7
9
  end
8
10
 
9
11
  rule :regexp do
10
- /\xFF/
12
+ /(ä)+/
11
13
  end
12
14
 
13
15
  rule :character_class do
14
- /[\xFF]/
16
+ /[ä]+/
17
+ end
18
+
19
+ rule :dot do
20
+ DOT
15
21
  end
16
22
  end
17
23
 
18
24
  def test_multibyte_string
19
- m = Multibyte.parse("\xFF", :root => :string)
25
+ m = Multibyte.parse("ä", :root => :string)
20
26
  assert(m)
21
27
  end
22
28
 
23
29
  def test_multibyte_regexp
24
- m = Multibyte.parse("\xFF", :root => :regexp)
30
+ m = Multibyte.parse("äää", :root => :regexp)
25
31
  assert(m)
26
32
  end
27
33
 
28
34
  def test_multibyte_character_class
29
- m = Multibyte.parse("\xFF", :root => :character_class)
35
+ m = Multibyte.parse("äää", :root => :character_class)
36
+ assert(m)
37
+ end
38
+
39
+ def test_multibyte_dot
40
+ m = Multibyte.parse("ä", :root => :dot)
41
+ assert(m)
42
+ end
43
+
44
+ Citrus.eval(<<-CITRUS)
45
+ grammar Multibyte2
46
+ rule string
47
+ "ä"
48
+ end
49
+
50
+ rule regexp
51
+ /(ä)+/
52
+ end
53
+
54
+ rule character_class
55
+ [ä]+
56
+ end
57
+
58
+ rule dot
59
+ .+
60
+ end
61
+ end
62
+ CITRUS
63
+
64
+ def test_multibyte2_string
65
+ m = Multibyte2.parse("ä", :root => :string)
66
+ assert(m)
67
+ end
68
+
69
+ def test_multibyte2_regexp
70
+ m = Multibyte2.parse("äää", :root => :regexp)
71
+ assert(m)
72
+ end
73
+
74
+ def test_multibyte2_character_class
75
+ m = Multibyte2.parse("äää", :root => :character_class)
76
+ assert(m)
77
+ end
78
+
79
+ def test_multibyte2_dot
80
+ m = Multibyte2.parse("äää", :root => :dot)
30
81
  assert(m)
31
82
  end
32
83
  end
@@ -1,3 +1,5 @@
1
+ # encoding: UTF-8
2
+
1
3
  require File.expand_path('../helper', __FILE__)
2
4
 
3
5
  class ParseErrorTest < Test::Unit::TestCase
@@ -32,10 +34,10 @@ class ParseErrorTest < Test::Unit::TestCase
32
34
 
33
35
  def test_single_line
34
36
  begin
35
- Sentence.parse('Once upon 4 time.')
37
+ Sentence.parse('Once upon ä time.')
36
38
  rescue ParseError => e
37
39
  assert_equal(10, e.offset)
38
- assert_equal('Once upon 4 time.', e.line)
40
+ assert_equal('Once upon ä time.', e.line)
39
41
  assert_equal(1, e.line_number)
40
42
  assert_equal(10, e.line_offset)
41
43
  end
metadata CHANGED
@@ -3,32 +3,33 @@ name: citrus
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
- - 2
7
- - 3
8
- - 2
9
- version: 2.3.2
6
+ - 2
7
+ - 3
8
+ - 3
9
+ version: 2.3.3
10
10
  platform: ruby
11
11
  authors:
12
- - Michael Jackson
12
+ - Michael Jackson
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-01-02 00:00:00 -08:00
17
+ date: 2011-01-17 00:00:00 -08:00
18
18
  default_executable:
19
19
  dependencies:
20
- - !ruby/object:Gem::Dependency
21
- name: rake
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- segments:
28
- - 0
29
- version: "0"
30
- type: :development
31
- version_requirements: *id001
20
+ - !ruby/object:Gem::Dependency
21
+ name: rake
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ version: "0"
31
+ type: :development
32
+ version_requirements: *id001
32
33
  description: Parsing Expressions for Ruby
33
34
  email: mjijackson@gmail.com
34
35
  executables: []
@@ -36,112 +37,115 @@ executables: []
36
37
  extensions: []
37
38
 
38
39
  extra_rdoc_files:
39
- - README
40
+ - README
40
41
  files:
41
- - benchmark/seqpar.citrus
42
- - benchmark/seqpar.gnuplot
43
- - benchmark/seqpar.rb
44
- - doc/background.markdown
45
- - doc/example.markdown
46
- - doc/extras.markdown
47
- - doc/index.markdown
48
- - doc/license.markdown
49
- - doc/links.markdown
50
- - doc/syntax.markdown
51
- - doc/testing.markdown
52
- - examples/calc.citrus
53
- - examples/calc.rb
54
- - examples/ip.citrus
55
- - examples/ip.rb
56
- - lib/citrus.rb
57
- - lib/citrus/file.rb
58
- - test/alias_test.rb
59
- - test/and_predicate_test.rb
60
- - test/but_predicate_test.rb
61
- - test/calc_file_test.rb
62
- - test/calc_test.rb
63
- - test/choice_test.rb
64
- - test/extension_test.rb
65
- - test/file_test.rb
66
- - test/grammar_test.rb
67
- - test/helper.rb
68
- - test/input_test.rb
69
- - test/label_test.rb
70
- - test/match_test.rb
71
- - test/memoized_input_test.rb
72
- - test/multibyte_test.rb
73
- - test/not_predicate_test.rb
74
- - test/parse_error_test.rb
75
- - test/repeat_test.rb
76
- - test/sequence_test.rb
77
- - test/string_terminal_test.rb
78
- - test/super_test.rb
79
- - test/terminal_test.rb
80
- - test/_files/alias.citrus
81
- - test/_files/grammar1.citrus
82
- - test/_files/grammar2.citrus
83
- - test/_files/rule1.citrus
84
- - test/_files/rule2.citrus
85
- - test/_files/rule3.citrus
86
- - test/_files/super.citrus
87
- - test/_files/super2.citrus
88
- - citrus.gemspec
89
- - Rakefile
90
- - README
42
+ - benchmark/seqpar.citrus
43
+ - benchmark/seqpar.gnuplot
44
+ - benchmark/seqpar.rb
45
+ - doc/background.markdown
46
+ - doc/example.markdown
47
+ - doc/extras.markdown
48
+ - doc/index.markdown
49
+ - doc/license.markdown
50
+ - doc/links.markdown
51
+ - doc/syntax.markdown
52
+ - doc/testing.markdown
53
+ - examples/calc.citrus
54
+ - examples/calc.rb
55
+ - examples/ipaddress.citrus
56
+ - examples/ipaddress.rb
57
+ - examples/ipv4address.citrus
58
+ - examples/ipv4address.rb
59
+ - examples/ipv6address.citrus
60
+ - examples/ipv6address.rb
61
+ - lib/citrus/file.rb
62
+ - lib/citrus/version.rb
63
+ - lib/citrus.rb
64
+ - test/_files/alias.citrus
65
+ - test/_files/grammar1.citrus
66
+ - test/_files/grammar2.citrus
67
+ - test/_files/rule1.citrus
68
+ - test/_files/rule2.citrus
69
+ - test/_files/rule3.citrus
70
+ - test/_files/super.citrus
71
+ - test/_files/super2.citrus
72
+ - test/alias_test.rb
73
+ - test/and_predicate_test.rb
74
+ - test/but_predicate_test.rb
75
+ - test/choice_test.rb
76
+ - test/extension_test.rb
77
+ - test/file_test.rb
78
+ - test/grammar_test.rb
79
+ - test/helper.rb
80
+ - test/input_test.rb
81
+ - test/label_test.rb
82
+ - test/match_test.rb
83
+ - test/memoized_input_test.rb
84
+ - test/multibyte_test.rb
85
+ - test/not_predicate_test.rb
86
+ - test/parse_error_test.rb
87
+ - test/repeat_test.rb
88
+ - test/sequence_test.rb
89
+ - test/string_terminal_test.rb
90
+ - test/super_test.rb
91
+ - test/terminal_test.rb
92
+ - citrus.gemspec
93
+ - Rakefile
94
+ - README
91
95
  has_rdoc: true
92
96
  homepage: http://mjijackson.com/citrus
93
97
  licenses: []
94
98
 
95
99
  post_install_message:
96
100
  rdoc_options:
97
- - --line-numbers
98
- - --inline-source
99
- - --title
100
- - Citrus
101
- - --main
102
- - Citrus
101
+ - --line-numbers
102
+ - --inline-source
103
+ - --title
104
+ - Citrus
105
+ - --main
106
+ - Citrus
103
107
  require_paths:
104
- - lib
108
+ - lib
105
109
  required_ruby_version: !ruby/object:Gem::Requirement
110
+ none: false
106
111
  requirements:
107
- - - ">="
108
- - !ruby/object:Gem::Version
109
- segments:
110
- - 0
111
- version: "0"
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ segments:
115
+ - 0
116
+ version: "0"
112
117
  required_rubygems_version: !ruby/object:Gem::Requirement
118
+ none: false
113
119
  requirements:
114
- - - ">="
115
- - !ruby/object:Gem::Version
116
- segments:
117
- - 0
118
- version: "0"
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ segments:
123
+ - 0
124
+ version: "0"
119
125
  requirements: []
120
126
 
121
127
  rubyforge_project:
122
- rubygems_version: 1.3.6
128
+ rubygems_version: 1.3.7
123
129
  signing_key:
124
130
  specification_version: 3
125
131
  summary: Parsing Expressions for Ruby
126
132
  test_files:
127
- - test/alias_test.rb
128
- - test/and_predicate_test.rb
129
- - test/but_predicate_test.rb
130
- - test/calc_file_test.rb
131
- - test/calc_test.rb
132
- - test/choice_test.rb
133
- - test/extension_test.rb
134
- - test/file_test.rb
135
- - test/grammar_test.rb
136
- - test/input_test.rb
137
- - test/label_test.rb
138
- - test/match_test.rb
139
- - test/memoized_input_test.rb
140
- - test/multibyte_test.rb
141
- - test/not_predicate_test.rb
142
- - test/parse_error_test.rb
143
- - test/repeat_test.rb
144
- - test/sequence_test.rb
145
- - test/string_terminal_test.rb
146
- - test/super_test.rb
147
- - test/terminal_test.rb
133
+ - test/alias_test.rb
134
+ - test/and_predicate_test.rb
135
+ - test/but_predicate_test.rb
136
+ - test/choice_test.rb
137
+ - test/extension_test.rb
138
+ - test/file_test.rb
139
+ - test/grammar_test.rb
140
+ - test/input_test.rb
141
+ - test/label_test.rb
142
+ - test/match_test.rb
143
+ - test/memoized_input_test.rb
144
+ - test/multibyte_test.rb
145
+ - test/not_predicate_test.rb
146
+ - test/parse_error_test.rb
147
+ - test/repeat_test.rb
148
+ - test/sequence_test.rb
149
+ - test/string_terminal_test.rb
150
+ - test/super_test.rb
151
+ - test/terminal_test.rb