yaparc 0.1.3 → 0.1.4
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.
- 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
|