pegex 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|