yaparc 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/yaparc.rb +14 -3
- data/tests/test_parser.rb +8 -1
- metadata +43 -36
data/lib/yaparc.rb
CHANGED
@@ -26,6 +26,7 @@ module Yaparc
|
|
26
26
|
IS_ALPHANUM = lambda {|c| (c >= 'a' and c <= 'z') or (c >= '0' and c <= '9')}
|
27
27
|
IS_DIGIT = lambda {|i| i >= '0' and i <= '9'}
|
28
28
|
IS_SPACE = lambda {|i| i == ' '}
|
29
|
+
IS_WHITESPACE = lambda {|i| i == ' ' or i == "\n" or i == "\t"}
|
29
30
|
|
30
31
|
def self.included(mod)
|
31
32
|
mod.extend ClassMethods
|
@@ -343,15 +344,25 @@ module Yaparc
|
|
343
344
|
class Space < ParserBase
|
344
345
|
def initialize
|
345
346
|
@parser = SeqParser.new(ManyParser.new(SatisfyParser.new(IS_SPACE))) do |vs|
|
346
|
-
[]
|
347
|
+
SucceedParser.new([])
|
348
|
+
end
|
349
|
+
end
|
350
|
+
end
|
351
|
+
|
352
|
+
class WhiteSpace < ParserBase
|
353
|
+
def initialize
|
354
|
+
@parser = SeqParser.new(ManyParser.new(SatisfyParser.new(IS_WHITESPACE))) do |vs|
|
355
|
+
SucceedParser.new([])
|
347
356
|
end
|
348
357
|
end
|
349
358
|
end
|
350
359
|
|
351
360
|
class Token < ParserBase
|
361
|
+
attr_accessor :prefix, :postfix
|
352
362
|
|
353
|
-
def initialize(parser, prefix =
|
354
|
-
@
|
363
|
+
def initialize(parser, prefix = WhiteSpace.new, postfix = WhiteSpace.new)
|
364
|
+
@prefix, @postfix = prefix, postfix
|
365
|
+
@parser = SeqParser.new(@prefix, parser, @postfix) do |_, vs, _|
|
355
366
|
vs
|
356
367
|
end
|
357
368
|
end
|
data/tests/test_parser.rb
CHANGED
@@ -223,7 +223,14 @@ class YaparcTest < Test::Unit::TestCase
|
|
223
223
|
def test_space
|
224
224
|
parser = Space.new
|
225
225
|
result = parser.parse(" abc")
|
226
|
-
|
226
|
+
assert_instance_of Result::OK, result
|
227
|
+
assert_equal "abc", result.input
|
228
|
+
end
|
229
|
+
|
230
|
+
def test_whitespace
|
231
|
+
parser = WhiteSpace.new
|
232
|
+
result = parser.parse(" \n abc")
|
233
|
+
assert_instance_of Result::OK, result
|
227
234
|
assert_equal "abc", result.input
|
228
235
|
end
|
229
236
|
|
metadata
CHANGED
@@ -1,52 +1,59 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.3
|
3
|
-
specification_version: 1
|
4
2
|
name: yaparc
|
5
3
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.1.
|
7
|
-
date: 2008-01-20 00:00:00 +09:00
|
8
|
-
summary: Yet Another Combinator Parser Library
|
9
|
-
require_paths:
|
10
|
-
- lib
|
11
|
-
email: akimichi_tatsukawa@nifty.com
|
12
|
-
homepage: http://rubyforge.org/projects/yaparc/
|
13
|
-
rubyforge_project:
|
14
|
-
description:
|
15
|
-
autorequire: yaparc
|
16
|
-
default_executable:
|
17
|
-
bindir: bin
|
18
|
-
has_rdoc: true
|
19
|
-
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.0.0
|
24
|
-
version:
|
4
|
+
version: 0.1.4
|
25
5
|
platform: ruby
|
26
|
-
signing_key:
|
27
|
-
cert_chain:
|
28
|
-
post_install_message:
|
29
6
|
authors:
|
30
7
|
- Akimichi Tatsukawa
|
8
|
+
autorequire: yaparc
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-02-07 00:00:00 +09:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description:
|
17
|
+
email: akimichi_tatsukawa@nifty.com
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files:
|
23
|
+
- README
|
31
24
|
files:
|
32
25
|
- tests/test_parser.rb
|
33
26
|
- tests/test_calc.rb
|
34
27
|
- tests/test_sql.rb
|
35
28
|
- lib/yaparc.rb
|
36
29
|
- README
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
- tests/test_sql.rb
|
30
|
+
has_rdoc: true
|
31
|
+
homepage: http://rubyforge.org/projects/yaparc/
|
32
|
+
post_install_message:
|
41
33
|
rdoc_options: []
|
42
34
|
|
43
|
-
|
44
|
-
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
35
|
+
require_paths:
|
36
|
+
- lib
|
37
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: "0"
|
42
|
+
version:
|
43
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: "0"
|
48
|
+
version:
|
49
49
|
requirements: []
|
50
50
|
|
51
|
-
|
52
|
-
|
51
|
+
rubyforge_project:
|
52
|
+
rubygems_version: 1.0.1
|
53
|
+
signing_key:
|
54
|
+
specification_version: 2
|
55
|
+
summary: Yet Another Combinator Parser Library
|
56
|
+
test_files:
|
57
|
+
- tests/test_parser.rb
|
58
|
+
- tests/test_calc.rb
|
59
|
+
- tests/test_sql.rb
|