racc 1.4.9-java
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/.gemtest +0 -0
- data/COPYING +515 -0
- data/ChangeLog +846 -0
- data/DEPENDS +4 -0
- data/Manifest.txt +105 -0
- data/README.ja.rdoc +96 -0
- data/README.rdoc +86 -0
- data/Rakefile +51 -0
- data/TODO +5 -0
- data/bin/racc +308 -0
- data/bin/racc2y +195 -0
- data/bin/y2racc +339 -0
- data/ext/racc/MANIFEST +4 -0
- data/ext/racc/cparse.c +824 -0
- data/ext/racc/depend +1 -0
- data/ext/racc/extconf.rb +5 -0
- data/fastcache/extconf.rb +2 -0
- data/fastcache/fastcache.c +185 -0
- data/lib/racc.rb +6 -0
- data/lib/racc/compat.rb +40 -0
- data/lib/racc/debugflags.rb +59 -0
- data/lib/racc/exception.rb +15 -0
- data/lib/racc/grammar.rb +1115 -0
- data/lib/racc/grammarfileparser.rb +559 -0
- data/lib/racc/info.rb +16 -0
- data/lib/racc/iset.rb +91 -0
- data/lib/racc/logfilegenerator.rb +211 -0
- data/lib/racc/parser-text.rb +479 -0
- data/lib/racc/parser.rb +474 -0
- data/lib/racc/parserfilegenerator.rb +512 -0
- data/lib/racc/pre-setup +13 -0
- data/lib/racc/sourcetext.rb +34 -0
- data/lib/racc/state.rb +971 -0
- data/lib/racc/statetransitiontable.rb +316 -0
- data/lib/racc/static.rb +5 -0
- data/misc/dist.sh +31 -0
- data/rdoc/en/NEWS.en.rdoc +282 -0
- data/rdoc/en/command.en.html +78 -0
- data/rdoc/en/debug.en.rdoc +20 -0
- data/rdoc/en/grammar.en.rdoc +230 -0
- data/rdoc/en/index.en.html +10 -0
- data/rdoc/en/parser.en.rdoc +74 -0
- data/rdoc/en/usage.en.rdoc +83 -0
- data/rdoc/ja/NEWS.ja.rdoc +307 -0
- data/rdoc/ja/command.ja.html +94 -0
- data/rdoc/ja/debug.ja.rdoc +36 -0
- data/rdoc/ja/grammar.ja.rdoc +348 -0
- data/rdoc/ja/index.ja.html +10 -0
- data/rdoc/ja/parser.ja.rdoc +125 -0
- data/rdoc/ja/usage.ja.html +414 -0
- data/sample/array.y +67 -0
- data/sample/array2.y +59 -0
- data/sample/calc-ja.y +66 -0
- data/sample/calc.y +65 -0
- data/sample/conflict.y +15 -0
- data/sample/hash.y +60 -0
- data/sample/lalr.y +17 -0
- data/sample/lists.y +57 -0
- data/sample/syntax.y +46 -0
- data/sample/yyerr.y +46 -0
- data/setup.rb +1587 -0
- data/tasks/doc.rb +12 -0
- data/tasks/email.rb +55 -0
- data/test/assets/chk.y +126 -0
- data/test/assets/conf.y +16 -0
- data/test/assets/digraph.y +29 -0
- data/test/assets/echk.y +118 -0
- data/test/assets/err.y +60 -0
- data/test/assets/expect.y +7 -0
- data/test/assets/firstline.y +4 -0
- data/test/assets/ichk.y +102 -0
- data/test/assets/intp.y +546 -0
- data/test/assets/mailp.y +437 -0
- data/test/assets/newsyn.y +25 -0
- data/test/assets/noend.y +4 -0
- data/test/assets/nonass.y +41 -0
- data/test/assets/normal.y +27 -0
- data/test/assets/norule.y +4 -0
- data/test/assets/nullbug1.y +25 -0
- data/test/assets/nullbug2.y +15 -0
- data/test/assets/opt.y +123 -0
- data/test/assets/percent.y +35 -0
- data/test/assets/recv.y +97 -0
- data/test/assets/rrconf.y +14 -0
- data/test/assets/scan.y +72 -0
- data/test/assets/syntax.y +50 -0
- data/test/assets/unterm.y +5 -0
- data/test/assets/useless.y +12 -0
- data/test/assets/yyerr.y +46 -0
- data/test/bench.y +36 -0
- data/test/helper.rb +91 -0
- data/test/infini.y +8 -0
- data/test/scandata/brace +7 -0
- data/test/scandata/gvar +1 -0
- data/test/scandata/normal +4 -0
- data/test/scandata/percent +18 -0
- data/test/scandata/slash +10 -0
- data/test/src.intp +34 -0
- data/test/start.y +20 -0
- data/test/test_chk_y.rb +51 -0
- data/test/test_grammar_file_parser.rb +15 -0
- data/test/test_racc_command.rb +155 -0
- data/test/test_scan_y.rb +51 -0
- data/test/testscanner.rb +51 -0
- data/web/racc.en.rhtml +42 -0
- data/web/racc.ja.rhtml +51 -0
- metadata +233 -0
@@ -0,0 +1,316 @@
|
|
1
|
+
#
|
2
|
+
# $Id: 4c5f4311663b6d03050953d64d6a0e7905ff2216 $
|
3
|
+
#
|
4
|
+
# Copyright (c) 1999-2006 Minero Aoki
|
5
|
+
#
|
6
|
+
# This program is free software.
|
7
|
+
# You can distribute/modify this program under the terms of
|
8
|
+
# the GNU LGPL, Lesser General Public License version 2.1.
|
9
|
+
# For details of LGPL, see the file "COPYING".
|
10
|
+
#
|
11
|
+
|
12
|
+
require 'racc/parser'
|
13
|
+
|
14
|
+
unless Object.method_defined?(:funcall)
|
15
|
+
class Object
|
16
|
+
alias funcall __send__
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
module Racc
|
21
|
+
|
22
|
+
StateTransitionTable = Struct.new(:action_table,
|
23
|
+
:action_check,
|
24
|
+
:action_default,
|
25
|
+
:action_pointer,
|
26
|
+
:goto_table,
|
27
|
+
:goto_check,
|
28
|
+
:goto_default,
|
29
|
+
:goto_pointer,
|
30
|
+
:token_table,
|
31
|
+
:reduce_table,
|
32
|
+
:reduce_n,
|
33
|
+
:shift_n,
|
34
|
+
:nt_base,
|
35
|
+
:token_to_s_table,
|
36
|
+
:use_result_var,
|
37
|
+
:debug_parser)
|
38
|
+
class StateTransitionTable # reopen
|
39
|
+
def StateTransitionTable.generate(states)
|
40
|
+
StateTransitionTableGenerator.new(states).generate
|
41
|
+
end
|
42
|
+
|
43
|
+
def initialize(states)
|
44
|
+
super()
|
45
|
+
@states = states
|
46
|
+
@grammar = states.grammar
|
47
|
+
self.use_result_var = true
|
48
|
+
self.debug_parser = true
|
49
|
+
end
|
50
|
+
|
51
|
+
attr_reader :states
|
52
|
+
attr_reader :grammar
|
53
|
+
|
54
|
+
def parser_class
|
55
|
+
ParserClassGenerator.new(@states).generate
|
56
|
+
end
|
57
|
+
|
58
|
+
def token_value_table
|
59
|
+
h = {}
|
60
|
+
token_table().each do |sym, i|
|
61
|
+
h[sym.value] = i
|
62
|
+
end
|
63
|
+
h
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
|
68
|
+
class StateTransitionTableGenerator
|
69
|
+
|
70
|
+
def initialize(states)
|
71
|
+
@states = states
|
72
|
+
@grammar = states.grammar
|
73
|
+
end
|
74
|
+
|
75
|
+
def generate
|
76
|
+
t = StateTransitionTable.new(@states)
|
77
|
+
gen_action_tables t, @states
|
78
|
+
gen_goto_tables t, @grammar
|
79
|
+
t.token_table = token_table(@grammar)
|
80
|
+
t.reduce_table = reduce_table(@grammar)
|
81
|
+
t.reduce_n = @states.reduce_n
|
82
|
+
t.shift_n = @states.shift_n
|
83
|
+
t.nt_base = @grammar.nonterminal_base
|
84
|
+
t.token_to_s_table = @grammar.symbols.map {|sym| sym.to_s }
|
85
|
+
t
|
86
|
+
end
|
87
|
+
|
88
|
+
def reduce_table(grammar)
|
89
|
+
t = [0, 0, :racc_error]
|
90
|
+
grammar.each_with_index do |rule, idx|
|
91
|
+
next if idx == 0
|
92
|
+
t.push rule.size
|
93
|
+
t.push rule.target.ident
|
94
|
+
t.push(if rule.action.empty? # and @params.omit_action_call?
|
95
|
+
then :_reduce_none
|
96
|
+
else "_reduce_#{idx}".intern
|
97
|
+
end)
|
98
|
+
end
|
99
|
+
t
|
100
|
+
end
|
101
|
+
|
102
|
+
def token_table(grammar)
|
103
|
+
h = {}
|
104
|
+
grammar.symboltable.terminals.each do |t|
|
105
|
+
h[t] = t.ident
|
106
|
+
end
|
107
|
+
h
|
108
|
+
end
|
109
|
+
|
110
|
+
def gen_action_tables(t, states)
|
111
|
+
t.action_table = yytable = []
|
112
|
+
t.action_check = yycheck = []
|
113
|
+
t.action_default = yydefact = []
|
114
|
+
t.action_pointer = yypact = []
|
115
|
+
e1 = []
|
116
|
+
e2 = []
|
117
|
+
states.each do |state|
|
118
|
+
yydefact.push act2actid(state.defact)
|
119
|
+
if state.action.empty?
|
120
|
+
yypact.push nil
|
121
|
+
next
|
122
|
+
end
|
123
|
+
vector = []
|
124
|
+
state.action.each do |tok, act|
|
125
|
+
vector[tok.ident] = act2actid(act)
|
126
|
+
end
|
127
|
+
addent e1, vector, state.ident, yypact
|
128
|
+
end
|
129
|
+
set_table e1, e2, yytable, yycheck, yypact
|
130
|
+
end
|
131
|
+
|
132
|
+
def gen_goto_tables(t, grammar)
|
133
|
+
t.goto_table = yytable2 = []
|
134
|
+
t.goto_check = yycheck2 = []
|
135
|
+
t.goto_pointer = yypgoto = []
|
136
|
+
t.goto_default = yydefgoto = []
|
137
|
+
e1 = []
|
138
|
+
e2 = []
|
139
|
+
grammar.each_nonterminal do |tok|
|
140
|
+
tmp = []
|
141
|
+
|
142
|
+
# decide default
|
143
|
+
freq = Array.new(@states.size, 0)
|
144
|
+
@states.each do |state|
|
145
|
+
st = state.goto_table[tok]
|
146
|
+
if st
|
147
|
+
st = st.ident
|
148
|
+
freq[st] += 1
|
149
|
+
end
|
150
|
+
tmp[state.ident] = st
|
151
|
+
end
|
152
|
+
max = freq.max
|
153
|
+
if max > 1
|
154
|
+
default = freq.index(max)
|
155
|
+
tmp.map! {|i| default == i ? nil : i }
|
156
|
+
else
|
157
|
+
default = nil
|
158
|
+
end
|
159
|
+
yydefgoto.push default
|
160
|
+
|
161
|
+
# delete default value
|
162
|
+
tmp.pop until tmp.last or tmp.empty?
|
163
|
+
if tmp.compact.empty?
|
164
|
+
# only default
|
165
|
+
yypgoto.push nil
|
166
|
+
next
|
167
|
+
end
|
168
|
+
|
169
|
+
addent e1, tmp, (tok.ident - grammar.nonterminal_base), yypgoto
|
170
|
+
end
|
171
|
+
set_table e1, e2, yytable2, yycheck2, yypgoto
|
172
|
+
end
|
173
|
+
|
174
|
+
def addent(all, arr, chkval, ptr)
|
175
|
+
max = arr.size
|
176
|
+
min = nil
|
177
|
+
arr.each_with_index do |item, idx|
|
178
|
+
if item
|
179
|
+
min ||= idx
|
180
|
+
end
|
181
|
+
end
|
182
|
+
ptr.push(-7777) # mark
|
183
|
+
arr = arr[min...max]
|
184
|
+
all.push [arr, chkval, mkmapexp(arr), min, ptr.size - 1]
|
185
|
+
end
|
186
|
+
|
187
|
+
n = 2 ** 16
|
188
|
+
begin
|
189
|
+
Regexp.compile("a{#{n}}")
|
190
|
+
RE_DUP_MAX = n
|
191
|
+
rescue RegexpError
|
192
|
+
n /= 2
|
193
|
+
retry
|
194
|
+
end
|
195
|
+
|
196
|
+
def mkmapexp(arr)
|
197
|
+
i = ii = 0
|
198
|
+
as = arr.size
|
199
|
+
map = ''
|
200
|
+
maxdup = RE_DUP_MAX
|
201
|
+
curr = nil
|
202
|
+
while i < as
|
203
|
+
ii = i + 1
|
204
|
+
if arr[i]
|
205
|
+
ii += 1 while ii < as and arr[ii]
|
206
|
+
curr = '-'
|
207
|
+
else
|
208
|
+
ii += 1 while ii < as and not arr[ii]
|
209
|
+
curr = '.'
|
210
|
+
end
|
211
|
+
|
212
|
+
offset = ii - i
|
213
|
+
if offset == 1
|
214
|
+
map << curr
|
215
|
+
else
|
216
|
+
while offset > maxdup
|
217
|
+
map << "#{curr}{#{maxdup}}"
|
218
|
+
offset -= maxdup
|
219
|
+
end
|
220
|
+
map << "#{curr}{#{offset}}" if offset > 1
|
221
|
+
end
|
222
|
+
i = ii
|
223
|
+
end
|
224
|
+
Regexp.compile(map, 'n')
|
225
|
+
end
|
226
|
+
|
227
|
+
def set_table(entries, dummy, tbl, chk, ptr)
|
228
|
+
upper = 0
|
229
|
+
map = '-' * 10240
|
230
|
+
|
231
|
+
# sort long to short
|
232
|
+
entries.sort! {|a,b| b[0].size <=> a[0].size }
|
233
|
+
|
234
|
+
entries.each do |arr, chkval, expr, min, ptri|
|
235
|
+
if upper + arr.size > map.size
|
236
|
+
map << '-' * (arr.size + 1024)
|
237
|
+
end
|
238
|
+
idx = map.index(expr)
|
239
|
+
ptr[ptri] = idx - min
|
240
|
+
arr.each_with_index do |item, i|
|
241
|
+
if item
|
242
|
+
i += idx
|
243
|
+
tbl[i] = item
|
244
|
+
chk[i] = chkval
|
245
|
+
map[i] = ?o
|
246
|
+
end
|
247
|
+
end
|
248
|
+
upper = idx + arr.size
|
249
|
+
end
|
250
|
+
end
|
251
|
+
|
252
|
+
def act2actid(act)
|
253
|
+
case act
|
254
|
+
when Shift then act.goto_id
|
255
|
+
when Reduce then -act.ruleid
|
256
|
+
when Accept then @states.shift_n
|
257
|
+
when Error then @states.reduce_n * -1
|
258
|
+
else
|
259
|
+
raise "racc: fatal: wrong act type #{act.class} in action table"
|
260
|
+
end
|
261
|
+
end
|
262
|
+
|
263
|
+
end
|
264
|
+
|
265
|
+
|
266
|
+
class ParserClassGenerator
|
267
|
+
|
268
|
+
def initialize(states)
|
269
|
+
@states = states
|
270
|
+
@grammar = states.grammar
|
271
|
+
end
|
272
|
+
|
273
|
+
def generate
|
274
|
+
table = @states.state_transition_table
|
275
|
+
c = Class.new(::Racc::Parser)
|
276
|
+
c.const_set :Racc_arg, [table.action_table,
|
277
|
+
table.action_check,
|
278
|
+
table.action_default,
|
279
|
+
table.action_pointer,
|
280
|
+
table.goto_table,
|
281
|
+
table.goto_check,
|
282
|
+
table.goto_default,
|
283
|
+
table.goto_pointer,
|
284
|
+
table.nt_base,
|
285
|
+
table.reduce_table,
|
286
|
+
table.token_value_table,
|
287
|
+
table.shift_n,
|
288
|
+
table.reduce_n,
|
289
|
+
false]
|
290
|
+
c.const_set :Racc_token_to_s_table, table.token_to_s_table
|
291
|
+
c.const_set :Racc_debug_parser, true
|
292
|
+
define_actions c
|
293
|
+
c
|
294
|
+
end
|
295
|
+
|
296
|
+
private
|
297
|
+
|
298
|
+
def define_actions(c)
|
299
|
+
c.module_eval "def _reduce_none(vals, vstack) vals[0] end"
|
300
|
+
@grammar.each do |rule|
|
301
|
+
if rule.action.empty?
|
302
|
+
c.funcall(:alias_method, "_reduce_#{rule.ident}", :_reduce_none)
|
303
|
+
else
|
304
|
+
c.funcall(:define_method, "_racc_action_#{rule.ident}", &rule.action.proc)
|
305
|
+
c.module_eval(<<-End, __FILE__, __LINE__ + 1)
|
306
|
+
def _reduce_#{rule.ident}(vals, vstack)
|
307
|
+
_racc_action_#{rule.ident}(*vals)
|
308
|
+
end
|
309
|
+
End
|
310
|
+
end
|
311
|
+
end
|
312
|
+
end
|
313
|
+
|
314
|
+
end
|
315
|
+
|
316
|
+
end # module Racc
|
data/lib/racc/static.rb
ADDED
data/misc/dist.sh
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
rm -rf tmp
|
4
|
+
mkdir tmp
|
5
|
+
cd tmp
|
6
|
+
|
7
|
+
# racc, raccrt
|
8
|
+
cvs -Q export -r`echo V$version | tr . -` -d racc-$version racc
|
9
|
+
cd racc-$version
|
10
|
+
make bootstrap lib/racc/parser-text.rb doc
|
11
|
+
rm -r doc web bits fastcache
|
12
|
+
cd ..
|
13
|
+
mkdir -p raccrt-$version/lib/racc
|
14
|
+
mv racc-$version/lib/racc/parser.rb raccrt-$version/lib/racc
|
15
|
+
mv racc-$version/ext raccrt-$version
|
16
|
+
cp racc-$version/setup.rb raccrt-$version
|
17
|
+
cp racc-$version/README.* raccrt-$version
|
18
|
+
cp racc-$version/COPYING raccrt-$version
|
19
|
+
tar czf $ardir/racc/racc-$version.tar.gz racc-$version
|
20
|
+
tar czf $ardir/raccrt/raccrt-$version.tar.gz raccrt-$version
|
21
|
+
|
22
|
+
# -all
|
23
|
+
mkdir -p racc-$version-all/packages
|
24
|
+
cp racc-$version/setup.rb racc-$version-all
|
25
|
+
cp racc-$version/README.* racc-$version-all
|
26
|
+
mv racc-$version racc-$version-all/packages/racc
|
27
|
+
mv raccrt-$version racc-$version-all/packages/raccrt
|
28
|
+
tar czf $ardir/racc/racc-$version-all.tar.gz racc-$version-all
|
29
|
+
|
30
|
+
cd ..
|
31
|
+
rm -rf tmp
|
@@ -0,0 +1,282 @@
|
|
1
|
+
= NEWS
|
2
|
+
|
3
|
+
=== 1.4.6
|
4
|
+
|
5
|
+
* Bugfixes
|
6
|
+
|
7
|
+
* bin/racc -g option renamed to -t
|
8
|
+
* racc/compiler.rb is removed
|
9
|
+
* '|' is allowed with meta rules
|
10
|
+
* Ruby 1.8.7 compatibility fixes
|
11
|
+
* Ruby 1.9 compatibility fixes
|
12
|
+
|
13
|
+
=== 1.4.5 (2005-11-21)
|
14
|
+
* [FEATURE CHANGE] --no-extensions option was removed.
|
15
|
+
* [fix] racc command should not depend on `raccrt' package.
|
16
|
+
* [fix] --no-omit-actions did not work.
|
17
|
+
* setup.rb 3.4.1.
|
18
|
+
|
19
|
+
=== 1.4.4 (2003-10-12)
|
20
|
+
* document changed.
|
21
|
+
* -all packages does not include amstd and strscan.
|
22
|
+
* setup.rb 3.2.1.
|
23
|
+
|
24
|
+
=== 1.4.3 (2002-11-14)
|
25
|
+
* [fix] reduce ruby 1.8 warnings.
|
26
|
+
|
27
|
+
=== 1.4.2 (2002-01-29)
|
28
|
+
* [new] new option --no-extentions
|
29
|
+
|
30
|
+
=== 1.4.1 (2001-12-02)
|
31
|
+
* now Racc does not depend on amstd library.
|
32
|
+
* update y2racc and racc2y for racc 1.4.1
|
33
|
+
|
34
|
+
=== 1.4.0 (2001-11-30)
|
35
|
+
* minor version up for checking in runtime library into ruby CVS repositry.
|
36
|
+
* RaccParser, RaccScanner -> GrammarFileParser, GrammarFileScanner
|
37
|
+
* modify typo (grammer -> grammar)
|
38
|
+
|
39
|
+
=== 1.3.12 (2001-11-22)
|
40
|
+
* modify installer bug (thanks Tanaka Akira)
|
41
|
+
* enhance regexp/%-strings/gvar detection in action block
|
42
|
+
|
43
|
+
=== 1.3.11 (2001-08-28)
|
44
|
+
* modify scan error on $' $` $/ etc.
|
45
|
+
|
46
|
+
=== 1.3.10 (2001-08-12)
|
47
|
+
* modify prototype missmatch in cparse.c
|
48
|
+
|
49
|
+
=== 1.3.9 (2001-04-07)
|
50
|
+
* support Ruby 1.4 again.
|
51
|
+
|
52
|
+
=== 1.3.8 (2001-03-17)
|
53
|
+
* output symbol name when error
|
54
|
+
* Racc::Parser#token_to_str
|
55
|
+
|
56
|
+
=== 1.3.7 (2001-02-04)
|
57
|
+
* allow nil for EndOfInput (experimental)
|
58
|
+
* more sample grammar files
|
59
|
+
|
60
|
+
=== 1.3.6 (2001-01-22)
|
61
|
+
* modify cparse.so for static link
|
62
|
+
|
63
|
+
=== 1.3.5 (2001-01-18)
|
64
|
+
* %-string scanning was wrong
|
65
|
+
* new directive "expect"
|
66
|
+
|
67
|
+
=== 1.3.4 (2001-01-11)
|
68
|
+
* cparse: add type checks
|
69
|
+
* cparse: rm depend
|
70
|
+
* cparse: does not pass non-VALUE object to rb_iterate()
|
71
|
+
|
72
|
+
=== 1.3.3 (2000-12-25)
|
73
|
+
* <em>critical bug</em> in generator (from 1.3.1)
|
74
|
+
* racc --runtime-version
|
75
|
+
|
76
|
+
=== 1.3.2 (2000-12-21)
|
77
|
+
* bug with racc -E
|
78
|
+
* package strscan togather (again)
|
79
|
+
|
80
|
+
=== 1.3.1 (2000-12-17)
|
81
|
+
* dynamically determine RE_DUP_MAX
|
82
|
+
* ruby version routine was used always
|
83
|
+
|
84
|
+
=== 1.3.0 (2000-11-30)
|
85
|
+
* can yield(sym,val) from scanner (Parser#yyparse)
|
86
|
+
|
87
|
+
=== 1.2.6 (2000-11-28)
|
88
|
+
* class M::C
|
89
|
+
|
90
|
+
=== 1.2.5 (2000-11-20)
|
91
|
+
* big changes in option; -h -f -p -i -n -c -A are incompatible
|
92
|
+
* support long options
|
93
|
+
* y2racc, racc2y leaves actions as default
|
94
|
+
|
95
|
+
=== 1.2.4 (2000-09-13)
|
96
|
+
* updates installer and documents
|
97
|
+
|
98
|
+
=== 1.2.3 (2000-08-14)
|
99
|
+
* output useless rules and nonterminals (version 2)
|
100
|
+
* nonassoc makes error (never shift/reduce)
|
101
|
+
|
102
|
+
=== 1.2.2 (2000-08-12)
|
103
|
+
* internal changes
|
104
|
+
|
105
|
+
=== 1.2.1 (2000-08-05)
|
106
|
+
* racc2y, y2racc
|
107
|
+
|
108
|
+
=== 1.2.0 (2000-08-02)
|
109
|
+
* uses bison's lookahead algorithm
|
110
|
+
|
111
|
+
=== 1.1.6 (2000-07-25)
|
112
|
+
* new keyword "options" and its parameter "no_result_var"
|
113
|
+
|
114
|
+
=== 1.1.5 (2000-07-21)
|
115
|
+
* [IMPORTANT] change keyword "token" to "convert"
|
116
|
+
* NEW keyword "token" for token declearation
|
117
|
+
|
118
|
+
=== 1.1.4 (2000-07-13)
|
119
|
+
* update installer
|
120
|
+
* samples had bugs
|
121
|
+
|
122
|
+
=== 1.1.3 (2000-06-30)
|
123
|
+
* new option -a; does not omit void action call
|
124
|
+
|
125
|
+
=== 1.1.2 (2000-06-29)
|
126
|
+
* now racc does not use strscan.so
|
127
|
+
* ScanError -> Racc::ScanError, ParseError -> Racc::ParseError
|
128
|
+
* more friendly error messages
|
129
|
+
|
130
|
+
=== 1.1.1 (2000-06-15)
|
131
|
+
* require miss
|
132
|
+
* conflicts were not reported with -v
|
133
|
+
|
134
|
+
=== 1.1.0 (2000-06-12)
|
135
|
+
* use other algolithm for generating state table
|
136
|
+
|
137
|
+
=== 1.0.4 (2000-06-04)
|
138
|
+
* S/R conflict & -v flag causes unexpected exception (reported by Tosh)
|
139
|
+
* output useless nonterminals/rules
|
140
|
+
|
141
|
+
=== 1.0.3 (2000-06-03)
|
142
|
+
* use Array#collect! instead of #filter.
|
143
|
+
|
144
|
+
=== 1.0.2 (2000-05-16)
|
145
|
+
* update installer (setup.rb)
|
146
|
+
|
147
|
+
=== 1.0.1 (2000-05-12)
|
148
|
+
* state.rb: faster lookahead & debug lalr code
|
149
|
+
* refine code
|
150
|
+
* update amstd package (1.7.0)
|
151
|
+
|
152
|
+
=== 1.0.0 (2000-05-06)
|
153
|
+
* version 1.0
|
154
|
+
|
155
|
+
=== 0.14.6 (2000-05-05)
|
156
|
+
* much more debug output
|
157
|
+
|
158
|
+
=== 0.14.5 (2000-05-01)
|
159
|
+
|
160
|
+
=== 0.14.4 (2000-04-09)
|
161
|
+
* Racc_* are included in Racc_arg
|
162
|
+
* faster state generation (a little)
|
163
|
+
|
164
|
+
=== 0.14.3 (2000-04-04)
|
165
|
+
* check both of SYM2ID and ID2SYM (thanks Katsuyuki Komatsu)
|
166
|
+
|
167
|
+
=== 0.14.2 (2000-04-03)
|
168
|
+
* "class" on first line causes parse error (thanks Yoshiki Wada)
|
169
|
+
* new option "racc -V"
|
170
|
+
|
171
|
+
=== 0.14.1 (2000-03-31)
|
172
|
+
|
173
|
+
=== 0.14.0 (2000-03-21)
|
174
|
+
* implement "fast" table (same to bison)
|
175
|
+
* stop line no. conversion temporaliry because of ruby bug
|
176
|
+
|
177
|
+
=== 0.13.1 (2000-03-21)
|
178
|
+
* racc --version --copyright did not work (thanks Tadayoshi Funaba)
|
179
|
+
|
180
|
+
=== 0.13.0 (2000-03-20)
|
181
|
+
* implement yyerror/yyerrok/yyaccept
|
182
|
+
|
183
|
+
=== 0.12.2 (2000-03-19)
|
184
|
+
* -E flag had bug
|
185
|
+
|
186
|
+
=== 0.12.1 (2000-03-16)
|
187
|
+
* modify the way to decide default action
|
188
|
+
|
189
|
+
=== 0.12.0 (2000-03-15)
|
190
|
+
* implement real LALR
|
191
|
+
* use both SLR and LALR to resolve conflicts
|
192
|
+
|
193
|
+
=== 0.11.3 (2000-03-09)
|
194
|
+
* modify lookahead routine again
|
195
|
+
|
196
|
+
=== 0.11.2 (2000-03-09)
|
197
|
+
* bug in lookahead routine
|
198
|
+
* modify cparse.so for Symbol class of ruby 1.5
|
199
|
+
|
200
|
+
=== 0.11.1 (2000-03-08)
|
201
|
+
* modify for Symbol
|
202
|
+
* update strscan
|
203
|
+
|
204
|
+
=== 0.11.0 (2000-02-19)
|
205
|
+
* if error is occured in action, ruby print line number of grammar file
|
206
|
+
|
207
|
+
=== 0.10.9 (2000-01-19)
|
208
|
+
* change package/setup
|
209
|
+
|
210
|
+
=== 0.10.8 (2000-01-03)
|
211
|
+
* (1-17 re-packed) add/modify documents
|
212
|
+
|
213
|
+
=== 0.10.7 (2000-01-03)
|
214
|
+
* modify setup.rb, compile.rb, amstd/inst. (thanks: Koji Arai)
|
215
|
+
|
216
|
+
=== 0.10.6 (1999-12-24)
|
217
|
+
* racc -e ruby
|
218
|
+
* omit void action call
|
219
|
+
|
220
|
+
=== 0.10.5 (1999-12-21)
|
221
|
+
* critical bug in embedded action implement
|
222
|
+
* bug in setup.rb
|
223
|
+
* modify calc[2].y for 0.10
|
224
|
+
|
225
|
+
=== 0.10.4 (1999-12-19)
|
226
|
+
* support error recover ('error' token)
|
227
|
+
* can embed runtime by "racc -E"
|
228
|
+
* Racc is module
|
229
|
+
|
230
|
+
=== 0.10.3 (1999-12-01)
|
231
|
+
* support embedded action
|
232
|
+
* modify .output bug
|
233
|
+
|
234
|
+
=== 0.10.2 (1999-11-27)
|
235
|
+
* update document
|
236
|
+
* separate libracc.rb
|
237
|
+
|
238
|
+
=== 0.10.1 (1999-11-19)
|
239
|
+
* rewrite runtime routine in C
|
240
|
+
* once next_token returns [false, *], not call next_token
|
241
|
+
* action is only default, not call next_token
|
242
|
+
* $end is obsolute
|
243
|
+
* LALRactionTable
|
244
|
+
|
245
|
+
=== 0.10.0 (1999-11-06)
|
246
|
+
* next_value, peep_token is obsolute
|
247
|
+
* @__debug__ -> @yydebug
|
248
|
+
* class...rule...end
|
249
|
+
* refine libracc.rb
|
250
|
+
* unify strscan library
|
251
|
+
* *.rb are installed in lib/ruby/VERSION/racc/
|
252
|
+
|
253
|
+
=== 0.9.5 (1999-10-03)
|
254
|
+
* too few arguments for __show_stack__
|
255
|
+
* could not scan $end
|
256
|
+
* typo in d.format.rb
|
257
|
+
|
258
|
+
=== 0.9.4 (1999-09-??)
|
259
|
+
|
260
|
+
=== 0.9.3 (1999-09-03)
|
261
|
+
|
262
|
+
=== 0.9.2 (1999-06-26)
|
263
|
+
|
264
|
+
=== 0.9.1 (1999-06-08)
|
265
|
+
|
266
|
+
=== 0.9.0 (1999-06-03)
|
267
|
+
|
268
|
+
=== 0.8.11 (?)
|
269
|
+
|
270
|
+
=== 0.8.10 (?)
|
271
|
+
|
272
|
+
=== 0.8.9 (1999-03-21)
|
273
|
+
|
274
|
+
=== 0.8.8 (1999-03-20)
|
275
|
+
|
276
|
+
=== 0.8.7 (1999-03-01)
|
277
|
+
|
278
|
+
=== 0.8.0 (1999-01-16)
|
279
|
+
|
280
|
+
=== 0.5.0 (1999-01-07)
|
281
|
+
|
282
|
+
=== 0.1.0 (1999-01-01)
|