genmachine 0.2.3 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/genmachine.gemspec +2 -2
- data/lib/VERSION +1 -1
- data/lib/genmachine/generators/ruby/lib.erb.rb +7 -7
- data/lib/genmachine/spec_parser.rb +5 -2
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.4
|
data/genmachine.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{genmachine}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Joseph Wecker"]
|
12
|
-
s.date = %q{2011-08-
|
12
|
+
s.date = %q{2011-08-23}
|
13
13
|
s.default_executable = %q{genmachine}
|
14
14
|
s.description = %q{Takes a state table where the following are defined: state, input+conditions, accumulate-action, pre-transition-actions, and transition-to. It takes that state table and generates very fast parsers. Similar to Ragel. Currently only outputs pure Ruby.}
|
15
15
|
s.email = %q{joseph.wecker@gmail.com}
|
data/lib/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.4
|
@@ -22,18 +22,18 @@ class String
|
|
22
22
|
def reset; d=dup;d.reset!;d end
|
23
23
|
end
|
24
24
|
|
25
|
+
class Array
|
26
|
+
def into(v); into!(v) unless size == 0 end
|
27
|
+
def into!(v); v << self end
|
28
|
+
def reset!; self.clear end
|
29
|
+
def reset; d=dup;d.reset!;d end
|
30
|
+
end
|
25
31
|
|
26
32
|
module <%= @classname %>
|
27
33
|
def self.parse(str) Parser.new(str).parse end
|
28
34
|
def self.parse_file(fname) Parser.new(IO.read(fname)).parse end
|
29
35
|
|
30
36
|
|
31
|
-
class UArray < Array
|
32
|
-
def into(v); into!(v) unless size == 0 end
|
33
|
-
def into!(v); v << self end
|
34
|
-
def reset!; self.clear end
|
35
|
-
def reset; d=dup;d.reset!;d end
|
36
|
-
end
|
37
37
|
|
38
38
|
class UHash < Hash
|
39
39
|
def into!(v) v << self end
|
@@ -168,7 +168,7 @@ module <%= @classname %>
|
|
168
168
|
<%- if otype == 'U' -%>
|
169
169
|
s = UNode.new(:name=>name,:sline=>@line,:schr=>@pos)
|
170
170
|
<%- elsif otype == '[]' -%>
|
171
|
-
s =
|
171
|
+
s = []
|
172
172
|
<%- elsif otype == '{}' -%>
|
173
173
|
s = UHash.new
|
174
174
|
<%- end -%>
|
@@ -83,6 +83,8 @@ module GenMachine
|
|
83
83
|
def parse_input(val,inputs=nil)
|
84
84
|
iters = 0
|
85
85
|
conds = []
|
86
|
+
val.gsub! /([^\\])\\\[/, '\1<left-square-bracket>'
|
87
|
+
val.gsub! /([^\\])\\\]/, '\1<right-square-bracket>'
|
86
88
|
while val.strip.length > 0 && iters < 100
|
87
89
|
case
|
88
90
|
when val =~ /--+/um
|
@@ -112,10 +114,11 @@ module GenMachine
|
|
112
114
|
'\r' => "\r", '\f' => "\f",
|
113
115
|
'\b' => "\b", '\a' => "\a",
|
114
116
|
'\e' => "\e", '\s' => " ",
|
115
|
-
'\[' => '[', '\]' => ']',
|
116
117
|
"\\\\" => '\\'}
|
117
118
|
def parse_combine_ranges(raw, input)
|
118
|
-
raw.gsub!(/\\[tnrfbaes
|
119
|
+
raw.gsub!(/\\[tnrfbaes\\]/){|m| ESCAPES[m]}
|
120
|
+
raw.gsub!('<left-square-bracket>', '[')
|
121
|
+
raw.gsub!('<right-square-bracket>', ']')
|
119
122
|
if raw =~ /((?:.-.)*)((?:.)*)/um
|
120
123
|
ranges = $1
|
121
124
|
singles = $2
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: genmachine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 4
|
10
|
+
version: 0.2.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Joseph Wecker
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-08-
|
18
|
+
date: 2011-08-23 00:00:00 -07:00
|
19
19
|
default_executable: genmachine
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|