reg 0.4.8 → 0.5.0a0
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.
- checksums.yaml +4 -0
- data/COPYING +0 -0
- data/History.txt +14 -0
- data/Makefile +59 -0
- data/README +87 -40
- data/article.txt +838 -0
- data/{assert.rb → lib/assert.rb} +3 -3
- data/{reg.rb → lib/reg.rb} +11 -4
- data/lib/reg/version.rb +21 -0
- data/lib/regarray.rb +455 -0
- data/{regarrayold.rb → lib/regarrayold.rb} +33 -7
- data/lib/regbackref.rb +73 -0
- data/lib/regbind.rb +230 -0
- data/{regcase.rb → lib/regcase.rb} +15 -5
- data/lib/regcompiler.rb +2341 -0
- data/{regcore.rb → lib/regcore.rb} +196 -85
- data/{regdeferred.rb → lib/regdeferred.rb} +35 -4
- data/{regposition.rb → lib/regevent.rb} +36 -38
- data/lib/reggraphpoint.rb +28 -0
- data/lib/reghash.rb +631 -0
- data/lib/reginstrumentation.rb +36 -0
- data/{regitem_that.rb → lib/regitem_that.rb} +32 -11
- data/{regknows.rb → lib/regknows.rb} +4 -2
- data/{reglogic.rb → lib/reglogic.rb} +76 -59
- data/{reglookab.rb → lib/reglookab.rb} +31 -21
- data/lib/regmatchset.rb +323 -0
- data/{regold.rb → lib/regold.rb} +27 -27
- data/{regpath.rb → lib/regpath.rb} +91 -1
- data/lib/regposition.rb +79 -0
- data/lib/regprogress.rb +1522 -0
- data/lib/regrepeat.rb +307 -0
- data/lib/regreplace.rb +254 -0
- data/lib/regslicing.rb +581 -0
- data/lib/regsubseq.rb +72 -0
- data/lib/regsugar.rb +361 -0
- data/lib/regvar.rb +180 -0
- data/lib/regxform.rb +212 -0
- data/{trace.rb → lib/trace_during.rb} +6 -4
- data/lib/warning.rb +37 -0
- data/parser.txt +26 -8
- data/philosophy.txt +18 -0
- data/reg.gemspec +58 -25
- data/regguide.txt +18 -0
- data/test/andtest.rb +46 -0
- data/test/regcompiler_test.rb +346 -0
- data/test/regdemo.rb +20 -0
- data/{item_thattest.rb → test/regitem_thattest.rb} +2 -2
- data/test/regtest.rb +2125 -0
- data/test/test_all.rb +32 -0
- data/test/test_reg.rb +19 -0
- metadata +108 -73
- data/calc.reg +0 -73
- data/forward_to.rb +0 -49
- data/numberset.rb +0 -200
- data/regarray.rb +0 -675
- data/regbackref.rb +0 -126
- data/regbind.rb +0 -74
- data/reggrid.csv +1 -2
- data/reghash.rb +0 -318
- data/regprogress.rb +0 -1054
- data/regreplace.rb +0 -114
- data/regsugar.rb +0 -230
- data/regtest.rb +0 -1078
- data/regvar.rb +0 -76
data/lib/regxform.rb
ADDED
@@ -0,0 +1,212 @@
|
|
1
|
+
=begin copyright
|
2
|
+
reg - the ruby extended grammar
|
3
|
+
Copyright (C) 2016 Caleb Clausen
|
4
|
+
|
5
|
+
This library is free software; you can redistribute it and/or
|
6
|
+
modify it under the terms of the GNU Lesser General Public
|
7
|
+
License as published by the Free Software Foundation; either
|
8
|
+
version 2.1 of the License, or (at your option) any later version.
|
9
|
+
|
10
|
+
This library is distributed in the hope that it will be useful,
|
11
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
13
|
+
Lesser General Public License for more details.
|
14
|
+
|
15
|
+
You should have received a copy of the GNU Lesser General Public
|
16
|
+
License along with this library; if not, write to the Free Software
|
17
|
+
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
18
|
+
=end
|
19
|
+
require 'reg'
|
20
|
+
require 'regcompiler' #but then breaks it!
|
21
|
+
|
22
|
+
#use of this file breaks the compiler.
|
23
|
+
#only trees are supported. maybe dags if you're lucky.
|
24
|
+
#not full graphs.
|
25
|
+
#array matchers are not supported currently.
|
26
|
+
|
27
|
+
module Reg
|
28
|
+
module Reg
|
29
|
+
def xform!(datum,changed={})
|
30
|
+
datum or fail
|
31
|
+
Thread.current[:Reg_xform_session]=session={}
|
32
|
+
changed.merge!(session) if self===datum
|
33
|
+
ensure
|
34
|
+
Thread.current[:Reg_xform_session]=nil
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
class Bound
|
39
|
+
def === other #this is a hack
|
40
|
+
result= @reg===other
|
41
|
+
session=Thread.current[:Reg_xform_session]
|
42
|
+
if result and session and !session.has_key? @name
|
43
|
+
session[@name]=other
|
44
|
+
end
|
45
|
+
return result
|
46
|
+
end
|
47
|
+
|
48
|
+
def formula_value other,session #another hack...
|
49
|
+
result= @reg.formula_value other,session
|
50
|
+
|
51
|
+
if session and !session.has_key? @name
|
52
|
+
session[@name]=result
|
53
|
+
end
|
54
|
+
return result
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
class BoundRef
|
59
|
+
def inspect
|
60
|
+
"~:#{name}"
|
61
|
+
end
|
62
|
+
def === other #this is a hack
|
63
|
+
session=Thread.current[:Reg_xform_session]
|
64
|
+
if session and session.has_key? @name
|
65
|
+
session[@name]==other
|
66
|
+
else raise NameNotBound #name not bound yet? that's an error
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def formula_value(other,session)
|
71
|
+
warn "warning: BoundRef #{inspect} value missing" if !session.has_key?(name) and session["final"]
|
72
|
+
session.fetch(name,session["final"] ? nil : self)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
module Formula #more hackery
|
77
|
+
def % other
|
78
|
+
if Symbol===other
|
79
|
+
Reg::Bound.new(self,other)
|
80
|
+
else
|
81
|
+
super
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
module Composite
|
87
|
+
def at_construct_time(*args)
|
88
|
+
#do nothing, no infections at all are appropriate when using this file
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
class NameNotBound<RuntimeError; end
|
93
|
+
class ReplacingNilError<RuntimeError; end
|
94
|
+
|
95
|
+
class Transform
|
96
|
+
def inspect
|
97
|
+
from.inspect+" >> "+to.inspect
|
98
|
+
end
|
99
|
+
def === other #this is a hack
|
100
|
+
result= from===other
|
101
|
+
session=Thread.current[:Reg_xform_session]
|
102
|
+
if result and session
|
103
|
+
raise ReplacingNilError,"replaces of nil or false are not allowed" unless other
|
104
|
+
locals={:self=>other}
|
105
|
+
if $&
|
106
|
+
locals[:$&]=$&
|
107
|
+
locals[:$`]=$`
|
108
|
+
locals[:$']=$'
|
109
|
+
$&.to_a.each_with_index{|br,i| locals[:"$#{i}"]=br }
|
110
|
+
end
|
111
|
+
session.each_pair{|name,val| locals[name]=val if ::Symbol===name } #hacky... names shouldn't need to be frozen here
|
112
|
+
session[other.__id__]=WithBoundRefValues.new(to,locals)
|
113
|
+
|
114
|
+
=begin
|
115
|
+
case to
|
116
|
+
when Replace::Form; to.fill_out_simple(locals,other) #should handle Literals as well...
|
117
|
+
when BoundRef; to.formula_value(other,locals) #must be eval'd early...?
|
118
|
+
when Formula; WithBoundRefValues.new(to,locals)
|
119
|
+
else to
|
120
|
+
end
|
121
|
+
=end
|
122
|
+
end
|
123
|
+
return result
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
class Replace::Form
|
128
|
+
def formula_value other,session
|
129
|
+
fill_out_simple session,other
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
class And
|
134
|
+
def === other #hack around bugs in AndMachine
|
135
|
+
@regs.each{|reg| return unless reg===other }
|
136
|
+
return other||true
|
137
|
+
end
|
138
|
+
def multiple_infection(*args) end #hacky, never do anything for Reg::And
|
139
|
+
end
|
140
|
+
|
141
|
+
class Or
|
142
|
+
def multiple_infection(*args) end #hacky, never do anything for Reg::Or
|
143
|
+
end
|
144
|
+
class Hash
|
145
|
+
def multiple_infection(*args) end #hacky, never do anything for Reg::Hash
|
146
|
+
end
|
147
|
+
class Object
|
148
|
+
def multiple_infection(*args) end #hacky, never do anything for Reg::Object
|
149
|
+
end
|
150
|
+
class Trace
|
151
|
+
def multiple_infection(*args) end #hacky, never do anything for Reg::Trace
|
152
|
+
end
|
153
|
+
class BP
|
154
|
+
def multiple_infection(*args) end #hacky, never do anything for Reg::BreakPoint
|
155
|
+
end
|
156
|
+
|
157
|
+
class Finally
|
158
|
+
def ===(other)
|
159
|
+
result= @reg===other
|
160
|
+
session=Thread.current[:Reg_xform_session]
|
161
|
+
if result and session
|
162
|
+
session["finally"]||=[]
|
163
|
+
session["finally"]<<[@block,other]
|
164
|
+
end
|
165
|
+
result
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
class<<Object
|
170
|
+
alias new__without_nested_nil_replacer_fix new
|
171
|
+
IMMEDIATES=[nil,false,true,0,:symbol,Class]
|
172
|
+
def new *args
|
173
|
+
hash= (::Hash===args.last ? args.pop : {})
|
174
|
+
replacing_immediate,normal={},{}
|
175
|
+
hash.each_pair{|keymtr,valmtr|
|
176
|
+
if ::Reg::Transform===valmtr and !IMMEDIATES.grep(valmtr).empty? and ::Symbol===keymtr
|
177
|
+
transform=valmtr
|
178
|
+
normal[keymtr]=transform.from
|
179
|
+
replacing_immediate[keymtr]=transform.to
|
180
|
+
else
|
181
|
+
normal[keymtr]=valmtr
|
182
|
+
end
|
183
|
+
}
|
184
|
+
args.push normal
|
185
|
+
result=new__without_nested_nil_replacer_fix(*args)
|
186
|
+
unless replacing_immediate.empty?
|
187
|
+
result=result.finally{|x,session|
|
188
|
+
replacing_immediate.each_pair{|key,to|
|
189
|
+
x.send "#{key}=",to.formula_value(x.send(key),session)
|
190
|
+
}
|
191
|
+
}
|
192
|
+
end
|
193
|
+
return result
|
194
|
+
end
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
tests=proc{
|
199
|
+
require 'test/unit'
|
200
|
+
class XformTests<Test::Unit::TestCase
|
201
|
+
alias assert_op assert_operator
|
202
|
+
def test_and_with_bound_and_replace
|
203
|
+
assert_op String>>"bop", :===, "sdfsdf"
|
204
|
+
assert String>>"bop" === "sdfsdf"
|
205
|
+
assert_op +{ :body=>String >> 'bop' }, :===, {:body => "23423"}
|
206
|
+
assert_op (/sdfgdf/ | Hash )%:top & +{ :body=>String >> 'bop' }, :===, {:body => "23423"}
|
207
|
+
assert_op( (((/7869/ | Hash )%:top) & +{ :body=>String >> 'sdf' }) | Symbol, :===, Hash[:body, "4564563"] )
|
208
|
+
assert_op( ((((/7869/ | Hash )%:top) & +{ :body=>String >> 'sdf' }) | Symbol).trace, :===, Hash[:body, "4564563"] )
|
209
|
+
end
|
210
|
+
end
|
211
|
+
}
|
212
|
+
tests[] if __FILE__==$0
|
@@ -1,6 +1,6 @@
|
|
1
1
|
=begin copyright
|
2
2
|
reg - the ruby extended grammar
|
3
|
-
Copyright (C) 2005 Caleb Clausen
|
3
|
+
Copyright (C) 2005, 2016 Caleb Clausen
|
4
4
|
|
5
5
|
This library is free software; you can redistribute it and/or
|
6
6
|
modify it under the terms of the GNU Lesser General Public
|
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
module Kernel
|
22
22
|
private
|
23
|
-
def
|
23
|
+
def trace_during(traces)
|
24
24
|
if Proc===traces
|
25
25
|
handler=traces
|
26
26
|
traces=nil
|
@@ -38,8 +38,10 @@ private
|
|
38
38
|
result=yield
|
39
39
|
ensure
|
40
40
|
#attempt to remain debuggable while restoring the old trace func
|
41
|
-
set_trace_func(
|
41
|
+
set_trace_func(
|
42
|
+
(defined? DEBUGGER__ and (DEBUGGER__.context.method:trace_func).to_proc)
|
43
|
+
)
|
42
44
|
end
|
43
45
|
result
|
44
46
|
end
|
45
|
-
end
|
47
|
+
end
|
data/lib/warning.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
=begin copyright
|
2
|
+
reg - the ruby extended grammar
|
3
|
+
Copyright (C) 2016 Caleb Clausen
|
4
|
+
|
5
|
+
This library is free software; you can redistribute it and/or
|
6
|
+
modify it under the terms of the GNU Lesser General Public
|
7
|
+
License as published by the Free Software Foundation; either
|
8
|
+
version 2.1 of the License, or (at your option) any later version.
|
9
|
+
|
10
|
+
This library is distributed in the hope that it will be useful,
|
11
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
13
|
+
Lesser General Public License for more details.
|
14
|
+
|
15
|
+
You should have received a copy of the GNU Lesser General Public
|
16
|
+
License along with this library; if not, write to the Free Software
|
17
|
+
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
18
|
+
=end
|
19
|
+
module Kernel
|
20
|
+
def warning(msg)
|
21
|
+
(
|
22
|
+
(defined? $Debug) && $Debug or
|
23
|
+
(defined? $DEBUG) && $DEBUG or
|
24
|
+
(defined? $VERBOSE) && $VERBOSE
|
25
|
+
) or return
|
26
|
+
|
27
|
+
#emit each warning only once
|
28
|
+
@@seenit__||={}
|
29
|
+
clr=caller[0]
|
30
|
+
callerid,mname=clr.match(/^(.*:[0-9]+)(?::in (.*))?$/)[1..2]
|
31
|
+
mname=mname[1..-2] if /^`.*'$/===mname
|
32
|
+
@@seenit__[callerid] and return
|
33
|
+
@@seenit__[callerid]=1
|
34
|
+
|
35
|
+
warn [callerid,": warning: (",mname,") ",msg].join
|
36
|
+
end
|
37
|
+
end
|
data/parser.txt
CHANGED
@@ -1,3 +1,21 @@
|
|
1
|
+
=begin copyright
|
2
|
+
reg - the ruby extended grammar
|
3
|
+
Copyright (C) 2016 Caleb Clausen
|
4
|
+
|
5
|
+
This library is free software; you can redistribute it and/or
|
6
|
+
modify it under the terms of the GNU Lesser General Public
|
7
|
+
License as published by the Free Software Foundation; either
|
8
|
+
version 2.1 of the License, or (at your option) any later version.
|
9
|
+
|
10
|
+
This library is distributed in the hope that it will be useful,
|
11
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
13
|
+
Lesser General Public License for more details.
|
14
|
+
|
15
|
+
You should have received a copy of the GNU Lesser General Public
|
16
|
+
License along with this library; if not, write to the Free Software
|
17
|
+
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
18
|
+
=end
|
1
19
|
Lalr(n) parsing with reg
|
2
20
|
|
3
21
|
Yesterday, I introduced my the Ruby Extended Grammar, a pattern matching
|
@@ -48,11 +66,11 @@ The heart of the parser are its grammar rules, reproduced here:
|
|
48
66
|
|
49
67
|
#last element is always lookahead
|
50
68
|
Reduce=
|
51
|
-
-[ -[:p, '(', exp, ')'].sub {PrintExp.new BR
|
52
|
-
-[ -['(', exp, ')'] .sub {BR
|
53
|
-
-[ -[exp, leftop, exp] .sub {OpExp.new *BR
|
69
|
+
-[ -[:p, '(', exp, ')'].sub {PrintExp.new BR(2)}, OB ] | # p(exp)
|
70
|
+
-[ -['(', exp, ')'] .sub {BR(1)}, OB ] | # (exp)
|
71
|
+
-[ -[exp, leftop, exp] .sub {OpExp.new *BR(0..2)}, regproc{lowerop(BR(1))} ] | # exp+exp
|
54
72
|
-[ exp, -[';'] .sub [], :EOI ] | #elide final trailing ;
|
55
|
-
-[ -[name, '=', exp] .sub {AssignExp.new BR
|
73
|
+
-[ -[name, '=', exp] .sub {AssignExp.new BR(0),BR(2)}, lowerop('=') ] #name=exp
|
56
74
|
|
57
75
|
Precedence is handled by the middle rule. This rule reduces infix operator
|
58
76
|
expressions (except =). It only matches if the lookahead does not contain a
|
@@ -157,11 +175,11 @@ end
|
|
157
175
|
|
158
176
|
#last element is always lookahead
|
159
177
|
Reduce=
|
160
|
-
-[ -[:p, '(', exp, ')'].sub {PrintExp.new BR
|
161
|
-
-[ -['(', exp, ')'] .sub {BR
|
162
|
-
-[ -[exp, leftop, exp] .sub {OpExp.new *BR
|
178
|
+
-[ -[:p, '(', exp, ')'].sub {PrintExp.new BR(2)}, OB ] | # p(exp)
|
179
|
+
-[ -['(', exp, ')'] .sub {BR(1)}, OB ] | # (exp)
|
180
|
+
-[ -[exp, leftop, exp] .sub {OpExp.new *BR(0..2)}, regproc{lowerop(BR[1])} ] | # exp+exp
|
163
181
|
-[ exp, -[';'] .sub [], :EOI ] | #elide final trailing ;
|
164
|
-
-[ -[name, '=', exp] .sub {AssignExp.new BR
|
182
|
+
-[ -[name, '=', exp] .sub {AssignExp.new BR(0),BR(2)}, lowerop('=') ] #name=exp
|
165
183
|
|
166
184
|
#last element of stack is always lookahead
|
167
185
|
def reduceloop(stack)
|
data/philosophy.txt
CHANGED
@@ -1,3 +1,21 @@
|
|
1
|
+
=begin copyright
|
2
|
+
reg - the ruby extended grammar
|
3
|
+
Copyright (C) 2016 Caleb Clausen
|
4
|
+
|
5
|
+
This library is free software; you can redistribute it and/or
|
6
|
+
modify it under the terms of the GNU Lesser General Public
|
7
|
+
License as published by the Free Software Foundation; either
|
8
|
+
version 2.1 of the License, or (at your option) any later version.
|
9
|
+
|
10
|
+
This library is distributed in the hope that it will be useful,
|
11
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
13
|
+
Lesser General Public License for more details.
|
14
|
+
|
15
|
+
You should have received a copy of the GNU Lesser General Public
|
16
|
+
License along with this library; if not, write to the Free Software
|
17
|
+
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
18
|
+
=end
|
1
19
|
|
2
20
|
|
3
21
|
That's a long story, and well worth telling.
|
data/reg.gemspec
CHANGED
@@ -1,29 +1,62 @@
|
|
1
|
-
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
=begin copyright
|
3
|
+
reg - the ruby extended grammar
|
4
|
+
Copyright (C) 2016 Caleb Clausen
|
2
5
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
6
|
+
This library is free software; you can redistribute it and/or
|
7
|
+
modify it under the terms of the GNU Lesser General Public
|
8
|
+
License as published by the Free Software Foundation; either
|
9
|
+
version 2.1 of the License, or (at your option) any later version.
|
10
|
+
|
11
|
+
This library is distributed in the hope that it will be useful,
|
12
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
14
|
+
Lesser General Public License for more details.
|
15
|
+
|
16
|
+
You should have received a copy of the GNU Lesser General Public
|
17
|
+
License along with this library; if not, write to the Free Software
|
18
|
+
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
19
|
+
=end
|
20
|
+
dir=File.dirname(__FILE__)
|
21
|
+
require "#{dir}/lib/reg/version"
|
22
|
+
Reg::Description=open("#{dir}/README"){|f| f.read[/\A.*?\n\n.*?\n\n/m] } #customized
|
23
|
+
Reg::Latest_changes="###"+open("#{dir}/History.txt"){|f| f.read[/\A===(.*?)(?====)/m,1] }
|
24
|
+
|
25
|
+
Gem::Specification.new do |s|
|
26
|
+
s.name = "reg"
|
27
|
+
s.version = Reg::VERSION
|
28
|
+
|
29
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
30
|
+
s.authors = ["Caleb Clausen"]
|
31
|
+
s.date = Time.now.strftime("%Y-%m-%d")
|
32
|
+
s.email = %q{caleb (at) inforadical (dot) net}
|
33
|
+
s.extra_rdoc_files = ["README", "COPYING"]
|
34
|
+
s.files = `git ls-files`.split-['Rakefile']
|
35
|
+
s.files.reject!{|fn| %r{^ramblings/}===fn }
|
36
|
+
s.has_rdoc = true
|
37
|
+
s.homepage = %{http://github.com/coatl/reg}
|
38
|
+
s.rdoc_options = %w[--main README]
|
39
|
+
s.require_paths = ["lib"]
|
40
|
+
s.rubyforge_project = %q{reg}
|
41
|
+
s.rubygems_version = %q{1.3.0}
|
42
|
+
s.test_files = %w[test/test_all.rb]
|
43
|
+
s.summary = "Reg is a library for pattern matching in ruby data structures."
|
44
|
+
s.description = Reg::Description
|
45
|
+
s.license = 'LGPL-2.1'
|
24
46
|
|
47
|
+
if s.respond_to? :specification_version then
|
48
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
49
|
+
s.specification_version = 2
|
25
50
|
|
26
|
-
if
|
27
|
-
|
28
|
-
|
51
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
52
|
+
s.add_runtime_dependency(%q<sequence>, [">= 0.2.4"])
|
53
|
+
s.add_runtime_dependency(%q<Ron>, [">= 0.1.2"])
|
54
|
+
else
|
55
|
+
s.add_dependency(%q<sequence>, [">= 0.2.4"])
|
56
|
+
s.add_dependency(%q<Ron>, [">= 0.1.2"])
|
57
|
+
end
|
58
|
+
else
|
59
|
+
s.add_dependency(%q<sequence>, [">= 0.2.4"])
|
60
|
+
s.add_dependency(%q<Ron>, [">= 0.1.2"])
|
61
|
+
end
|
29
62
|
end
|
data/regguide.txt
CHANGED
@@ -1,3 +1,21 @@
|
|
1
|
+
=begin copyright
|
2
|
+
reg - the ruby extended grammar
|
3
|
+
Copyright (C) 2016 Caleb Clausen
|
4
|
+
|
5
|
+
This library is free software; you can redistribute it and/or
|
6
|
+
modify it under the terms of the GNU Lesser General Public
|
7
|
+
License as published by the Free Software Foundation; either
|
8
|
+
version 2.1 of the License, or (at your option) any later version.
|
9
|
+
|
10
|
+
This library is distributed in the hope that it will be useful,
|
11
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
13
|
+
Lesser General Public License for more details.
|
14
|
+
|
15
|
+
You should have received a copy of the GNU Lesser General Public
|
16
|
+
License along with this library; if not, write to the Free Software
|
17
|
+
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
18
|
+
=end
|
1
19
|
Note: this document is half skeleton right now. Eventually, I'll
|
2
20
|
flesh this out into a more user-accessable description of Reg.
|
3
21
|
|