pegex 0.0.1 → 0.0.2
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/.gemspec +1 -1
- data/CHANGELOG.yaml +3 -0
- data/Gemfile.lock +1 -1
- data/ToDo +7 -0
- data/lib/pegex.rb +7 -8
- data/lib/pegex/compiler.rb +4 -0
- data/lib/pegex/input.rb +2 -5
- data/lib/pegex/pegex/ast.rb +1 -1
- data/test/optimize.rb +18 -0
- metadata +3 -1
data/.gemspec
CHANGED
data/CHANGELOG.yaml
CHANGED
data/Gemfile.lock
CHANGED
data/ToDo
ADDED
data/lib/pegex.rb
CHANGED
@@ -1,6 +1,4 @@
|
|
1
|
-
module Pegex
|
2
|
-
VERSION = '0.0.1'
|
3
|
-
end
|
1
|
+
module Pegex;end
|
4
2
|
|
5
3
|
require 'pegex/parser'
|
6
4
|
require 'pegex/grammar'
|
@@ -10,9 +8,10 @@ def pegex grammar_text, receiver=nil
|
|
10
8
|
require 'pegex/tree/wrap'
|
11
9
|
receiver = Pegex::Tree::Wrap.new
|
12
10
|
end
|
13
|
-
receiver = receiver.new
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
11
|
+
receiver = receiver.new \
|
12
|
+
if receiver.class == Class
|
13
|
+
return Pegex::Parser.new do |p|
|
14
|
+
p.grammar = Pegex::Grammar.new {|g| g.text = grammar_text}
|
15
|
+
p.receiver = receiver
|
16
|
+
end
|
18
17
|
end
|
data/lib/pegex/compiler.rb
CHANGED
@@ -3,6 +3,10 @@ require 'pegex/pegex/grammar'
|
|
3
3
|
require 'pegex/pegex/ast'
|
4
4
|
require 'pegex/grammar/atoms'
|
5
5
|
|
6
|
+
# TODO:
|
7
|
+
# Regenerate #make_tree's (or just #tree's?) similar to this:
|
8
|
+
# ruby -rpp -rpegex/compiler -e 'pp Pegex::Compiler.new.compile(File.read "share/jsony.pgx").tree''
|
9
|
+
|
6
10
|
class Pegex::Compiler
|
7
11
|
attr_accessor :tree
|
8
12
|
|
data/lib/pegex/input.rb
CHANGED
@@ -18,11 +18,8 @@ class Pegex::Input
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def open
|
21
|
-
|
22
|
-
|
23
|
-
else
|
24
|
-
fail "Pegex::Input::open failed. No source to open"
|
25
|
-
end
|
21
|
+
@buffer = @string \
|
22
|
+
or fail "Pegex::Input::open failed. No source to open"
|
26
23
|
@is_open = true
|
27
24
|
end
|
28
25
|
|
data/lib/pegex/pegex/ast.rb
CHANGED
data/test/optimize.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require './test/lib/test_pegex'
|
2
|
+
|
3
|
+
__END__
|
4
|
+
#TODO
|
5
|
+
TestML.require_or_skip 'psych'
|
6
|
+
|
7
|
+
TestML.run do |t|
|
8
|
+
t.eval '*grammar.compile.optimize.yaml.clean == *yaml'
|
9
|
+
end
|
10
|
+
|
11
|
+
TestML.data <<'...'
|
12
|
+
=== Question Mark Expansion
|
13
|
+
--- grammar
|
14
|
+
a: /(:foo)/
|
15
|
+
--- yaml
|
16
|
+
a:
|
17
|
+
.rgx: /(?:foo)/
|
18
|
+
...
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pegex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -45,6 +45,7 @@ files:
|
|
45
45
|
- LICENSE
|
46
46
|
- README.rdoc
|
47
47
|
- Rakefile
|
48
|
+
- ToDo
|
48
49
|
- lib/pegex.rb
|
49
50
|
- lib/pegex/compiler.rb
|
50
51
|
- lib/pegex/grammar.rb
|
@@ -68,6 +69,7 @@ files:
|
|
68
69
|
- test/lib/test_pegex.rb
|
69
70
|
- test/lib/testast.rb
|
70
71
|
- test/lib/xxx.rb
|
72
|
+
- test/optimize.rb
|
71
73
|
- test/tree-pegex.tml
|
72
74
|
- test/tree.rb
|
73
75
|
- test/tree.tml
|