redparse 0.8.3 → 0.8.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/History.txt +63 -4
- data/Makefile +43 -0
- data/README.txt +101 -166
- data/Rakefile +1 -1
- data/bin/redparse +49 -21
- data/lib/redparse.rb +88 -1654
- data/lib/redparse/cache.rb +172 -0
- data/lib/redparse/compile.rb +1648 -0
- data/lib/redparse/float_accurate_to_s.rb +162 -0
- data/lib/redparse/generate.rb +6 -2
- data/lib/redparse/node.rb +677 -397
- data/lib/redparse/parse_tree_server.rb +129 -0
- data/lib/redparse/pthelper.rb +43 -0
- data/lib/redparse/reg_more_sugar.rb +5 -5
- data/lib/redparse/version.rb +1 -1
- data/redparse.gemspec +43 -0
- data/test/data/skkdictools.rb +3 -0
- data/test/generate_parse_tree_server_rc.rb +43 -0
- data/test/rp-locatetest.rb +41 -1
- data/test/test_1.9.rb +114 -0
- data/test/test_all.rb +3 -0
- data/test/test_redparse.rb +283 -124
- data/test/test_xform_tree.rb +66 -0
- metadata +57 -56
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'regxform'
|
3
|
+
require "redparse"
|
4
|
+
|
5
|
+
class XformTreeTest < Test::Unit::TestCase
|
6
|
+
include RedParse::Nodes
|
7
|
+
def test_replacing_with_self
|
8
|
+
pt=RedParse.new("1").parse
|
9
|
+
xformer=
|
10
|
+
LiteralNode >> ParenedNode[SequenceNode[LiteralNode[42],~:self]]
|
11
|
+
pt=pt.xform_tree!(xformer)
|
12
|
+
assert_equal(ParenedNode[SequenceNode[LiteralNode[42],LiteralNode[1]]], pt)
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_modifying_same_node_twice
|
16
|
+
pt=RedParse.new("1").parse
|
17
|
+
xformers= [
|
18
|
+
LiteralNode >> ParenedNode[SequenceNode[StringNode['foo'],~:self]],
|
19
|
+
LiteralNode >> ParenedNode[SequenceNode[StringNode['bar'],~:self]]
|
20
|
+
]
|
21
|
+
pt=pt.xform_tree!(*xformers)
|
22
|
+
assert_equal(ParenedNode[SequenceNode[StringNode['bar'],
|
23
|
+
ParenedNode[SequenceNode[StringNode['foo'],
|
24
|
+
LiteralNode[1]
|
25
|
+
]]
|
26
|
+
]], pt)
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_modifying_same_node_thrice
|
30
|
+
pt=RedParse.new("1").parse
|
31
|
+
xformers= [
|
32
|
+
LiteralNode >> ParenedNode[SequenceNode[StringNode['foo'],~:self]],
|
33
|
+
LiteralNode >> ParenedNode[SequenceNode[StringNode['bar'],~:self]],
|
34
|
+
LiteralNode >> ParenedNode[SequenceNode[StringNode['baz'],~:self]],
|
35
|
+
]
|
36
|
+
pt=pt.xform_tree!(*xformers)
|
37
|
+
assert_equal(ParenedNode[SequenceNode[StringNode['baz'],
|
38
|
+
ParenedNode[SequenceNode[StringNode['bar'],
|
39
|
+
ParenedNode[SequenceNode[StringNode['foo'],
|
40
|
+
LiteralNode[1]
|
41
|
+
]]
|
42
|
+
]]
|
43
|
+
]], pt)
|
44
|
+
end
|
45
|
+
|
46
|
+
def mktmp
|
47
|
+
item_that{
|
48
|
+
#Process.kill "INT",0;
|
49
|
+
[['foo']]
|
50
|
+
}
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_xform_tree_doesnt_modify_original
|
54
|
+
tree=RedParse.new('def foo.bar; baz end').parse
|
55
|
+
tree2=Marshal.load(Marshal.dump(tree))
|
56
|
+
tree.xform_tree!( -{:receiver => Node>>mktmp%:t} )
|
57
|
+
assert_equal tree, tree2
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_xform_tree_doesnt_modify_original2
|
61
|
+
tree=RedParse.new('def foo.bar; baz end').parse
|
62
|
+
tree2=Marshal.load(Marshal.dump(tree))
|
63
|
+
tree.xform_tree!( -{:receiver => Node>>mktmp%:t} >> [~:t])
|
64
|
+
assert_equal tree, tree2
|
65
|
+
end
|
66
|
+
end
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redparse
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Caleb Clausen
|
8
8
|
autorequire:
|
9
|
-
bindir: bin
|
9
|
+
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2010-01-03 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -18,9 +18,9 @@ dependencies:
|
|
18
18
|
version_requirement:
|
19
19
|
version_requirements: !ruby/object:Gem::Requirement
|
20
20
|
requirements:
|
21
|
-
- - "
|
21
|
+
- - "="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 0.7.
|
23
|
+
version: 0.7.7
|
24
24
|
version:
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: reg
|
@@ -30,73 +30,74 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.4.
|
34
|
-
version:
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: hoe
|
37
|
-
type: :development
|
38
|
-
version_requirement:
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
40
|
-
requirements:
|
41
|
-
- - ">="
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: 1.12.2
|
33
|
+
version: 0.4.8
|
44
34
|
version:
|
45
|
-
description: RedParse is a ruby parser written in pure ruby. Instead of YACC or ANTLR, it's parse tool is a home-brewed "compiler-interpreter". (The tool is LALR(1)-equivalent and the 'parse language' is pretty nice, even in it's current crude form.)
|
46
|
-
email:
|
47
|
-
executables:
|
48
|
-
|
35
|
+
description: RedParse is a ruby parser written in pure ruby. Instead of YACC or ANTLR, it's parse tool is a home-brewed "compiler-interpreter". (The tool is LALR(1)-equivalent and the 'parse language' is pretty nice, even in it's current crude form.) My intent is to have a completely correct parser for ruby, in 100% ruby. Currently, RedParse can parse all known ruby 1.8 constructions correctly. There might be some problems with unparsing or otherwise working with texts in a character set other than ascii. Some of the new ruby 1.9 constructions are supported in 1.9 mode. For more details on known problems, see below.
|
36
|
+
email: caleb (at) inforadical (dot) net
|
37
|
+
executables: []
|
38
|
+
|
49
39
|
extensions: []
|
50
40
|
|
51
41
|
extra_rdoc_files:
|
52
|
-
- Manifest.txt
|
53
42
|
- README.txt
|
54
|
-
-
|
43
|
+
- COPYING.LGPL
|
55
44
|
files:
|
56
|
-
-
|
57
|
-
-
|
58
|
-
-
|
45
|
+
- COPYING.LGPL
|
46
|
+
- History.txt
|
47
|
+
- Makefile
|
48
|
+
- Manifest.txt
|
49
|
+
- README.txt
|
50
|
+
- Rakefile
|
51
|
+
- bin/redparse
|
52
|
+
- lib/redparse.rb
|
53
|
+
- lib/redparse/babynodes.rb
|
59
54
|
- lib/redparse/babyparser.rb
|
55
|
+
- lib/redparse/cache.rb
|
56
|
+
- lib/redparse/compile.rb
|
57
|
+
- lib/redparse/decisiontree.rb
|
58
|
+
- lib/redparse/float_accurate_to_s.rb
|
59
|
+
- lib/redparse/generate.rb
|
60
60
|
- lib/redparse/node.rb
|
61
|
-
- lib/redparse/
|
62
|
-
- lib/redparse.rb
|
63
|
-
- test/rp-locatetest.rb
|
61
|
+
- lib/redparse/parse_tree_server.rb
|
64
62
|
- lib/redparse/problemfiles.rb
|
65
|
-
-
|
66
|
-
-
|
67
|
-
-
|
63
|
+
- lib/redparse/pthelper.rb
|
64
|
+
- lib/redparse/reg_more_sugar.rb
|
65
|
+
- lib/redparse/version.rb
|
66
|
+
- redparse.gemspec
|
68
67
|
- test/data/__end.rb
|
69
|
-
- test/data/hdx.rb
|
70
|
-
- test/data/hd2.rb
|
71
|
-
- test/data/be.rb
|
72
|
-
- test/data/hd5.rb
|
73
|
-
- test/data/if.rb
|
74
|
-
- test/data/hdcat.rb
|
75
|
-
- test/data/hd3.rb
|
76
|
-
- test/data/pw.rb
|
77
68
|
- test/data/__f.rb
|
78
|
-
- test/data/
|
69
|
+
- test/data/be.rb
|
70
|
+
- test/data/be2.rb
|
71
|
+
- test/data/bqhd.rb
|
72
|
+
- test/data/bqhd2.rb
|
73
|
+
- test/data/case.rb
|
74
|
+
- test/data/datetime.rb
|
75
|
+
- test/data/def_spec.rb
|
76
|
+
- test/data/defd.rb
|
79
77
|
- test/data/hd-def.rb
|
80
78
|
- test/data/hd.rb
|
79
|
+
- test/data/hd2.rb
|
80
|
+
- test/data/hd3.rb
|
81
81
|
- test/data/hd4.rb
|
82
|
-
- test/data/
|
83
|
-
- test/data/
|
84
|
-
- test/data/
|
85
|
-
- test/data/bqhd.rb
|
86
|
-
- test/data/be2.rb
|
82
|
+
- test/data/hd5.rb
|
83
|
+
- test/data/hdcat.rb
|
84
|
+
- test/data/hdx.rb
|
87
85
|
- test/data/heredoc.rb
|
88
|
-
- test/data/
|
86
|
+
- test/data/if.rb
|
87
|
+
- test/data/jbridge.rb
|
88
|
+
- test/data/mod.rb
|
89
|
+
- test/data/nl_as_strdelim.rb
|
90
|
+
- test/data/pw.rb
|
91
|
+
- test/data/skkdictools.rb
|
92
|
+
- test/data/wvt.rb
|
93
|
+
- test/generate_parse_tree_server_rc.rb
|
94
|
+
- test/rp-locatetest.rb
|
95
|
+
- test/test_1.9.rb
|
96
|
+
- test/test_all.rb
|
89
97
|
- test/test_redparse.rb
|
90
|
-
-
|
91
|
-
- README.txt
|
92
|
-
- History.txt
|
93
|
-
- Rakefile
|
94
|
-
- COPYING.LGPL
|
95
|
-
- bin/redparse
|
96
|
-
- lib/redparse/generate.rb
|
97
|
-
- test/data/def_spec.rb
|
98
|
+
- test/test_xform_tree.rb
|
98
99
|
has_rdoc: true
|
99
|
-
homepage: http://github.com/coatl/redparse
|
100
|
+
homepage: http://github.com/coatl/redparse
|
100
101
|
post_install_message:
|
101
102
|
rdoc_options:
|
102
103
|
- --main
|
@@ -123,4 +124,4 @@ signing_key:
|
|
123
124
|
specification_version: 2
|
124
125
|
summary: RedParse is a ruby parser written in pure ruby.
|
125
126
|
test_files:
|
126
|
-
- test/
|
127
|
+
- test/test_all.rb
|