racc 1.5.2 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (122) hide show
  1. checksums.yaml +4 -4
  2. data/README.ja.rdoc +0 -1
  3. data/README.rdoc +6 -7
  4. data/{rdoc → doc}/en/NEWS.en.rdoc +0 -0
  5. data/{rdoc → doc}/en/grammar.en.rdoc +27 -31
  6. data/doc/en/grammar2.en.rdoc +219 -0
  7. data/{rdoc → doc}/ja/NEWS.ja.rdoc +0 -0
  8. data/{rdoc → doc}/ja/command.ja.html +0 -0
  9. data/{rdoc → doc}/ja/debug.ja.rdoc +0 -0
  10. data/{rdoc → doc}/ja/grammar.ja.rdoc +0 -0
  11. data/{rdoc → doc}/ja/index.ja.html +0 -0
  12. data/{rdoc → doc}/ja/parser.ja.rdoc +0 -0
  13. data/{rdoc → doc}/ja/usage.ja.html +0 -0
  14. data/ext/racc/cparse/cparse.c +1 -1
  15. data/ext/racc/cparse/extconf.rb +1 -0
  16. data/lib/racc/info.rb +1 -1
  17. data/lib/racc/parser-text.rb +1 -1
  18. data/lib/racc/parser.rb +1 -1
  19. data/lib/racc/parserfilegenerator.rb +0 -44
  20. data/lib/racc/statetransitiontable.rb +2 -8
  21. metadata +15 -121
  22. data/Rakefile +0 -79
  23. data/ext/racc/com/headius/racc/Cparse.java +0 -849
  24. data/lib/racc/pre-setup +0 -13
  25. data/sample/array.y +0 -67
  26. data/sample/array2.y +0 -59
  27. data/sample/calc-ja.y +0 -66
  28. data/sample/calc.y +0 -65
  29. data/sample/conflict.y +0 -15
  30. data/sample/hash.y +0 -60
  31. data/sample/lalr.y +0 -17
  32. data/sample/lists.y +0 -57
  33. data/sample/syntax.y +0 -46
  34. data/sample/yyerr.y +0 -46
  35. data/test/assets/cadenza.y +0 -170
  36. data/test/assets/cast.y +0 -926
  37. data/test/assets/chk.y +0 -126
  38. data/test/assets/conf.y +0 -16
  39. data/test/assets/csspool.y +0 -729
  40. data/test/assets/digraph.y +0 -29
  41. data/test/assets/echk.y +0 -118
  42. data/test/assets/edtf.y +0 -583
  43. data/test/assets/err.y +0 -60
  44. data/test/assets/error_recovery.y +0 -35
  45. data/test/assets/expect.y +0 -7
  46. data/test/assets/firstline.y +0 -4
  47. data/test/assets/huia.y +0 -318
  48. data/test/assets/ichk.y +0 -102
  49. data/test/assets/intp.y +0 -546
  50. data/test/assets/journey.y +0 -47
  51. data/test/assets/liquor.y +0 -313
  52. data/test/assets/machete.y +0 -423
  53. data/test/assets/macruby.y +0 -2197
  54. data/test/assets/mailp.y +0 -437
  55. data/test/assets/mediacloth.y +0 -599
  56. data/test/assets/mof.y +0 -649
  57. data/test/assets/namae.y +0 -302
  58. data/test/assets/nasl.y +0 -626
  59. data/test/assets/newsyn.y +0 -25
  60. data/test/assets/noend.y +0 -4
  61. data/test/assets/nokogiri-css.y +0 -255
  62. data/test/assets/nonass.y +0 -41
  63. data/test/assets/normal.y +0 -27
  64. data/test/assets/norule.y +0 -4
  65. data/test/assets/nullbug1.y +0 -25
  66. data/test/assets/nullbug2.y +0 -15
  67. data/test/assets/opal.y +0 -1807
  68. data/test/assets/opt.y +0 -123
  69. data/test/assets/percent.y +0 -35
  70. data/test/assets/php_serialization.y +0 -98
  71. data/test/assets/recv.y +0 -97
  72. data/test/assets/riml.y +0 -665
  73. data/test/assets/rrconf.y +0 -14
  74. data/test/assets/ruby18.y +0 -1943
  75. data/test/assets/ruby19.y +0 -2174
  76. data/test/assets/ruby20.y +0 -2350
  77. data/test/assets/ruby21.y +0 -2359
  78. data/test/assets/ruby22.y +0 -2381
  79. data/test/assets/scan.y +0 -72
  80. data/test/assets/syntax.y +0 -50
  81. data/test/assets/tp_plus.y +0 -622
  82. data/test/assets/twowaysql.y +0 -278
  83. data/test/assets/unterm.y +0 -5
  84. data/test/assets/useless.y +0 -12
  85. data/test/assets/yyerr.y +0 -46
  86. data/test/bench.y +0 -36
  87. data/test/helper.rb +0 -115
  88. data/test/infini.y +0 -8
  89. data/test/regress/cadenza +0 -796
  90. data/test/regress/cast +0 -3428
  91. data/test/regress/csspool +0 -2314
  92. data/test/regress/edtf +0 -1794
  93. data/test/regress/huia +0 -1392
  94. data/test/regress/journey +0 -222
  95. data/test/regress/liquor +0 -885
  96. data/test/regress/machete +0 -833
  97. data/test/regress/mediacloth +0 -1463
  98. data/test/regress/mof +0 -1368
  99. data/test/regress/namae +0 -634
  100. data/test/regress/nasl +0 -2058
  101. data/test/regress/nokogiri-css +0 -836
  102. data/test/regress/opal +0 -6431
  103. data/test/regress/php_serialization +0 -336
  104. data/test/regress/riml +0 -3283
  105. data/test/regress/ruby18 +0 -6344
  106. data/test/regress/ruby22 +0 -7460
  107. data/test/regress/tp_plus +0 -1933
  108. data/test/regress/twowaysql +0 -556
  109. data/test/scandata/brace +0 -7
  110. data/test/scandata/gvar +0 -1
  111. data/test/scandata/normal +0 -4
  112. data/test/scandata/percent +0 -18
  113. data/test/scandata/slash +0 -10
  114. data/test/src.intp +0 -34
  115. data/test/start.y +0 -20
  116. data/test/test_chk_y.rb +0 -52
  117. data/test/test_grammar_file_parser.rb +0 -15
  118. data/test/test_racc_command.rb +0 -339
  119. data/test/test_scan_y.rb +0 -52
  120. data/test/testscanner.rb +0 -51
  121. data/web/racc.en.rhtml +0 -42
  122. data/web/racc.ja.rhtml +0 -51
