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.
Files changed (107) hide show
  1. data/.gemtest +0 -0
  2. data/COPYING +515 -0
  3. data/ChangeLog +846 -0
  4. data/DEPENDS +4 -0
  5. data/Manifest.txt +105 -0
  6. data/README.ja.rdoc +96 -0
  7. data/README.rdoc +86 -0
  8. data/Rakefile +51 -0
  9. data/TODO +5 -0
  10. data/bin/racc +308 -0
  11. data/bin/racc2y +195 -0
  12. data/bin/y2racc +339 -0
  13. data/ext/racc/MANIFEST +4 -0
  14. data/ext/racc/cparse.c +824 -0
  15. data/ext/racc/depend +1 -0
  16. data/ext/racc/extconf.rb +5 -0
  17. data/fastcache/extconf.rb +2 -0
  18. data/fastcache/fastcache.c +185 -0
  19. data/lib/racc.rb +6 -0
  20. data/lib/racc/compat.rb +40 -0
  21. data/lib/racc/debugflags.rb +59 -0
  22. data/lib/racc/exception.rb +15 -0
  23. data/lib/racc/grammar.rb +1115 -0
  24. data/lib/racc/grammarfileparser.rb +559 -0
  25. data/lib/racc/info.rb +16 -0
  26. data/lib/racc/iset.rb +91 -0
  27. data/lib/racc/logfilegenerator.rb +211 -0
  28. data/lib/racc/parser-text.rb +479 -0
  29. data/lib/racc/parser.rb +474 -0
  30. data/lib/racc/parserfilegenerator.rb +512 -0
  31. data/lib/racc/pre-setup +13 -0
  32. data/lib/racc/sourcetext.rb +34 -0
  33. data/lib/racc/state.rb +971 -0
  34. data/lib/racc/statetransitiontable.rb +316 -0
  35. data/lib/racc/static.rb +5 -0
  36. data/misc/dist.sh +31 -0
  37. data/rdoc/en/NEWS.en.rdoc +282 -0
  38. data/rdoc/en/command.en.html +78 -0
  39. data/rdoc/en/debug.en.rdoc +20 -0
  40. data/rdoc/en/grammar.en.rdoc +230 -0
  41. data/rdoc/en/index.en.html +10 -0
  42. data/rdoc/en/parser.en.rdoc +74 -0
  43. data/rdoc/en/usage.en.rdoc +83 -0
  44. data/rdoc/ja/NEWS.ja.rdoc +307 -0
  45. data/rdoc/ja/command.ja.html +94 -0
  46. data/rdoc/ja/debug.ja.rdoc +36 -0
  47. data/rdoc/ja/grammar.ja.rdoc +348 -0
  48. data/rdoc/ja/index.ja.html +10 -0
  49. data/rdoc/ja/parser.ja.rdoc +125 -0
  50. data/rdoc/ja/usage.ja.html +414 -0
  51. data/sample/array.y +67 -0
  52. data/sample/array2.y +59 -0
  53. data/sample/calc-ja.y +66 -0
  54. data/sample/calc.y +65 -0
  55. data/sample/conflict.y +15 -0
  56. data/sample/hash.y +60 -0
  57. data/sample/lalr.y +17 -0
  58. data/sample/lists.y +57 -0
  59. data/sample/syntax.y +46 -0
  60. data/sample/yyerr.y +46 -0
  61. data/setup.rb +1587 -0
  62. data/tasks/doc.rb +12 -0
  63. data/tasks/email.rb +55 -0
  64. data/test/assets/chk.y +126 -0
  65. data/test/assets/conf.y +16 -0
  66. data/test/assets/digraph.y +29 -0
  67. data/test/assets/echk.y +118 -0
  68. data/test/assets/err.y +60 -0
  69. data/test/assets/expect.y +7 -0
  70. data/test/assets/firstline.y +4 -0
  71. data/test/assets/ichk.y +102 -0
  72. data/test/assets/intp.y +546 -0
  73. data/test/assets/mailp.y +437 -0
  74. data/test/assets/newsyn.y +25 -0
  75. data/test/assets/noend.y +4 -0
  76. data/test/assets/nonass.y +41 -0
  77. data/test/assets/normal.y +27 -0
  78. data/test/assets/norule.y +4 -0
  79. data/test/assets/nullbug1.y +25 -0
  80. data/test/assets/nullbug2.y +15 -0
  81. data/test/assets/opt.y +123 -0
  82. data/test/assets/percent.y +35 -0
  83. data/test/assets/recv.y +97 -0
  84. data/test/assets/rrconf.y +14 -0
  85. data/test/assets/scan.y +72 -0
  86. data/test/assets/syntax.y +50 -0
  87. data/test/assets/unterm.y +5 -0
  88. data/test/assets/useless.y +12 -0
  89. data/test/assets/yyerr.y +46 -0
  90. data/test/bench.y +36 -0
  91. data/test/helper.rb +91 -0
  92. data/test/infini.y +8 -0
  93. data/test/scandata/brace +7 -0
  94. data/test/scandata/gvar +1 -0
  95. data/test/scandata/normal +4 -0
  96. data/test/scandata/percent +18 -0
  97. data/test/scandata/slash +10 -0
  98. data/test/src.intp +34 -0
  99. data/test/start.y +20 -0
  100. data/test/test_chk_y.rb +51 -0
  101. data/test/test_grammar_file_parser.rb +15 -0
  102. data/test/test_racc_command.rb +155 -0
  103. data/test/test_scan_y.rb +51 -0
  104. data/test/testscanner.rb +51 -0
  105. data/web/racc.en.rhtml +42 -0
  106. data/web/racc.ja.rhtml +51 -0
  107. 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
@@ -0,0 +1,5 @@
1
+ require 'racc'
2
+ require 'racc/parser'
3
+ require 'racc/grammarfileparser'
4
+ require 'racc/parserfilegenerator'
5
+ require 'racc/logfilegenerator'
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 -&gt; GrammarFileParser, GrammarFileScanner
37
+ * modify typo (grammer -&gt; 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 -&gt; Racc::ScanError, ParseError -&gt; 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__ -&gt; @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)