@@ -1,556 +0,0 @@
1
- #
2
- # DO NOT MODIFY!!!!
3
- # This file is automatically generated by Racc 1.5.0
4
- # from Racc grammar file "".
5
- #
6
-
7
- require 'racc/parser.rb'
8
- module TwoWaySQL
9
- class Parser < Racc::Parser
10
-
11
- module_eval(<<'...end twowaysql.y/module_eval...', 'twowaysql.y', 148)
12
-
13
- require 'strscan'
14
-
15
- def initialize(opts={})
16
- opts = {
17
- :debug => false,
18
- :preserve_space => true,
19
- :preserve_comment => false
20
- }.merge(opts)
21
- @yydebug = opts[:debug]
22
- @preserve_space = opts[:preserve_space]
23
- @preserve_comment = opts[:preserve_comment]
24
- @num_questions = 0
25
- end
26
-
27
-
28
- PAREN_EXAMPLE = '\([^\)]+\)'
29
- BEGIN_BIND_VARIABLE = '(\/|\#)\*([^\*]+)\*\1'
30
- BIND_VARIABLE_PATTERN = /\A#{BEGIN_BIND_VARIABLE}\s*/
31
- PAREN_BIND_VARIABLE_PATTERN = /\A#{BEGIN_BIND_VARIABLE}\s*#{PAREN_EXAMPLE}/
32
- EMBED_VARIABLE_PATTERN = /\A(\/|\#)\*\$([^\*]+)\*\1\s*/
33
-
34
- CONDITIONAL_PATTERN = /\A(\/|\#)\*(IF)\s+([^\*]+)\s*\*\1/
35
- BEGIN_END_PATTERN = /\A(\/|\#)\*(BEGIN|END)\s*\*\1/
36
- STRING_LITERAL_PATTERN = /\A(\'(?:[^\']+|\'\')*\')/ ## quoted string
37
- SPLIT_TOKEN_PATTERN = /\A(\S+?)(?=\s*(?:(?:\/|\#)\*|-{2,}|\(|\)|\,))/ ## stop on delimiters --,/*,#*,',',(,)
38
- LITERAL_PATTERN = /\A([^;\s]+)/
39
- SPACES_PATTERN = /\A(\s+)/
40
- QUESTION_PATTERN = /\A\?/
41
- COMMA_PATTERN = /\A\,/
42
- LPAREN_PATTERN = /\A\(/
43
- RPAREN_PATTERN = /\A\)/
44
- ACTUAL_COMMENT_PATTERN = /\A(\/|\#)\*(\s{1,}(?:.*?))\*\1/m ## start with spaces
45
- SEMICOLON_AT_INPUT_END_PATTERN = /\A\;\s*\Z/
46
- UNMATCHED_COMMENT_START_PATTERN = /\A(?:(?:\/|\#)\*)/
47
-
48
- #TODO: remove trailing spaces for S2Dao compatibility, but this spec sometimes causes SQL bugs...
49
- ELSE_PATTERN = /\A\-{2,}\s*ELSE\s*/
50
- AND_PATTERN = /\A(\ *AND)\b/i
51
- OR_PATTERN = /\A(\ *OR)\b/i
52
-
53
-
54
- def parse( io )
55
- @q = []
56
- io.each_line(nil) do |whole|
57
- @s = StringScanner.new(whole)
58
- end
59
- scan_str
60
-
61
- # @q.push [ false, nil ]
62
- @q.push [ false, [@s.pos, nil] ]
63
-
64
- ## call racc's private parse method
65
- do_parse
66
- end
67
-
68
-
69
- ## called by racc
70
- def next_token
71
- @q.shift
72
- end
73
-
74
-
75
- def scan_str
76
- until @s.eos? do
77
- case
78
- when @s.scan(AND_PATTERN)
79
- @q.push [ :AND, [@s.pos, @s[1]] ]
80
- when @s.scan(OR_PATTERN)
81
- @q.push [ :OR, [@s.pos, @s[1]] ]
82
- when @s.scan(SPACES_PATTERN)
83
- @q.push [ :SPACES, [@s.pos, @s[1]] ]
84
- when @s.scan(QUESTION_PATTERN)
85
- @q.push [ :QUESTION, [@s.pos, nil] ]
86
- when @s.scan(COMMA_PATTERN)
87
- @q.push [ :COMMA, [@s.pos, ','] ]
88
- when @s.scan(LPAREN_PATTERN)
89
- @q.push [ :LPAREN, [@s.pos, '('] ]
90
- when @s.scan(RPAREN_PATTERN)
91
- @q.push [ :RPAREN, [@s.pos, ')'] ]
92
- when @s.scan(ELSE_PATTERN)
93
- @q.push [ :ELSE, [@s.pos, nil] ]
94
- when @s.scan(ACTUAL_COMMENT_PATTERN)
95
- @q.push [ :ACTUAL_COMMENT, [@s.pos, @s[1], @s[2]] ] if @preserve_comment
96
- when @s.scan(BEGIN_END_PATTERN)
97
- @q.push [ @s[2].intern, [@s.pos, nil] ]
98
- when @s.scan(CONDITIONAL_PATTERN)
99
- @q.push [ @s[2].intern, [@s.pos, @s[3]] ]
100
- when @s.scan(EMBED_VARIABLE_PATTERN)
101
- @q.push [ :EMBED_VARIABLE, [@s.pos, @s[2]] ]
102
- when @s.scan(PAREN_BIND_VARIABLE_PATTERN)
103
- @q.push [ :PAREN_BIND_VARIABLE, [@s.pos, @s[2]] ]
104
- when @s.scan(BIND_VARIABLE_PATTERN)
105
- @q.push [ :BIND_VARIABLE, [@s.pos, @s[2]] ]
106
- when @s.scan(STRING_LITERAL_PATTERN)
107
- @q.push [ :STRING_LITERAL, [@s.pos, @s[1]] ]
108
- when @s.scan(SPLIT_TOKEN_PATTERN)
109
- @q.push [ :IDENT, [@s.pos, @s[1]] ]
110
- when @s.scan(UNMATCHED_COMMENT_START_PATTERN) ## unmatched comment start, '/*','#*'
111
- raise Racc::ParseError, "unmatched comment. line:[#{line_no(@s.pos)}], str:[#{@s.rest}]"
112
- when @s.scan(LITERAL_PATTERN) ## other string token
113
- @q.push [ :IDENT, [@s.pos, @s[1]] ]
114
- when @s.scan(SEMICOLON_AT_INPUT_END_PATTERN)
115
- #drop semicolon at input end
116
- else
117
- raise Racc::ParseError, "syntax error at or near line:[#{line_no(@s.pos)}], str:[#{@s.rest}]"
118
- end
119
- end
120
- end
121
-
122
-
123
- ## override racc's default on_error method
124
- def on_error(t, v, vstack)
125
- ## cursor in value-stack is an array of two items,
126
- ## that have position value as 0th item. like [731, "ctx[:limit] "]
127
- cursor = vstack.find do |tokens|
128
- tokens.size == 2 and tokens[0].kind_of?(Fixnum)
129
- end
130
- pos = cursor[0]
131
- line = line_no(pos)
132
- rest = @s.string[pos .. -1]
133
- raise Racc::ParseError, "syntax error at or near line:[#{line}], str:[#{rest}]"
134
- end
135
-
136
-
137
- def line_no(pos)
138
- lines = 0
139
- scanned = @s.string[0..(pos)]
140
- scanned.each_line { lines += 1 }
141
- lines
142
- end
143
- ...end twowaysql.y/module_eval...
144
- ##### State transition tables begin ###
145
-
146
- racc_action_table = [
147
- 8, 36, 9, 37, 12, 13, 10, 11, 14, 15,
148
- 16, 17, 18, 19, 22, 23, 24, 8, 38, 9,
149
- 3, 12, 13, 10, 11, 14, 15, 16, 17, 18,
150
- 19, 22, 23, 24, 8, 25, 9, 40, 12, 13,
151
- 10, 11, 14, 15, 16, 17, 18, 19, 22, 23,
152
- 24, 8, 45, 9, 46, 12, 13, 10, 11, 14,
153
- 15, 16, 17, 18, 19, 22, 23, 24, 8, nil,
154
- 9, nil, 12, 13, 10, 11, 14, 15, 16, 17,
155
- 18, 19, 22, 23, 24, 35, 33, 34, 31, 32,
156
- 44, 43, 31, 32 ]
157
-
158
- racc_action_check = [
159
- 2, 24, 2, 24, 2, 2, 2, 2, 2, 2,
160
- 2, 2, 2, 2, 2, 2, 2, 26, 26, 26,
161
- 1, 26, 26, 26, 26, 26, 26, 26, 26, 26,
162
- 26, 26, 26, 26, 27, 3, 27, 28, 27, 27,
163
- 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
164
- 27, 41, 37, 41, 39, 41, 41, 41, 41, 41,
165
- 41, 41, 41, 41, 41, 41, 41, 41, 42, nil,
166
- 42, nil, 42, 42, 42, 42, 42, 42, 42, 42,
167
- 42, 42, 42, 42, 42, 22, 22, 22, 9, 9,
168
- 34, 34, 40, 40 ]
169
-
170
- racc_action_pointer = [
171
- nil, 20, -2, 35, nil, nil, nil, nil, nil, 82,
172
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
173
- nil, nil, 77, nil, -7, nil, 15, 32, 32, nil,
174
- nil, nil, nil, nil, 82, nil, nil, 44, nil, 51,
175
- 86, 49, 66, nil, nil, nil, nil, nil ]
176
-
177
- racc_action_default = [
178
- -2, -35, -1, -35, -3, -4, -5, -6, -2, -2,
179
- -16, -17, -18, -19, -20, -21, -22, -23, -24, -25,
180
- -26, -27, -35, -32, -35, 48, -35, -13, -10, -11,
181
- -12, -2, -2, -28, -35, -30, -33, -35, -7, -35,
182
- -2, -14, -15, -29, -31, -34, -8, -9 ]
183
-
184
- racc_goto_table = [
185
- 2, 1, 28, 39, nil, nil, nil, nil, 26, nil,
186
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
187
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
188
- nil, 41, 42, 47 ]
189
-
190
- racc_goto_check = [
191
- 2, 1, 7, 8, nil, nil, nil, nil, 2, nil,
192
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
193
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
194
- nil, 2, 2, 7 ]
195
-
196
- racc_goto_pointer = [
197
- nil, 1, 0, nil, nil, nil, nil, -7, -25, nil,
198
- nil, nil, nil ]
199
-
200
- racc_goto_default = [
201
- nil, nil, 27, 4, 5, 6, 7, nil, nil, 29,
202
- 30, 20, 21 ]
203
-
204
- racc_reduce_table = [
205
- 0, 0, :racc_error,
206
- 1, 20, :_reduce_1,
207
- 0, 21, :_reduce_2,
208
- 2, 21, :_reduce_3,
209
- 1, 22, :_reduce_none,
210
- 1, 22, :_reduce_none,
211
- 1, 22, :_reduce_none,
212
- 3, 25, :_reduce_7,
213
- 4, 24, :_reduce_8,
214
- 2, 27, :_reduce_9,
215
- 0, 27, :_reduce_10,
216
- 1, 26, :_reduce_none,
217
- 1, 26, :_reduce_none,
218
- 1, 26, :_reduce_none,
219
- 2, 28, :_reduce_14,
220
- 2, 29, :_reduce_15,
221
- 1, 23, :_reduce_16,
222
- 1, 23, :_reduce_17,
223
- 1, 23, :_reduce_18,
224
- 1, 23, :_reduce_19,
225
- 1, 23, :_reduce_20,
226
- 1, 23, :_reduce_21,
227
- 1, 23, :_reduce_22,
228
- 1, 23, :_reduce_23,
229
- 1, 23, :_reduce_24,
230
- 1, 23, :_reduce_25,
231
- 1, 23, :_reduce_none,
232
- 1, 23, :_reduce_none,
233
- 2, 30, :_reduce_28,
234
- 3, 30, :_reduce_29,
235
- 2, 30, :_reduce_30,
236
- 3, 30, :_reduce_31,
237
- 1, 30, :_reduce_32,
238
- 2, 31, :_reduce_33,
239
- 3, 31, :_reduce_34 ]
240
-
241
- racc_reduce_n = 35
242
-
243
- racc_shift_n = 48
244
-
245
- racc_token_table = {
246
- false => 0,
247
- :error => 1,
248
- :BEGIN => 2,
249
- :END => 3,
250
- :IF => 4,
251
- :ELSE => 5,
252
- :AND => 6,
253
- :OR => 7,
254
- :IDENT => 8,
255
- :STRING_LITERAL => 9,
256
- :SPACES => 10,
257
- :COMMA => 11,
258
- :LPAREN => 12,
259
- :RPAREN => 13,
260
- :QUESTION => 14,
261
- :ACTUAL_COMMENT => 15,
262
- :BIND_VARIABLE => 16,
263
- :PAREN_BIND_VARIABLE => 17,
264
- :EMBED_VARIABLE => 18 }
265
-
266
- racc_nt_base = 19
267
-
268
- racc_use_result_var = true
269
-
270
- Racc_arg = [
271
- racc_action_table,
272
- racc_action_check,
273
- racc_action_default,
274
- racc_action_pointer,
275
- racc_goto_table,
276
- racc_goto_check,
277
- racc_goto_default,
278
- racc_goto_pointer,
279
- racc_nt_base,
280
- racc_reduce_table,
281
- racc_token_table,
282
- racc_shift_n,
283
- racc_reduce_n,
284
- racc_use_result_var ]
285
-
286
- Racc_token_to_s_table = [
287
- "$end",
288
- "error",
289
- "BEGIN",
290
- "END",
291
- "IF",
292
- "ELSE",
293
- "AND",
294
- "OR",
295
- "IDENT",
296
- "STRING_LITERAL",
297
- "SPACES",
298
- "COMMA",
299
- "LPAREN",
300
- "RPAREN",
301
- "QUESTION",
302
- "ACTUAL_COMMENT",
303
- "BIND_VARIABLE",
304
- "PAREN_BIND_VARIABLE",
305
- "EMBED_VARIABLE",
306
- "$start",
307
- "sql",
308
- "stmt_list",
309
- "stmt",
310
- "primary",
311
- "if_stmt",
312
- "begin_stmt",
313
- "sub_stmt",
314
- "else_stmt",
315
- "and_stmt",
316
- "or_stmt",
317
- "bind_var",
318
- "embed_var" ]
319
-
320
- Racc_debug_parser = false
321
-
322
- ##### State transition tables end #####
323
-
324
- # reduce 0 omitted
325
-
326
- module_eval(<<'.,.,', 'twowaysql.y', 20)
327
- def _reduce_1(val, _values, result)
328
- result = RootNode.new( val[0] )
329
-
330
- result
331
- end
332
- .,.,
333
-
334
- module_eval(<<'.,.,', 'twowaysql.y', 25)
335
- def _reduce_2(val, _values, result)
336
- result = []
337
-
338
- result
339
- end
340
- .,.,
341
-
342
- module_eval(<<'.,.,', 'twowaysql.y', 29)
343
- def _reduce_3(val, _values, result)
344
- result.push val[1]
345
-
346
- result
347
- end
348
- .,.,
349
-
350
- # reduce 4 omitted
351
-
352
- # reduce 5 omitted
353
-
354
- # reduce 6 omitted
355
-
356
- module_eval(<<'.,.,', 'twowaysql.y', 38)
357
- def _reduce_7(val, _values, result)
358
- result = BeginNode.new( val[1] )
359
-
360
- result
361
- end
362
- .,.,
363
-
364
- module_eval(<<'.,.,', 'twowaysql.y', 43)
365
- def _reduce_8(val, _values, result)
366
- result = IfNode.new( val[0][1], val[1], val[2] )
367
-
368
- result
369
- end
370
- .,.,
371
-
372
- module_eval(<<'.,.,', 'twowaysql.y', 48)
373
- def _reduce_9(val, _values, result)
374
- result = val[1]
375
-
376
- result
377
- end
378
- .,.,
379
-
380
- module_eval(<<'.,.,', 'twowaysql.y', 52)
381
- def _reduce_10(val, _values, result)
382
- result = nil
383
-
384
- result
385
- end
386
- .,.,
387
-
388
- # reduce 11 omitted
389
-
390
- # reduce 12 omitted
391
-
392
- # reduce 13 omitted
393
-
394
- module_eval(<<'.,.,', 'twowaysql.y', 61)
395
- def _reduce_14(val, _values, result)
396
- result = SubStatementNode.new( val[0][1], val[1] )
397
-
398
- result
399
- end
400
- .,.,
401
-
402
- module_eval(<<'.,.,', 'twowaysql.y', 66)
403
- def _reduce_15(val, _values, result)
404
- result = SubStatementNode.new( val[0][1], val[1] )
405
-
406
- result
407
- end
408
- .,.,
409
-
410
- module_eval(<<'.,.,', 'twowaysql.y', 71)
411
- def _reduce_16(val, _values, result)
412
- result = LiteralNode.new( val[0][1] )
413
-
414
- result
415
- end
416
- .,.,
417
-
418
- module_eval(<<'.,.,', 'twowaysql.y', 75)
419
- def _reduce_17(val, _values, result)
420
- result = LiteralNode.new( val[0][1] )
421
-
422
- result
423
- end
424
- .,.,
425
-
426
- module_eval(<<'.,.,', 'twowaysql.y', 79)
427
- def _reduce_18(val, _values, result)
428
- result = LiteralNode.new( val[0][1] )
429
-
430
- result
431
- end
432
- .,.,
433
-
434
- module_eval(<<'.,.,', 'twowaysql.y', 83)
435
- def _reduce_19(val, _values, result)
436
- result = LiteralNode.new( val[0][1] )
437
-
438
- result
439
- end
440
- .,.,
441
-
442
- module_eval(<<'.,.,', 'twowaysql.y', 87)
443
- def _reduce_20(val, _values, result)
444
- result = WhiteSpaceNode.new( val[0][1], @preserve_space )
445
-
446
- result
447
- end
448
- .,.,
449
-
450
- module_eval(<<'.,.,', 'twowaysql.y', 91)
451
- def _reduce_21(val, _values, result)
452
- result = LiteralNode.new( val[0][1] )
453
-
454
- result
455
- end
456
- .,.,
457
-
458
- module_eval(<<'.,.,', 'twowaysql.y', 95)
459
- def _reduce_22(val, _values, result)
460
- result = LiteralNode.new( val[0][1] )
461
-
462
- result
463
- end
464
- .,.,
465
-
466
- module_eval(<<'.,.,', 'twowaysql.y', 99)
467
- def _reduce_23(val, _values, result)
468
- result = LiteralNode.new( val[0][1] )
469
-
470
- result
471
- end
472
- .,.,
473
-
474
- module_eval(<<'.,.,', 'twowaysql.y', 103)
475
- def _reduce_24(val, _values, result)
476
- @num_questions += 1
477
- result = QuestionNode.new( @num_questions )
478
-
479
- result
480
- end
481
- .,.,
482
-
483
- module_eval(<<'.,.,', 'twowaysql.y', 108)
484
- def _reduce_25(val, _values, result)
485
- result = ActualCommentNode.new( val[0][1] , val[0][2] )
486
-
487
- result
488
- end
489
- .,.,
490
-
491
- # reduce 26 omitted
492
-
493
- # reduce 27 omitted
494
-
495
- module_eval(<<'.,.,', 'twowaysql.y', 115)
496
- def _reduce_28(val, _values, result)
497
- result = BindVariableNode.new( val[0][1] )
498
-
499
- result
500
- end
501
- .,.,
502
-
503
- module_eval(<<'.,.,', 'twowaysql.y', 119)
504
- def _reduce_29(val, _values, result)
505
- result = BindVariableNode.new( val[0][1] )
506
-
507
- result
508
- end
509
- .,.,
510
-
511
- module_eval(<<'.,.,', 'twowaysql.y', 123)
512
- def _reduce_30(val, _values, result)
513
- result = BindVariableNode.new( val[0][1] )
514
-
515
- result
516
- end
517
- .,.,
518
-
519
- module_eval(<<'.,.,', 'twowaysql.y', 127)
520
- def _reduce_31(val, _values, result)
521
- result = BindVariableNode.new( val[0][1] )
522
-
523
- result
524
- end
525
- .,.,
526
-
527
- module_eval(<<'.,.,', 'twowaysql.y', 131)
528
- def _reduce_32(val, _values, result)
529
- result = ParenBindVariableNode.new( val[0][1] )
530
-
531
- result
532
- end
533
- .,.,
534
-
535
- module_eval(<<'.,.,', 'twowaysql.y', 136)
536
- def _reduce_33(val, _values, result)
537
- result = EmbedVariableNode.new( val[0][1] )
538
-
539
- result
540
- end
541
- .,.,
542
-
543
- module_eval(<<'.,.,', 'twowaysql.y', 140)
544
- def _reduce_34(val, _values, result)
545
- result = EmbedVariableNode.new( val[0][1] )
546
-
547
- result
548
- end
549
- .,.,
550
-
551
- def _reduce_none(val, _values, result)
552
- val[0]
553
- end
554
-
555
- end # class Parser
556
- end # module TwoWaySQL
data/test/scandata/brace DELETED
@@ -1,7 +0,0 @@
1
- { {
2
- } { } {
3
- { { { } } }
4
- { { { {} } } }
5
- {} {} {}
6
- }
7
- }
data/test/scandata/gvar DELETED
@@ -1 +0,0 @@
1
- { $' $" $& $-a $/ $\ $( $1 $2 $3 $? $-i }
data/test/scandata/normal DELETED
@@ -1,4 +0,0 @@
1
- {
2
- # comment
3
- result = "string".match(/regexp/)[0]
4
- }
@@ -1,18 +0,0 @@
1
- {
2
- 3 % 5 # mod
3
- 3%5 # mod
4
- 3% 5 # mod
5
- i % 5 # mod
6
- i%5 # mod
7
- i% 5 # mod
8
- call %{str} # string
9
- call(%{str}) # string
10
- %q{string} # string
11
- %Q{string} # string
12
- %r{string} # string
13
- %w(array) # array
14
- %x{array} # command string
15
- %{string} # string
16
- %_string_ # string
17
- %/string/ # regexp
18
- }
data/test/scandata/slash DELETED
@@ -1,10 +0,0 @@
1
- {
2
- # here's many '/'s
3
- i = 5/1 # div
4
- re = /regex/ # regexp
5
- i /= 5 # div
6
- result = 5 / 1 # div
7
- result = 5/ 1 # div
8
- call(/regex/) # regexp
9
- call /regex/ # regexp
10
- }
data/test/src.intp DELETED
@@ -1,34 +0,0 @@
1
- def assert( no, cond )
2
- if cond then
3
- else
4
- raise( 'assert ' + to_s(no) + ' failed' )
5
- end
6
- end
7
-
8
- assert( 1, concat(concat(concat('str=', 'a'), "b"), 'c') == 'str=abc' )
9
- assert( 2, 'operator' + ' ok' == 'operator ok' )
10
- assert( 3, 1 + 1 == 2 )
11
- assert( 4, 4 * 1 + 10 * 1 == 14 )
12
-
13
- if true then
14
- assert( 5, true )
15
- else
16
- assert( 6, false )
17
- end
18
-
19
- i = 1
20
- while i == 1 do
21
- i = false
22
- end
23
- assert( 7, i == false )
24
- assert( 8, nil == nil )
25
-
26
- def func
27
- assert( 9, true )
28
- end
29
- func
30
-
31
- def argfunc( str )
32
- assert( 10, str == 'ok' )
33
- end
34
- argfunc 'ok'
data/test/start.y DELETED
@@ -1,20 +0,0 @@
1
- class S
2
-
3
- start st
4
-
5
- rule
6
-
7
- n: D { result = 'no' }
8
- st : A B C n { result = 'ok' }
9
-
10
- end
11
-
12
- ---- inner
13
-
14
- def parse
15
- do_parse
16
- end
17
-
18
- ---- footer
19
-
20
- S.new.parse == 'ok' or raise 'start stmt not worked'
data/test/test_chk_y.rb DELETED
@@ -1,52 +0,0 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), 'helper'))
2
-
3
- module Racc
4
- class TestChkY < TestCase
5
- def setup
6
- super
7
- file = File.join(ASSET_DIR, 'chk.y')
8
- @debug_flags = Racc::DebugFlags.parse_option_string('o')
9
- parser = Racc::GrammarFileParser.new(@debug_flags)
10
- @result = parser.parse(File.read(file), File.basename(file))
11
- @states = Racc::States.new(@result.grammar).nfa
12
- @states.dfa
13
- end
14
-
15
- def test_compile_chk_y
16
- generator = Racc::ParserFileGenerator.new(@states, @result.params.dup)
17
-
18
- # it generates valid ruby
19
- assert Module.new {
20
- self.instance_eval(generator.generate_parser, __FILE__, __LINE__)
21
- }
22
-
23
- grammar = @states.grammar
24
-
25
- assert_equal 0, @states.n_srconflicts
26
- assert_equal 0, @states.n_rrconflicts
27
- assert_equal 0, grammar.n_useless_nonterminals
28
- assert_equal 0, grammar.n_useless_rules
29
- assert_nil grammar.n_expected_srconflicts
30
- end
31
-
32
- def test_compile_chk_y_line_convert
33
- params = @result.params.dup
34
- params.convert_line_all = true
35
-
36
- generator = Racc::ParserFileGenerator.new(@states, @result.params.dup)
37
-
38
- # it generates valid ruby
39
- assert Module.new {
40
- self.instance_eval(generator.generate_parser, __FILE__, __LINE__)
41
- }
42
-
43
- grammar = @states.grammar
44
-
45
- assert_equal 0, @states.n_srconflicts
46
- assert_equal 0, @states.n_rrconflicts
47
- assert_equal 0, grammar.n_useless_nonterminals
48
- assert_equal 0, grammar.n_useless_rules
49
- assert_nil grammar.n_expected_srconflicts
50
- end
51
- end
52
- end