fancy 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. data/README.md +1 -0
  2. data/bin/fspec +3 -1
  3. data/boot/code_loader.rb +5 -1
  4. data/boot/compiler/parser/ext/fancy_parser.bundle +0 -0
  5. data/boot/fancy_ext.rb +2 -0
  6. data/boot/fancy_ext/bootstrap.rb +6 -0
  7. data/boot/fancy_ext/symbol.rb +9 -0
  8. data/boot/fancy_ext/thread.rb +22 -1
  9. data/boot/load.rb +1 -0
  10. data/boot/rbx-compiler/parser/Makefile +156 -0
  11. data/boot/rbx-compiler/parser/fancy_parser.bundle +0 -0
  12. data/boot/rbx-compiler/parser/lexer.c +2310 -0
  13. data/boot/rbx-compiler/parser/lexer.h +315 -0
  14. data/boot/rbx-compiler/parser/parser.c +2946 -0
  15. data/boot/rbx-compiler/parser/parser.h +151 -0
  16. data/doc/api/fancy.jsonp +1 -1
  17. data/doc/features.md +8 -0
  18. data/examples/actors.fy +5 -9
  19. data/examples/actors_primitive.fy +4 -3
  20. data/examples/actors_ring.fy +15 -14
  21. data/examples/dynamic.fy +8 -0
  22. data/examples/dynamic_output.fy +15 -0
  23. data/examples/parsing.fy +1 -0
  24. data/examples/person.fy +1 -2
  25. data/lib/array.fy +49 -11
  26. data/lib/block.fy +18 -24
  27. data/lib/boot.fy +1 -1
  28. data/lib/class.fy +6 -6
  29. data/lib/compiler/ast.fy +0 -1
  30. data/lib/compiler/ast/assign.fy +25 -0
  31. data/lib/compiler/ast/block.fy +1 -0
  32. data/lib/compiler/ast/identifier.fy +16 -0
  33. data/lib/compiler/ast/literals.fy +4 -0
  34. data/lib/compiler/ast/message_send.fy +16 -1
  35. data/lib/enumerable.fy +45 -18
  36. data/lib/enumerator.fy +15 -15
  37. data/lib/false_class.fy +8 -0
  38. data/lib/fancy_spec.fy +20 -20
  39. data/lib/future.fy +35 -18
  40. data/lib/hash.fy +2 -2
  41. data/lib/integer.fy +1 -17
  42. data/lib/iteration.fy +36 -36
  43. data/lib/object.fy +65 -30
  44. data/lib/package.fy +2 -2
  45. data/lib/package/installer.fy +6 -0
  46. data/lib/parser/ext/Makefile +156 -0
  47. data/lib/parser/ext/fancy_parser.bundle +0 -0
  48. data/lib/parser/ext/lexer.c +2392 -0
  49. data/lib/parser/ext/lexer.h +315 -0
  50. data/lib/parser/ext/lexer.lex +0 -10
  51. data/lib/parser/ext/parser.c +3251 -0
  52. data/lib/parser/ext/parser.h +161 -0
  53. data/lib/parser/ext/parser.y +0 -22
  54. data/lib/parser/methods.fy +1 -13
  55. data/lib/range.fy +3 -3
  56. data/lib/rbx.fy +1 -0
  57. data/lib/rbx/actor.fy +4 -4
  58. data/lib/rbx/alpha.fy +6 -0
  59. data/lib/rbx/array.fy +5 -44
  60. data/lib/rbx/bignum.fy +1 -12
  61. data/lib/rbx/block.fy +25 -0
  62. data/lib/rbx/class.fy +1 -7
  63. data/lib/rbx/date.fy +1 -5
  64. data/lib/rbx/file.fy +1 -4
  65. data/lib/rbx/fixnum.fy +4 -16
  66. data/lib/rbx/float.fy +1 -10
  67. data/lib/rbx/integer.fy +14 -2
  68. data/lib/rbx/io.fy +1 -5
  69. data/lib/rbx/mutex.fy +30 -0
  70. data/lib/rbx/object.fy +5 -11
  71. data/lib/rbx/process.fy +13 -0
  72. data/lib/rbx/range.fy +1 -5
  73. data/lib/rbx/string.fy +4 -11
  74. data/lib/rbx/thread.fy +9 -0
  75. data/lib/rbx/time.fy +1 -7
  76. data/lib/stack.fy +1 -1
  77. data/lib/string.fy +9 -9
  78. data/lib/symbol.fy +12 -7
  79. data/lib/tuple.fy +18 -3
  80. data/lib/vars.fy +3 -0
  81. data/ruby_lib/fspec +2 -2
  82. data/ruby_lib/fyi +2 -2
  83. data/ruby_lib/ifancy +2 -2
  84. data/tests/array.fy +25 -1
  85. data/tests/assignment.fy +55 -0
  86. data/tests/future.fy +28 -0
  87. data/tests/set.fy +20 -0
  88. data/tests/stack.fy +46 -0
  89. data/tests/string.fy +1 -1
  90. data/tests/tuple.fy +22 -0
  91. data/tools/fancy-mode.el +1 -1
  92. metadata +26 -8
  93. data/lib/compiler/ast/goto.fy +0 -46
  94. data/lib/message.fy +0 -6
@@ -0,0 +1,315 @@
1
+ #ifndef yyHEADER_H
2
+ #define yyHEADER_H 1
3
+ #define yyIN_HEADER 1
4
+
5
+ #line 6 "lexer.h"
6
+
7
+ #line 8 "lexer.h"
8
+
9
+ #define YY_INT_ALIGNED short int
10
+
11
+ /* A lexical scanner generated by flex */
12
+
13
+ #define FLEX_SCANNER
14
+ #define YY_FLEX_MAJOR_VERSION 2
15
+ #define YY_FLEX_MINOR_VERSION 5
16
+ #define YY_FLEX_SUBMINOR_VERSION 35
17
+ #if YY_FLEX_SUBMINOR_VERSION > 0
18
+ #define FLEX_BETA
19
+ #endif
20
+
21
+ /* First, we deal with platform-specific or compiler-specific issues. */
22
+
23
+ /* begin standard C headers. */
24
+ #include <stdio.h>
25
+ #include <string.h>
26
+ #include <errno.h>
27
+ #include <stdlib.h>
28
+
29
+ /* end standard C headers. */
30
+
31
+ /* flex integer type definitions */
32
+
33
+ #ifndef FLEXINT_H
34
+ #define FLEXINT_H
35
+
36
+ /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
37
+
38
+ #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
39
+
40
+ /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
41
+ * if you want the limit (max/min) macros for int types.
42
+ */
43
+ #ifndef __STDC_LIMIT_MACROS
44
+ #define __STDC_LIMIT_MACROS 1
45
+ #endif
46
+
47
+ #include <inttypes.h>
48
+ typedef int8_t flex_int8_t;
49
+ typedef uint8_t flex_uint8_t;
50
+ typedef int16_t flex_int16_t;
51
+ typedef uint16_t flex_uint16_t;
52
+ typedef int32_t flex_int32_t;
53
+ typedef uint32_t flex_uint32_t;
54
+ #else
55
+ typedef signed char flex_int8_t;
56
+ typedef short int flex_int16_t;
57
+ typedef int flex_int32_t;
58
+ typedef unsigned char flex_uint8_t;
59
+ typedef unsigned short int flex_uint16_t;
60
+ typedef unsigned int flex_uint32_t;
61
+ #endif /* ! C99 */
62
+
63
+ /* Limits of integral types. */
64
+ #ifndef INT8_MIN
65
+ #define INT8_MIN (-128)
66
+ #endif
67
+ #ifndef INT16_MIN
68
+ #define INT16_MIN (-32767-1)
69
+ #endif
70
+ #ifndef INT32_MIN
71
+ #define INT32_MIN (-2147483647-1)
72
+ #endif
73
+ #ifndef INT8_MAX
74
+ #define INT8_MAX (127)
75
+ #endif
76
+ #ifndef INT16_MAX
77
+ #define INT16_MAX (32767)
78
+ #endif
79
+ #ifndef INT32_MAX
80
+ #define INT32_MAX (2147483647)
81
+ #endif
82
+ #ifndef UINT8_MAX
83
+ #define UINT8_MAX (255U)
84
+ #endif
85
+ #ifndef UINT16_MAX
86
+ #define UINT16_MAX (65535U)
87
+ #endif
88
+ #ifndef UINT32_MAX
89
+ #define UINT32_MAX (4294967295U)
90
+ #endif
91
+
92
+ #endif /* ! FLEXINT_H */
93
+
94
+ #ifdef __cplusplus
95
+
96
+ /* The "const" storage-class-modifier is valid. */
97
+ #define YY_USE_CONST
98
+
99
+ #else /* ! __cplusplus */
100
+
101
+ /* C99 requires __STDC__ to be defined as 1. */
102
+ #if defined (__STDC__)
103
+
104
+ #define YY_USE_CONST
105
+
106
+ #endif /* defined (__STDC__) */
107
+ #endif /* ! __cplusplus */
108
+
109
+ #ifdef YY_USE_CONST
110
+ #define yyconst const
111
+ #else
112
+ #define yyconst
113
+ #endif
114
+
115
+ /* Size of default input buffer. */
116
+ #ifndef YY_BUF_SIZE
117
+ #define YY_BUF_SIZE 16384
118
+ #endif
119
+
120
+ #ifndef YY_TYPEDEF_YY_BUFFER_STATE
121
+ #define YY_TYPEDEF_YY_BUFFER_STATE
122
+ typedef struct yy_buffer_state *YY_BUFFER_STATE;
123
+ #endif
124
+
125
+ #ifndef YY_TYPEDEF_YY_SIZE_T
126
+ #define YY_TYPEDEF_YY_SIZE_T
127
+ typedef size_t yy_size_t;
128
+ #endif
129
+
130
+ extern yy_size_t yyleng;
131
+
132
+ extern FILE *yyin, *yyout;
133
+
134
+ #ifndef YY_STRUCT_YY_BUFFER_STATE
135
+ #define YY_STRUCT_YY_BUFFER_STATE
136
+ struct yy_buffer_state
137
+ {
138
+ FILE *yy_input_file;
139
+
140
+ char *yy_ch_buf; /* input buffer */
141
+ char *yy_buf_pos; /* current position in input buffer */
142
+
143
+ /* Size of input buffer in bytes, not including room for EOB
144
+ * characters.
145
+ */
146
+ yy_size_t yy_buf_size;
147
+
148
+ /* Number of characters read into yy_ch_buf, not including EOB
149
+ * characters.
150
+ */
151
+ yy_size_t yy_n_chars;
152
+
153
+ /* Whether we "own" the buffer - i.e., we know we created it,
154
+ * and can realloc() it to grow it, and should free() it to
155
+ * delete it.
156
+ */
157
+ int yy_is_our_buffer;
158
+
159
+ /* Whether this is an "interactive" input source; if so, and
160
+ * if we're using stdio for input, then we want to use getc()
161
+ * instead of fread(), to make sure we stop fetching input after
162
+ * each newline.
163
+ */
164
+ int yy_is_interactive;
165
+
166
+ /* Whether we're considered to be at the beginning of a line.
167
+ * If so, '^' rules will be active on the next match, otherwise
168
+ * not.
169
+ */
170
+ int yy_at_bol;
171
+
172
+ int yy_bs_lineno; /**< The line count. */
173
+ int yy_bs_column; /**< The column count. */
174
+
175
+ /* Whether to try to fill the input buffer when we reach the
176
+ * end of it.
177
+ */
178
+ int yy_fill_buffer;
179
+
180
+ int yy_buffer_status;
181
+
182
+ };
183
+ #endif /* !YY_STRUCT_YY_BUFFER_STATE */
184
+
185
+ void yyrestart (FILE *input_file );
186
+ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer );
187
+ YY_BUFFER_STATE yy_create_buffer (FILE *file,int size );
188
+ void yy_delete_buffer (YY_BUFFER_STATE b );
189
+ void yy_flush_buffer (YY_BUFFER_STATE b );
190
+ void yypush_buffer_state (YY_BUFFER_STATE new_buffer );
191
+ void yypop_buffer_state (void );
192
+
193
+ YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size );
194
+ YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str );
195
+ YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len );
196
+
197
+ void *yyalloc (yy_size_t );
198
+ void *yyrealloc (void *,yy_size_t );
199
+ void yyfree (void * );
200
+
201
+ extern int yylineno;
202
+
203
+ extern char *yytext;
204
+ #define yytext_ptr yytext
205
+
206
+ #ifdef YY_HEADER_EXPORT_START_CONDITIONS
207
+ #define INITIAL 0
208
+
209
+ #endif
210
+
211
+ #ifndef YY_NO_UNISTD_H
212
+ /* Special case for "unistd.h", since it is non-ANSI. We include it way
213
+ * down here because we want the user's section 1 to have been scanned first.
214
+ * The user has a chance to override it with an option.
215
+ */
216
+ #include <unistd.h>
217
+ #endif
218
+
219
+ #ifndef YY_EXTRA_TYPE
220
+ #define YY_EXTRA_TYPE void *
221
+ #endif
222
+
223
+ /* Accessor methods to globals.
224
+ These are made visible to non-reentrant scanners for convenience. */
225
+
226
+ int yylex_destroy (void );
227
+
228
+ int yyget_debug (void );
229
+
230
+ void yyset_debug (int debug_flag );
231
+
232
+ YY_EXTRA_TYPE yyget_extra (void );
233
+
234
+ void yyset_extra (YY_EXTRA_TYPE user_defined );
235
+
236
+ FILE *yyget_in (void );
237
+
238
+ void yyset_in (FILE * in_str );
239
+
240
+ FILE *yyget_out (void );
241
+
242
+ void yyset_out (FILE * out_str );
243
+
244
+ yy_size_t yyget_leng (void );
245
+
246
+ char *yyget_text (void );
247
+
248
+ int yyget_lineno (void );
249
+
250
+ void yyset_lineno (int line_number );
251
+
252
+ /* Macros after this point can all be overridden by user definitions in
253
+ * section 1.
254
+ */
255
+
256
+ #ifndef YY_SKIP_YYWRAP
257
+ #ifdef __cplusplus
258
+ extern "C" int yywrap (void );
259
+ #else
260
+ extern int yywrap (void );
261
+ #endif
262
+ #endif
263
+
264
+ #ifndef yytext_ptr
265
+ static void yy_flex_strncpy (char *,yyconst char *,int );
266
+ #endif
267
+
268
+ #ifdef YY_NEED_STRLEN
269
+ static int yy_flex_strlen (yyconst char * );
270
+ #endif
271
+
272
+ #ifndef YY_NO_INPUT
273
+
274
+ #endif
275
+
276
+ /* Amount of stuff to slurp up with each read. */
277
+ #ifndef YY_READ_BUF_SIZE
278
+ #define YY_READ_BUF_SIZE 8192
279
+ #endif
280
+
281
+ /* Number of entries by which start-condition stack grows. */
282
+ #ifndef YY_START_STACK_INCR
283
+ #define YY_START_STACK_INCR 25
284
+ #endif
285
+
286
+ /* Default declaration of generated scanner - a define so the user can
287
+ * easily add parameters.
288
+ */
289
+ #ifndef YY_DECL
290
+ #define YY_DECL_IS_OURS 1
291
+
292
+ extern int yylex (void);
293
+
294
+ #define YY_DECL int yylex (void)
295
+ #endif /* !YY_DECL */
296
+
297
+ /* yy_get_previous_state - get the state just before the EOB char was reached */
298
+
299
+ #undef YY_NEW_FILE
300
+ #undef YY_FLUSH_BUFFER
301
+ #undef yy_set_bol
302
+ #undef yy_new_buffer
303
+ #undef yy_set_interactive
304
+ #undef YY_DO_BEFORE_ACTION
305
+
306
+ #ifdef YY_DECL_IS_OURS
307
+ #undef YY_DECL_IS_OURS
308
+ #undef YY_DECL
309
+ #endif
310
+
311
+ #line 191 "/Users/backtype/projects/fancy/lib/parser/ext/lexer.lex"
312
+
313
+ #line 314 "lexer.h"
314
+ #undef yyIN_HEADER
315
+ #endif /* yyHEADER_H */
@@ -51,8 +51,6 @@ self "self"
51
51
  match "match"
52
52
  case "case"
53
53
  identifier @?@?({lower}|[_&*])({letter}|{digit}|{special_under})*
54
- label @{identifier}@
55
- goto_ "goto"
56
54
  selector ({letter}|[_&*])({letter}|{digit}|{special_under})*":"
57
55
  constant {capital}({letter}|{digit}|{special_under})*
58
56
  nested_constant ({constant}::)+{constant}
@@ -144,14 +142,6 @@ escaped_newline "\\".*\n
144
142
  {case} {
145
143
  return CASE;
146
144
  }
147
- {goto_} {
148
- yylval.object = rb_str_new2(yytext);
149
- return GOTO;
150
- }
151
- {label} {
152
- yylval.object = rb_str_new2(yytext);
153
- return LABEL;
154
- }
155
145
  {identifier} {
156
146
  yylval.object = rb_str_new2(yytext);
157
147
  return IDENTIFIER;
@@ -0,0 +1,3251 @@
1
+ /* A Bison parser, made by GNU Bison 2.3. */
2
+
3
+ /* Skeleton implementation for Bison's Yacc-like parsers in C
4
+
5
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
6
+ Free Software Foundation, Inc.
7
+
8
+ This program is free software; you can redistribute it and/or modify
9
+ it under the terms of the GNU General Public License as published by
10
+ the Free Software Foundation; either version 2, or (at your option)
11
+ any later version.
12
+
13
+ This program is distributed in the hope that it will be useful,
14
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ GNU General Public License for more details.
17
+
18
+ You should have received a copy of the GNU General Public License
19
+ along with this program; if not, write to the Free Software
20
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
21
+ Boston, MA 02110-1301, USA. */
22
+
23
+ /* As a special exception, you may create a larger work that contains
24
+ part or all of the Bison parser skeleton and distribute that work
25
+ under terms of your choice, so long as that work isn't itself a
26
+ parser generator using the skeleton or a modified version thereof
27
+ as a parser skeleton. Alternatively, if you modify or redistribute
28
+ the parser skeleton itself, you may (at your option) remove this
29
+ special exception, which will cause the skeleton and the resulting
30
+ Bison output files to be licensed under the GNU General Public
31
+ License without this special exception.
32
+
33
+ This special exception was added by the Free Software Foundation in
34
+ version 2.2 of Bison. */
35
+
36
+ /* C LALR(1) parser skeleton written by Richard Stallman, by
37
+ simplifying the original so-called "semantic" parser. */
38
+
39
+ /* All symbols defined below should begin with yy or YY, to avoid
40
+ infringing on user name space. This should be done even for local
41
+ variables, as they might otherwise be expanded by user macros.
42
+ There are some unavoidable exceptions within include files to
43
+ define necessary library symbols; they are noted "INFRINGES ON
44
+ USER NAME SPACE" below. */
45
+
46
+ /* Identify Bison output. */
47
+ #define YYBISON 1
48
+
49
+ /* Bison version. */
50
+ #define YYBISON_VERSION "2.3"
51
+
52
+ /* Skeleton name. */
53
+ #define YYSKELETON_NAME "yacc.c"
54
+
55
+ /* Pure parsers. */
56
+ #define YYPURE 0
57
+
58
+ /* Using locations. */
59
+ #define YYLSP_NEEDED 0
60
+
61
+
62
+
63
+ /* Tokens. */
64
+ #ifndef YYTOKENTYPE
65
+ # define YYTOKENTYPE
66
+ /* Put the tokens into the symbol table, so that GDB and other debuggers
67
+ know about them. */
68
+ enum yytokentype {
69
+ LPAREN = 258,
70
+ RPAREN = 259,
71
+ FUTURE_SEND = 260,
72
+ ASYNC_SEND = 261,
73
+ AT_LCURLY = 262,
74
+ LCURLY = 263,
75
+ RCURLY = 264,
76
+ LBRACKET = 265,
77
+ RBRACKET = 266,
78
+ LEFTHASH = 267,
79
+ RIGHTHASH = 268,
80
+ STAB = 269,
81
+ ARROW = 270,
82
+ THIN_ARROW = 271,
83
+ COMMA = 272,
84
+ SEMI = 273,
85
+ NL = 274,
86
+ COLON = 275,
87
+ RETURN_LOCAL = 276,
88
+ RETURN = 277,
89
+ TRY = 278,
90
+ CATCH = 279,
91
+ FINALLY = 280,
92
+ RETRY = 281,
93
+ SUPER = 282,
94
+ CLASS = 283,
95
+ DEF = 284,
96
+ DOT = 285,
97
+ DOLLAR = 286,
98
+ EQUALS = 287,
99
+ MATCH = 288,
100
+ CASE = 289,
101
+ IDENTIFIER = 290,
102
+ SELECTOR = 291,
103
+ RUBY_SEND_OPEN = 292,
104
+ RUBY_OPER_OPEN = 293,
105
+ CONSTANT = 294,
106
+ INTEGER_LITERAL = 295,
107
+ HEX_LITERAL = 296,
108
+ OCT_LITERAL = 297,
109
+ BIN_LITERAL = 298,
110
+ DOUBLE_LITERAL = 299,
111
+ STRING_LITERAL = 300,
112
+ MULTI_STRING_LITERAL = 301,
113
+ SYMBOL_LITERAL = 302,
114
+ REGEX_LITERAL = 303,
115
+ OPERATOR = 304,
116
+ BACKTICK_LITERAL = 305
117
+ };
118
+ #endif
119
+ /* Tokens. */
120
+ #define LPAREN 258
121
+ #define RPAREN 259
122
+ #define FUTURE_SEND 260
123
+ #define ASYNC_SEND 261
124
+ #define AT_LCURLY 262
125
+ #define LCURLY 263
126
+ #define RCURLY 264
127
+ #define LBRACKET 265
128
+ #define RBRACKET 266
129
+ #define LEFTHASH 267
130
+ #define RIGHTHASH 268
131
+ #define STAB 269
132
+ #define ARROW 270
133
+ #define THIN_ARROW 271
134
+ #define COMMA 272
135
+ #define SEMI 273
136
+ #define NL 274
137
+ #define COLON 275
138
+ #define RETURN_LOCAL 276
139
+ #define RETURN 277
140
+ #define TRY 278
141
+ #define CATCH 279
142
+ #define FINALLY 280
143
+ #define RETRY 281
144
+ #define SUPER 282
145
+ #define CLASS 283
146
+ #define DEF 284
147
+ #define DOT 285
148
+ #define DOLLAR 286
149
+ #define EQUALS 287
150
+ #define MATCH 288
151
+ #define CASE 289
152
+ #define IDENTIFIER 290
153
+ #define SELECTOR 291
154
+ #define RUBY_SEND_OPEN 292
155
+ #define RUBY_OPER_OPEN 293
156
+ #define CONSTANT 294
157
+ #define INTEGER_LITERAL 295
158
+ #define HEX_LITERAL 296
159
+ #define OCT_LITERAL 297
160
+ #define BIN_LITERAL 298
161
+ #define DOUBLE_LITERAL 299
162
+ #define STRING_LITERAL 300
163
+ #define MULTI_STRING_LITERAL 301
164
+ #define SYMBOL_LITERAL 302
165
+ #define REGEX_LITERAL 303
166
+ #define OPERATOR 304
167
+ #define BACKTICK_LITERAL 305
168
+
169
+
170
+
171
+
172
+ /* Copy the first part of user declarations. */
173
+ #line 1 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
174
+
175
+ #include "ruby.h"
176
+
177
+ int yyerror(VALUE, char *s);
178
+ int yylex(VALUE);
179
+
180
+ VALUE fy_terminal_node(VALUE, char *);
181
+ VALUE fy_terminal_node_from(VALUE, char *, char*);
182
+
183
+ extern int yylineno;
184
+ extern char *yytext;
185
+
186
+
187
+
188
+ /* Enabling traces. */
189
+ #ifndef YYDEBUG
190
+ # define YYDEBUG 0
191
+ #endif
192
+
193
+ /* Enabling verbose error messages. */
194
+ #ifdef YYERROR_VERBOSE
195
+ # undef YYERROR_VERBOSE
196
+ # define YYERROR_VERBOSE 1
197
+ #else
198
+ # define YYERROR_VERBOSE 0
199
+ #endif
200
+
201
+ /* Enabling the token table. */
202
+ #ifndef YYTOKEN_TABLE
203
+ # define YYTOKEN_TABLE 0
204
+ #endif
205
+
206
+ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
207
+ typedef union YYSTYPE
208
+ #line 18 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
209
+ {
210
+ VALUE object;
211
+ ID symbol;
212
+ }
213
+ /* Line 193 of yacc.c. */
214
+ #line 215 "/Users/backtype/projects/fancy/lib/parser/ext/parser.c"
215
+ YYSTYPE;
216
+ # define yystype YYSTYPE /* obsolescent; will be withdrawn */
217
+ # define YYSTYPE_IS_DECLARED 1
218
+ # define YYSTYPE_IS_TRIVIAL 1
219
+ #endif
220
+
221
+
222
+
223
+ /* Copy the second part of user declarations. */
224
+
225
+
226
+ /* Line 216 of yacc.c. */
227
+ #line 228 "/Users/backtype/projects/fancy/lib/parser/ext/parser.c"
228
+
229
+ #ifdef short
230
+ # undef short
231
+ #endif
232
+
233
+ #ifdef YYTYPE_UINT8
234
+ typedef YYTYPE_UINT8 yytype_uint8;
235
+ #else
236
+ typedef unsigned char yytype_uint8;
237
+ #endif
238
+
239
+ #ifdef YYTYPE_INT8
240
+ typedef YYTYPE_INT8 yytype_int8;
241
+ #elif (defined __STDC__ || defined __C99__FUNC__ \
242
+ || defined __cplusplus || defined _MSC_VER)
243
+ typedef signed char yytype_int8;
244
+ #else
245
+ typedef short int yytype_int8;
246
+ #endif
247
+
248
+ #ifdef YYTYPE_UINT16
249
+ typedef YYTYPE_UINT16 yytype_uint16;
250
+ #else
251
+ typedef unsigned short int yytype_uint16;
252
+ #endif
253
+
254
+ #ifdef YYTYPE_INT16
255
+ typedef YYTYPE_INT16 yytype_int16;
256
+ #else
257
+ typedef short int yytype_int16;
258
+ #endif
259
+
260
+ #ifndef YYSIZE_T
261
+ # ifdef __SIZE_TYPE__
262
+ # define YYSIZE_T __SIZE_TYPE__
263
+ # elif defined size_t
264
+ # define YYSIZE_T size_t
265
+ # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
266
+ || defined __cplusplus || defined _MSC_VER)
267
+ # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
268
+ # define YYSIZE_T size_t
269
+ # else
270
+ # define YYSIZE_T unsigned int
271
+ # endif
272
+ #endif
273
+
274
+ #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
275
+
276
+ #ifndef YY_
277
+ # if defined YYENABLE_NLS && YYENABLE_NLS
278
+ # if ENABLE_NLS
279
+ # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
280
+ # define YY_(msgid) dgettext ("bison-runtime", msgid)
281
+ # endif
282
+ # endif
283
+ # ifndef YY_
284
+ # define YY_(msgid) msgid
285
+ # endif
286
+ #endif
287
+
288
+ /* Suppress unused-variable warnings by "using" E. */
289
+ #if ! defined lint || defined __GNUC__
290
+ # define YYUSE(e) ((void) (e))
291
+ #else
292
+ # define YYUSE(e) /* empty */
293
+ #endif
294
+
295
+ /* Identity function, used to suppress warnings about constant conditions. */
296
+ #ifndef lint
297
+ # define YYID(n) (n)
298
+ #else
299
+ #if (defined __STDC__ || defined __C99__FUNC__ \
300
+ || defined __cplusplus || defined _MSC_VER)
301
+ static int
302
+ YYID (int i)
303
+ #else
304
+ static int
305
+ YYID (i)
306
+ int i;
307
+ #endif
308
+ {
309
+ return i;
310
+ }
311
+ #endif
312
+
313
+ #if ! defined yyoverflow || YYERROR_VERBOSE
314
+
315
+ /* The parser invokes alloca or malloc; define the necessary symbols. */
316
+
317
+ # ifdef YYSTACK_USE_ALLOCA
318
+ # if YYSTACK_USE_ALLOCA
319
+ # ifdef __GNUC__
320
+ # define YYSTACK_ALLOC __builtin_alloca
321
+ # elif defined __BUILTIN_VA_ARG_INCR
322
+ # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
323
+ # elif defined _AIX
324
+ # define YYSTACK_ALLOC __alloca
325
+ # elif defined _MSC_VER
326
+ # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
327
+ # define alloca _alloca
328
+ # else
329
+ # define YYSTACK_ALLOC alloca
330
+ # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
331
+ || defined __cplusplus || defined _MSC_VER)
332
+ # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
333
+ # ifndef _STDLIB_H
334
+ # define _STDLIB_H 1
335
+ # endif
336
+ # endif
337
+ # endif
338
+ # endif
339
+ # endif
340
+
341
+ # ifdef YYSTACK_ALLOC
342
+ /* Pacify GCC's `empty if-body' warning. */
343
+ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
344
+ # ifndef YYSTACK_ALLOC_MAXIMUM
345
+ /* The OS might guarantee only one guard page at the bottom of the stack,
346
+ and a page size can be as small as 4096 bytes. So we cannot safely
347
+ invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
348
+ to allow for a few compiler-allocated temporary stack slots. */
349
+ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
350
+ # endif
351
+ # else
352
+ # define YYSTACK_ALLOC YYMALLOC
353
+ # define YYSTACK_FREE YYFREE
354
+ # ifndef YYSTACK_ALLOC_MAXIMUM
355
+ # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
356
+ # endif
357
+ # if (defined __cplusplus && ! defined _STDLIB_H \
358
+ && ! ((defined YYMALLOC || defined malloc) \
359
+ && (defined YYFREE || defined free)))
360
+ # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
361
+ # ifndef _STDLIB_H
362
+ # define _STDLIB_H 1
363
+ # endif
364
+ # endif
365
+ # ifndef YYMALLOC
366
+ # define YYMALLOC malloc
367
+ # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
368
+ || defined __cplusplus || defined _MSC_VER)
369
+ void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
370
+ # endif
371
+ # endif
372
+ # ifndef YYFREE
373
+ # define YYFREE free
374
+ # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
375
+ || defined __cplusplus || defined _MSC_VER)
376
+ void free (void *); /* INFRINGES ON USER NAME SPACE */
377
+ # endif
378
+ # endif
379
+ # endif
380
+ #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
381
+
382
+
383
+ #if (! defined yyoverflow \
384
+ && (! defined __cplusplus \
385
+ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
386
+
387
+ /* A type that is properly aligned for any stack member. */
388
+ union yyalloc
389
+ {
390
+ yytype_int16 yyss;
391
+ YYSTYPE yyvs;
392
+ };
393
+
394
+ /* The size of the maximum gap between one aligned stack and the next. */
395
+ # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
396
+
397
+ /* The size of an array large to enough to hold all stacks, each with
398
+ N elements. */
399
+ # define YYSTACK_BYTES(N) \
400
+ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
401
+ + YYSTACK_GAP_MAXIMUM)
402
+
403
+ /* Copy COUNT objects from FROM to TO. The source and destination do
404
+ not overlap. */
405
+ # ifndef YYCOPY
406
+ # if defined __GNUC__ && 1 < __GNUC__
407
+ # define YYCOPY(To, From, Count) \
408
+ __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
409
+ # else
410
+ # define YYCOPY(To, From, Count) \
411
+ do \
412
+ { \
413
+ YYSIZE_T yyi; \
414
+ for (yyi = 0; yyi < (Count); yyi++) \
415
+ (To)[yyi] = (From)[yyi]; \
416
+ } \
417
+ while (YYID (0))
418
+ # endif
419
+ # endif
420
+
421
+ /* Relocate STACK from its old location to the new one. The
422
+ local variables YYSIZE and YYSTACKSIZE give the old and new number of
423
+ elements in the stack, and YYPTR gives the new location of the
424
+ stack. Advance YYPTR to a properly aligned location for the next
425
+ stack. */
426
+ # define YYSTACK_RELOCATE(Stack) \
427
+ do \
428
+ { \
429
+ YYSIZE_T yynewbytes; \
430
+ YYCOPY (&yyptr->Stack, Stack, yysize); \
431
+ Stack = &yyptr->Stack; \
432
+ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
433
+ yyptr += yynewbytes / sizeof (*yyptr); \
434
+ } \
435
+ while (YYID (0))
436
+
437
+ #endif
438
+
439
+ /* YYFINAL -- State number of the termination state. */
440
+ #define YYFINAL 109
441
+ /* YYLAST -- Last index in YYTABLE. */
442
+ #define YYLAST 1589
443
+
444
+ /* YYNTOKENS -- Number of terminals. */
445
+ #define YYNTOKENS 51
446
+ /* YYNNTS -- Number of nonterminals. */
447
+ #define YYNNTS 77
448
+ /* YYNRULES -- Number of rules. */
449
+ #define YYNRULES 195
450
+ /* YYNRULES -- Number of states. */
451
+ #define YYNSTATES 322
452
+
453
+ /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
454
+ #define YYUNDEFTOK 2
455
+ #define YYMAXUTOK 305
456
+
457
+ #define YYTRANSLATE(YYX) \
458
+ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
459
+
460
+ /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
461
+ static const yytype_uint8 yytranslate[] =
462
+ {
463
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
464
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
465
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
466
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
467
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
468
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
469
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
470
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
471
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
472
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
473
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
474
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
475
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
476
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
477
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
478
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
479
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
480
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
481
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
482
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
483
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
484
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
485
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
486
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
487
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
488
+ 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
489
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
490
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
491
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
492
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
493
+ 45, 46, 47, 48, 49, 50
494
+ };
495
+
496
+ #if YYDEBUG
497
+ /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
498
+ YYRHS. */
499
+ static const yytype_uint16 yyprhs[] =
500
+ {
501
+ 0, 0, 3, 4, 6, 8, 10, 13, 15, 18,
502
+ 19, 21, 23, 25, 27, 30, 33, 36, 42, 46,
503
+ 52, 54, 56, 58, 60, 62, 68, 70, 72, 74,
504
+ 76, 78, 80, 82, 84, 86, 88, 92, 97, 99,
505
+ 103, 105, 107, 109, 111, 113, 115, 117, 119, 121,
506
+ 125, 128, 130, 133, 135, 137, 139, 141, 144, 146,
507
+ 150, 153, 159, 164, 166, 168, 170, 172, 174, 176,
508
+ 179, 181, 184, 187, 189, 197, 199, 203, 207, 210,
509
+ 214, 217, 222, 226, 231, 235, 240, 246, 254, 260,
510
+ 267, 276, 279, 282, 286, 290, 294, 298, 302, 308,
511
+ 313, 320, 323, 328, 335, 341, 346, 353, 359, 361,
512
+ 363, 366, 368, 372, 376, 380, 384, 387, 391, 395,
513
+ 400, 402, 406, 408, 411, 413, 415, 419, 422, 427,
514
+ 432, 435, 439, 441, 444, 448, 453, 457, 460, 464,
515
+ 470, 472, 475, 477, 480, 481, 484, 486, 488, 490,
516
+ 492, 494, 496, 498, 500, 502, 504, 506, 508, 510,
517
+ 512, 514, 516, 518, 520, 522, 524, 526, 528, 530,
518
+ 532, 538, 540, 545, 548, 552, 558, 562, 564, 566,
519
+ 572, 576, 583, 585, 587, 589, 591, 594, 596, 600,
520
+ 606, 615, 623, 625, 628, 633
521
+ };
522
+
523
+ /* YYRHS -- A `-1'-separated list of the rules' RHS. */
524
+ static const yytype_int8 yyrhs[] =
525
+ {
526
+ 52, 0, -1, -1, 57, -1, 54, -1, 18, -1,
527
+ 53, 53, -1, 19, -1, 54, 19, -1, -1, 54,
528
+ -1, 60, -1, 62, -1, 56, -1, 57, 56, -1,
529
+ 53, 57, -1, 57, 53, -1, 8, 55, 57, 55,
530
+ 9, -1, 8, 55, 9, -1, 7, 55, 57, 55,
531
+ 9, -1, 63, -1, 71, -1, 72, -1, 69, -1,
532
+ 112, -1, 3, 55, 62, 55, 4, -1, 61, -1,
533
+ 78, -1, 73, -1, 99, -1, 125, -1, 91, -1,
534
+ 96, -1, 98, -1, 27, -1, 26, -1, 62, 30,
535
+ 55, -1, 69, 32, 55, 62, -1, 64, -1, 70,
536
+ 32, 114, -1, 49, -1, 39, -1, 36, -1, 35,
537
+ -1, 33, -1, 28, -1, 74, -1, 68, -1, 69,
538
+ -1, 70, 17, 69, -1, 21, 62, -1, 21, -1,
539
+ 22, 62, -1, 22, -1, 76, -1, 77, -1, 66,
540
+ -1, 74, 66, -1, 29, -1, 28, 74, 58, -1,
541
+ 28, 74, -1, 28, 74, 20, 74, 58, -1, 28,
542
+ 74, 20, 74, -1, 83, -1, 84, -1, 85, -1,
543
+ 86, -1, 87, -1, 88, -1, 67, 68, -1, 79,
544
+ -1, 80, 79, -1, 80, 82, -1, 82, -1, 67,
545
+ 68, 3, 55, 62, 55, 4, -1, 81, -1, 82,
546
+ 55, 81, -1, 75, 80, 58, -1, 75, 80, -1,
547
+ 75, 68, 58, -1, 75, 68, -1, 75, 69, 80,
548
+ 58, -1, 75, 69, 80, -1, 75, 69, 68, 58,
549
+ -1, 75, 69, 68, -1, 75, 65, 68, 58, -1,
550
+ 75, 10, 68, 11, 58, -1, 75, 10, 68, 11,
551
+ 20, 68, 58, -1, 75, 69, 65, 68, 58, -1,
552
+ 75, 69, 10, 68, 11, 58, -1, 75, 69, 10,
553
+ 68, 11, 20, 68, 58, -1, 62, 68, -1, 89,
554
+ 68, -1, 62, 5, 68, -1, 89, 5, 68, -1,
555
+ 62, 6, 68, -1, 89, 6, 68, -1, 62, 65,
556
+ 93, -1, 62, 65, 30, 55, 93, -1, 62, 10,
557
+ 62, 11, -1, 62, 10, 62, 11, 20, 93, -1,
558
+ 65, 93, -1, 62, 5, 65, 93, -1, 62, 5,
559
+ 65, 30, 55, 93, -1, 62, 5, 10, 62, 11,
560
+ -1, 62, 6, 65, 93, -1, 62, 6, 65, 30,
561
+ 55, 93, -1, 62, 6, 10, 62, 11, -1, 89,
562
+ -1, 90, -1, 62, 92, -1, 92, -1, 89, 5,
563
+ 92, -1, 89, 6, 92, -1, 62, 5, 92, -1,
564
+ 62, 6, 92, -1, 67, 93, -1, 67, 55, 93,
565
+ -1, 92, 67, 93, -1, 92, 67, 55, 93, -1,
566
+ 69, -1, 3, 62, 4, -1, 112, -1, 31, 62,
567
+ -1, 37, -1, 38, -1, 62, 94, 97, -1, 94,
568
+ 97, -1, 62, 5, 94, 97, -1, 62, 6, 94,
569
+ 97, -1, 4, 117, -1, 114, 4, 117, -1, 4,
570
+ -1, 114, 4, -1, 62, 95, 97, -1, 23, 58,
571
+ 102, 103, -1, 23, 58, 101, -1, 24, 58, -1,
572
+ 24, 62, 58, -1, 24, 62, 15, 68, 58, -1,
573
+ 100, -1, 101, 100, -1, 100, -1, 102, 100, -1,
574
+ -1, 25, 58, -1, 40, -1, 44, -1, 45, -1,
575
+ 46, -1, 47, -1, 48, -1, 41, -1, 42, -1,
576
+ 43, -1, 104, -1, 109, -1, 110, -1, 111, -1,
577
+ 105, -1, 106, -1, 107, -1, 116, -1, 113, -1,
578
+ 108, -1, 117, -1, 118, -1, 119, -1, 120, -1,
579
+ 115, -1, 10, 55, 114, 55, 11, -1, 62, -1,
580
+ 114, 17, 55, 62, -1, 114, 17, -1, 10, 55,
581
+ 11, -1, 12, 55, 124, 55, 13, -1, 12, 55,
582
+ 13, -1, 59, -1, 58, -1, 14, 121, 14, 55,
583
+ 58, -1, 3, 114, 4, -1, 3, 62, 30, 30,
584
+ 62, 4, -1, 50, -1, 123, -1, 122, -1, 68,
585
+ -1, 122, 68, -1, 68, -1, 123, 17, 68, -1,
586
+ 62, 55, 15, 55, 62, -1, 124, 17, 55, 62,
587
+ 55, 15, 55, 62, -1, 33, 62, 8, 55, 126,
588
+ 55, 9, -1, 127, -1, 126, 127, -1, 34, 62,
589
+ 16, 57, -1, 34, 62, 16, 14, 121, 14, 57,
590
+ -1
591
+ };
592
+
593
+ /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
594
+ static const yytype_uint16 yyrline[] =
595
+ {
596
+ 0, 163, 163, 164, 169, 170, 171, 174, 175, 178,
597
+ 179, 182, 183, 186, 189, 192, 195, 200, 203, 209,
598
+ 214, 215, 216, 219, 220, 221, 226, 227, 228, 229,
599
+ 230, 231, 232, 233, 234, 235, 236, 241, 244, 247,
600
+ 252, 257, 262, 267, 270, 273, 278, 279, 282, 285,
601
+ 290, 293, 298, 301, 308, 309, 312, 315, 320, 323,
602
+ 326, 331, 334, 339, 340, 341, 342, 343, 344, 347,
603
+ 352, 355, 358, 361, 366, 371, 374, 379, 382, 388,
604
+ 391, 397, 400, 405, 408, 413, 416, 420, 426, 429,
605
+ 433, 439, 442, 445, 448, 451, 454, 459, 462, 465,
606
+ 469, 473, 476, 479, 482, 486, 489, 492, 498, 499,
607
+ 500, 503, 506, 509, 512, 515, 520, 523, 526, 529,
608
+ 534, 537, 540, 543, 553, 557, 562, 565, 568, 571,
609
+ 581, 584, 587, 590, 595, 601, 604, 609, 612, 615,
610
+ 620, 623, 628, 631, 634, 639, 644, 648, 652, 655,
611
+ 659, 663, 668, 674, 680, 686, 687, 688, 689, 690,
612
+ 691, 692, 693, 694, 695, 696, 697, 698, 699, 702,
613
+ 705, 710, 713, 716, 721, 726, 729, 734, 737, 740,
614
+ 745, 750, 755, 760, 761, 764, 767, 772, 775, 780,
615
+ 783, 788, 793, 796, 801, 804
616
+ };
617
+ #endif
618
+
619
+ #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
620
+ /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
621
+ First, the terminals, then, starting at YYNTOKENS, nonterminals. */
622
+ static const char *const yytname[] =
623
+ {
624
+ "$end", "error", "$undefined", "LPAREN", "RPAREN", "FUTURE_SEND",
625
+ "ASYNC_SEND", "AT_LCURLY", "LCURLY", "RCURLY", "LBRACKET", "RBRACKET",
626
+ "LEFTHASH", "RIGHTHASH", "STAB", "ARROW", "THIN_ARROW", "COMMA", "SEMI",
627
+ "NL", "COLON", "RETURN_LOCAL", "RETURN", "TRY", "CATCH", "FINALLY",
628
+ "RETRY", "SUPER", "CLASS", "DEF", "DOT", "DOLLAR", "EQUALS", "MATCH",
629
+ "CASE", "IDENTIFIER", "SELECTOR", "RUBY_SEND_OPEN", "RUBY_OPER_OPEN",
630
+ "CONSTANT", "INTEGER_LITERAL", "HEX_LITERAL", "OCT_LITERAL",
631
+ "BIN_LITERAL", "DOUBLE_LITERAL", "STRING_LITERAL",
632
+ "MULTI_STRING_LITERAL", "SYMBOL_LITERAL", "REGEX_LITERAL", "OPERATOR",
633
+ "BACKTICK_LITERAL", "$accept", "programm", "delim", "nls", "space",
634
+ "code", "expression_list", "expression_block",
635
+ "partial_expression_block", "statement", "primary", "exp", "assignment",
636
+ "multiple_assignment", "operator", "constant", "selector", "identifier",
637
+ "any_identifier", "identifier_list", "return_local_statement",
638
+ "return_statement", "class_def", "const_identifier", "def",
639
+ "class_no_super", "class_super", "method_def", "method_arg",
640
+ "method_args", "method_arg_default", "method_args_default",
641
+ "method_w_args", "method_no_args", "class_method_w_args",
642
+ "class_method_no_args", "operator_def", "class_operator_def",
643
+ "unary_send", "operator_send", "message_send", "send_args", "arg_exp",
644
+ "ruby_send_open", "ruby_oper_open", "ruby_send", "ruby_args",
645
+ "ruby_oper_send", "try_catch_block", "catch_block",
646
+ "required_catch_blocks", "catch_blocks", "finally_block",
647
+ "integer_literal", "double_literal", "string_literal", "symbol_literal",
648
+ "regex_literal", "hex_literal", "oct_literal", "bin_literal",
649
+ "literal_value", "array_literal", "exp_comma_list", "empty_array",
650
+ "hash_literal", "block_literal", "tuple_literal", "range_literal",
651
+ "backtick_literal", "block_args", "block_args_without_comma",
652
+ "block_args_with_comma", "key_value_list", "match_expr", "match_body",
653
+ "match_clause", 0
654
+ };
655
+ #endif
656
+
657
+ # ifdef YYPRINT
658
+ /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
659
+ token YYLEX-NUM. */
660
+ static const yytype_uint16 yytoknum[] =
661
+ {
662
+ 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
663
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
664
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
665
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
666
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
667
+ 305
668
+ };
669
+ # endif
670
+
671
+ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
672
+ static const yytype_uint8 yyr1[] =
673
+ {
674
+ 0, 51, 52, 52, 53, 53, 53, 54, 54, 55,
675
+ 55, 56, 56, 57, 57, 57, 57, 58, 58, 59,
676
+ 60, 60, 60, 61, 61, 61, 62, 62, 62, 62,
677
+ 62, 62, 62, 62, 62, 62, 62, 63, 63, 64,
678
+ 65, 66, 67, 68, 68, 68, 69, 69, 70, 70,
679
+ 71, 71, 72, 72, 73, 73, 74, 74, 75, 76,
680
+ 76, 77, 77, 78, 78, 78, 78, 78, 78, 79,
681
+ 80, 80, 80, 80, 81, 82, 82, 83, 83, 84,
682
+ 84, 85, 85, 86, 86, 87, 87, 87, 88, 88,
683
+ 88, 89, 89, 89, 89, 89, 89, 90, 90, 90,
684
+ 90, 90, 90, 90, 90, 90, 90, 90, 91, 91,
685
+ 91, 91, 91, 91, 91, 91, 92, 92, 92, 92,
686
+ 93, 93, 93, 93, 94, 95, 96, 96, 96, 96,
687
+ 97, 97, 97, 97, 98, 99, 99, 100, 100, 100,
688
+ 101, 101, 102, 102, 102, 103, 104, 105, 106, 106,
689
+ 107, 108, 109, 110, 111, 112, 112, 112, 112, 112,
690
+ 112, 112, 112, 112, 112, 112, 112, 112, 112, 113,
691
+ 113, 114, 114, 114, 115, 116, 116, 117, 117, 117,
692
+ 118, 119, 120, 121, 121, 122, 122, 123, 123, 124,
693
+ 124, 125, 126, 126, 127, 127
694
+ };
695
+
696
+ /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
697
+ static const yytype_uint8 yyr2[] =
698
+ {
699
+ 0, 2, 0, 1, 1, 1, 2, 1, 2, 0,
700
+ 1, 1, 1, 1, 2, 2, 2, 5, 3, 5,
701
+ 1, 1, 1, 1, 1, 5, 1, 1, 1, 1,
702
+ 1, 1, 1, 1, 1, 1, 3, 4, 1, 3,
703
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
704
+ 2, 1, 2, 1, 1, 1, 1, 2, 1, 3,
705
+ 2, 5, 4, 1, 1, 1, 1, 1, 1, 2,
706
+ 1, 2, 2, 1, 7, 1, 3, 3, 2, 3,
707
+ 2, 4, 3, 4, 3, 4, 5, 7, 5, 6,
708
+ 8, 2, 2, 3, 3, 3, 3, 3, 5, 4,
709
+ 6, 2, 4, 6, 5, 4, 6, 5, 1, 1,
710
+ 2, 1, 3, 3, 3, 3, 2, 3, 3, 4,
711
+ 1, 3, 1, 2, 1, 1, 3, 2, 4, 4,
712
+ 2, 3, 1, 2, 3, 4, 3, 2, 3, 5,
713
+ 1, 2, 1, 2, 0, 2, 1, 1, 1, 1,
714
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
715
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
716
+ 5, 1, 4, 2, 3, 5, 3, 1, 1, 5,
717
+ 3, 6, 1, 1, 1, 1, 2, 1, 3, 5,
718
+ 8, 7, 1, 2, 4, 7
719
+ };
720
+
721
+ /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
722
+ STATE-NUM when YYTABLE doesn't specify something else to do. Zero
723
+ means the default is an error. */
724
+ static const yytype_uint8 yydefact[] =
725
+ {
726
+ 2, 0, 9, 9, 9, 9, 0, 5, 7, 51,
727
+ 53, 0, 35, 34, 45, 58, 44, 43, 42, 124,
728
+ 41, 146, 152, 153, 154, 147, 148, 149, 150, 151,
729
+ 40, 182, 0, 0, 4, 13, 3, 178, 177, 11,
730
+ 26, 12, 20, 38, 0, 56, 0, 47, 23, 0,
731
+ 21, 22, 28, 46, 0, 54, 55, 27, 63, 64,
732
+ 65, 66, 67, 68, 108, 109, 31, 111, 0, 32,
733
+ 33, 29, 155, 159, 160, 161, 164, 156, 157, 158,
734
+ 24, 163, 169, 162, 165, 166, 167, 168, 30, 10,
735
+ 0, 171, 23, 0, 0, 0, 0, 0, 45, 44,
736
+ 185, 0, 184, 183, 50, 52, 144, 60, 0, 1,
737
+ 0, 15, 8, 16, 14, 0, 0, 0, 9, 125,
738
+ 0, 91, 110, 0, 0, 0, 0, 120, 101, 122,
739
+ 0, 116, 9, 0, 0, 57, 0, 0, 0, 80,
740
+ 0, 70, 78, 75, 73, 0, 0, 92, 0, 132,
741
+ 171, 127, 0, 9, 9, 180, 9, 9, 18, 9,
742
+ 174, 9, 176, 9, 9, 9, 186, 0, 0, 140,
743
+ 136, 0, 0, 59, 9, 6, 0, 0, 93, 114,
744
+ 0, 0, 0, 95, 115, 0, 0, 36, 9, 97,
745
+ 126, 134, 171, 123, 117, 0, 49, 39, 0, 0,
746
+ 69, 79, 0, 0, 84, 82, 77, 71, 72, 0,
747
+ 94, 112, 96, 113, 0, 118, 130, 133, 0, 0,
748
+ 0, 4, 0, 0, 0, 0, 9, 0, 0, 188,
749
+ 137, 0, 141, 0, 143, 135, 62, 0, 0, 9,
750
+ 102, 128, 0, 9, 105, 129, 99, 0, 121, 37,
751
+ 0, 85, 9, 0, 0, 83, 81, 0, 76, 119,
752
+ 131, 25, 0, 172, 19, 17, 170, 9, 0, 175,
753
+ 179, 0, 138, 145, 61, 0, 9, 192, 104, 0,
754
+ 107, 0, 0, 98, 0, 86, 0, 0, 88, 0,
755
+ 181, 0, 9, 0, 0, 0, 193, 103, 106, 100,
756
+ 0, 9, 0, 89, 189, 0, 139, 0, 191, 87,
757
+ 0, 0, 9, 0, 194, 74, 90, 0, 0, 190,
758
+ 0, 195
759
+ };
760
+
761
+ /* YYDEFGOTO[NTERM-NUM]. */
762
+ static const yytype_int16 yydefgoto[] =
763
+ {
764
+ -1, 32, 113, 89, 187, 35, 111, 37, 38, 39,
765
+ 40, 41, 42, 43, 44, 45, 46, 47, 92, 49,
766
+ 50, 51, 52, 53, 54, 55, 56, 57, 141, 142,
767
+ 143, 144, 58, 59, 60, 61, 62, 63, 64, 65,
768
+ 66, 67, 128, 68, 124, 69, 151, 70, 71, 169,
769
+ 170, 171, 235, 72, 73, 74, 75, 76, 77, 78,
770
+ 79, 80, 81, 152, 82, 83, 84, 85, 86, 87,
771
+ 101, 102, 103, 164, 88, 276, 277
772
+ };
773
+
774
+ /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
775
+ STATE-NUM. */
776
+ #define YYPACT_NINF -150
777
+ static const yytype_int16 yypact[] =
778
+ {
779
+ 798, 681, 9, 9, 9, 9, -9, -150, -150, 1038,
780
+ 1038, 23, -150, -150, -25, -150, 1038, -150, -150, -150,
781
+ -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
782
+ -150, -150, 75, 798, 62, -150, 798, -150, -150, -150,
783
+ -150, 1498, -150, -150, 1270, -150, 1086, -150, -2, 17,
784
+ -150, -150, -150, -25, 307, -150, -150, -150, -150, -150,
785
+ -150, -150, -150, -150, 15, -150, -150, 55, 894, -150,
786
+ -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
787
+ -150, -150, -150, -150, -150, -150, -150, -150, -150, 62,
788
+ 1038, 1532, -150, 18, 798, 748, 942, 990, -150, -150,
789
+ 85, 70, -9, 91, 1498, 1498, 88, 3, 1351, -150,
790
+ 798, 798, -150, 41, -150, 205, 256, 1038, 9, -150,
791
+ 1132, -150, 55, 894, 894, 1038, 1038, -150, -150, -150,
792
+ 1270, -150, 9, 54, 1038, -150, -9, -9, -9, 119,
793
+ 402, -150, 5, -150, -11, 104, 104, -150, 1086, 44,
794
+ 1498, -150, 28, 1385, 53, -150, 1555, 798, -150, 798,
795
+ -150, 59, -150, 1385, 71, 9, -150, -9, 1038, 84,
796
+ 88, 42, -25, -150, 9, 41, 1038, 1178, -150, 55,
797
+ 894, 1038, 1224, -150, 55, 894, 1400, -150, 9, -150,
798
+ -150, -150, 634, 571, -150, 1038, -150, 101, 111, 23,
799
+ 120, -150, -9, -9, 23, 5, -150, -150, -11, 55,
800
+ -150, 55, -150, 55, 1270, -150, -150, 44, 121, 1038,
801
+ 1038, 62, 115, 126, 127, 128, 9, 129, 23, -150,
802
+ -150, 1334, -150, 23, -150, -150, 8, 107, 1434, 9,
803
+ -150, -150, 1449, 9, -150, -150, 130, 1270, -150, 1498,
804
+ 48, -150, 9, 135, 23, -150, -150, -9, -150, -150,
805
+ -150, -150, 1317, 1498, -150, -150, -150, 9, 1038, -150,
806
+ -150, -9, -150, -150, -150, 1038, 19, -150, -150, 1270,
807
+ -150, 1270, 1270, -150, -9, -150, 1038, 49, -150, 120,
808
+ -150, 1038, 1385, 23, 1483, 140, -150, -150, -150, -150,
809
+ 23, 1385, -9, -150, 1498, 136, -150, 846, -150, -150,
810
+ 149, 23, 9, -9, 798, -150, -150, 1038, 142, 1498,
811
+ 798, 798
812
+ };
813
+
814
+ /* YYPGOTO[NTERM-NUM]. */
815
+ static const yytype_int16 yypgoto[] =
816
+ {
817
+ -150, -150, 6, 4, 60, -31, 2, 195, -150, -150,
818
+ -150, 76, -150, -150, 349, -52, 67, 269, 0, -150,
819
+ -150, -150, -150, -5, -150, -150, -150, -150, -135, 22,
820
+ -51, -132, -150, -150, -150, -150, -150, -150, -150, -150,
821
+ -150, 393, 199, 510, -150, -150, -106, -150, -150, -66,
822
+ -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
823
+ -150, -17, -150, 11, -150, -150, -146, -150, -150, -150,
824
+ -149, -150, -150, -150, -150, -150, -107
825
+ };
826
+
827
+ /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
828
+ positive, shift that token. If negative, reduce the rule which
829
+ number is the opposite. If zero, do what YYDEFACT says.
830
+ If YYTABLE_NINF, syntax error. */
831
+ #define YYTABLE_NINF -188
832
+ static const yytype_int16 yytable[] =
833
+ {
834
+ 48, 135, 36, 216, 34, 114, 33, 207, 8, 107,
835
+ 208, 3, 93, 3, 20, -48, 3, 190, 191, 98,
836
+ 145, 146, 155, 172, 99, -9, 17, 129, 8, 129,
837
+ 132, 3, 217, 48, 133, 156, 48, 34, 8, 110,
838
+ 34, 18, 20, 98, 127, 156, 127, 20, 99, 134,
839
+ 17, 2, 3, 275, 140, 135, 3, 3, 6, 7,
840
+ 8, 90, 94, 95, 96, 97, 168, 233, 284, 302,
841
+ 207, 260, 8, 208, 241, 109, 156, 91, 8, 245,
842
+ 114, 112, 98, 219, 165, 104, 105, 99, 226, 17,
843
+ 8, 18, 108, 20, 48, 48, 157, 159, 34, 34,
844
+ 33, 33, -187, 129, 232, 234, 130, 161, 167, -142,
845
+ 48, 48, 168, 129, 34, 34, 110, 34, 156, 175,
846
+ 127, 138, 250, 252, 264, 261, 114, 3, 114, -47,
847
+ 127, 129, 98, 196, 148, 265, 93, 99, 266, 17,
848
+ 18, 275, 269, 267, 150, 197, 287, -47, 127, 308,
849
+ 282, 312, -47, 315, -47, -47, 320, 48, 258, 48,
850
+ 129, 221, 205, 221, 318, 129, 153, 236, -47, 296,
851
+ 0, 0, 150, 163, 0, 0, 0, 127, 0, 34,
852
+ 0, 175, 127, 0, 135, 0, 0, 0, 0, 148,
853
+ 0, 0, 195, 186, 0, 0, 0, 129, 0, 150,
854
+ 150, 192, 193, 0, 209, 0, 106, 138, 214, 138,
855
+ 150, 0, 0, 218, 127, 176, 220, 222, 0, 223,
856
+ 0, 224, 0, 225, 227, 228, 0, 0, 0, 0,
857
+ 129, 0, 0, 98, 237, 0, 0, 0, 99, 0,
858
+ 17, 18, 19, 0, 231, 131, 148, 127, 247, 0,
859
+ 0, 148, 238, 0, 30, 0, 150, 242, 0, 0,
860
+ 0, 150, 129, 0, 129, 129, 181, 0, 209, 0,
861
+ 0, 249, 138, 0, 0, 100, 257, 0, 148, 127,
862
+ 148, 127, 127, 114, 98, 0, 268, 0, 0, 99,
863
+ 114, 17, 18, 19, 0, 262, 263, 0, 0, 279,
864
+ 0, 0, 173, 281, 0, 30, 0, 48, 0, 314,
865
+ 121, 34, 286, 33, 48, 0, 0, 136, 34, 189,
866
+ 48, 48, 321, 139, 221, 34, 33, 291, 0, 194,
867
+ 0, 0, 0, 147, 201, 98, 295, 206, 0, 0,
868
+ 99, 0, 17, 18, 292, 0, 20, 215, 0, 0,
869
+ 0, 294, 305, 0, 0, 0, 30, 0, 0, 0,
870
+ 121, 310, 301, 230, 0, 0, 0, 304, 0, 0,
871
+ 0, 166, 317, 121, 121, 0, 240, 121, 0, 0,
872
+ 228, 244, 0, 0, 178, 183, 0, 0, 0, 0,
873
+ 120, 0, 0, 319, 251, 0, 0, 0, 0, 255,
874
+ 256, 0, 0, 137, 0, 198, 199, 200, 0, 204,
875
+ 0, 0, 202, 259, 210, 212, 0, 0, 0, 121,
876
+ 0, 0, 121, 270, 0, 0, 272, 0, 273, 0,
877
+ 98, 274, 121, 0, 122, 99, 229, 17, 18, 0,
878
+ 120, 0, 0, 0, 0, 285, 283, 0, 0, 288,
879
+ 0, 30, 0, 120, 120, 121, 0, 120, 0, 0,
880
+ 0, 121, 121, 0, 177, 182, 0, 0, 0, 0,
881
+ 0, 253, 254, 0, 0, 0, 0, 0, 297, 0,
882
+ 298, 299, 303, 0, 122, 0, 0, 0, 306, 203,
883
+ 0, 0, 0, 0, 0, 309, 0, 122, 122, 120,
884
+ 121, 122, 120, 0, 0, 0, 316, 121, 179, 184,
885
+ 0, 121, 120, 0, 0, 0, 0, 0, 121, 0,
886
+ 0, 0, 0, 0, 0, 0, 289, 0, 0, 0,
887
+ 0, 121, 121, 0, 0, 120, 0, 0, 211, 213,
888
+ 293, 120, 120, 122, 0, 0, 122, 0, 0, 0,
889
+ 0, 123, 0, 300, 0, 0, 122, 0, 0, 0,
890
+ 0, 121, 0, 121, 0, 0, 0, 0, 0, 0,
891
+ 121, 311, 0, 121, 0, 0, 115, 116, 0, 122,
892
+ 120, 117, 100, 0, 0, 122, 122, 120, 121, 0,
893
+ 0, 120, 0, 0, 0, 0, 0, 0, 120, 98,
894
+ 0, 123, 0, 0, 99, 0, 17, 18, 19, 119,
895
+ 0, 120, 120, 0, 123, 123, 0, 0, 123, 0,
896
+ 30, 0, 0, 0, 122, 180, 185, 0, 0, 0,
897
+ 0, 122, 0, 0, 0, 122, 0, 0, 248, 115,
898
+ 116, 120, 122, 120, 117, 0, 0, 0, 0, 0,
899
+ 120, 0, 0, 120, 0, 122, 122, 0, 0, 0,
900
+ 123, 0, 98, 123, 154, 0, 0, 99, 120, 17,
901
+ 18, 19, 119, 123, 0, 0, 0, 0, 0, 0,
902
+ 0, 0, 0, 30, 1, 122, 0, 122, 2, 3,
903
+ 0, 4, 0, 5, 122, 6, 123, 122, 0, 0,
904
+ 8, 0, 123, 123, 11, 0, 0, 12, 13, 14,
905
+ 15, 0, 122, 0, 16, 0, 17, 18, 19, 0,
906
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
907
+ 30, 31, 0, 0, 0, 0, 0, 0, 0, 0,
908
+ 0, 123, 0, 0, 0, 0, 0, 0, 123, 0,
909
+ 0, 1, 123, 0, 0, 2, 3, 158, 4, 123,
910
+ 5, 0, 6, 0, 0, 0, 7, 8, 0, 9,
911
+ 10, 11, 123, 123, 12, 13, 14, 15, 0, 0,
912
+ 0, 16, 0, 17, 18, 19, 0, 20, 21, 22,
913
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 0,
914
+ 0, 1, 123, 0, 123, 2, 3, 0, 4, 0,
915
+ 5, 123, 6, 0, 123, 0, 7, 8, 0, 9,
916
+ 10, 11, 0, 0, 12, 13, 14, 15, 0, 123,
917
+ 0, 16, 0, 17, 18, 19, 0, 20, 21, 22,
918
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 1,
919
+ 0, 0, 0, 2, 3, 0, 4, 0, 5, 0,
920
+ 313, 0, 0, 0, 7, 8, 0, 9, 10, 11,
921
+ 0, 0, 12, 13, 14, 15, 0, 0, 0, 16,
922
+ 0, 17, 18, 19, 0, 20, 21, 22, 23, 24,
923
+ 25, 26, 27, 28, 29, 30, 31, 1, 149, 0,
924
+ 0, 2, 3, 0, 4, 0, 5, 0, 6, 0,
925
+ 0, 0, 0, 0, 0, 0, 0, 11, 0, 0,
926
+ 12, 13, 14, 15, 0, 0, 0, 16, 0, 17,
927
+ 18, 19, 0, 20, 21, 22, 23, 24, 25, 26,
928
+ 27, 28, 29, 30, 31, 1, 0, 0, 0, 2,
929
+ 3, 0, 4, 160, 5, 0, 6, 0, 0, 0,
930
+ 0, 0, 0, 0, 0, 11, 0, 0, 12, 13,
931
+ 14, 15, 0, 0, 0, 16, 0, 17, 18, 19,
932
+ 0, 20, 21, 22, 23, 24, 25, 26, 27, 28,
933
+ 29, 30, 31, 1, 0, 0, 0, 2, 3, 0,
934
+ 4, 0, 5, 162, 6, 0, 0, 0, 0, 0,
935
+ 0, 0, 0, 11, 0, 0, 12, 13, 14, 15,
936
+ 0, 0, 0, 16, 0, 17, 18, 19, 0, 20,
937
+ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
938
+ 31, 1, 0, 0, 0, 2, 3, 0, 4, 0,
939
+ 5, 0, 6, 0, 0, 0, 0, 0, 0, 0,
940
+ 0, 11, 0, 0, 12, 13, 14, 15, 0, 0,
941
+ 0, 16, 0, 17, 18, 19, 0, 20, 21, 22,
942
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 125,
943
+ 0, 0, 0, 2, 3, 0, 4, 0, 5, 0,
944
+ 6, 0, 0, 0, 0, 8, 0, 0, 0, 0,
945
+ 0, 0, 0, 0, 98, 0, 0, 126, 0, 99,
946
+ 0, 17, 0, 0, 0, 20, 21, 22, 23, 24,
947
+ 25, 26, 27, 28, 29, 125, 31, 0, 0, 2,
948
+ 3, 0, 4, 0, 5, 0, 6, 0, 0, 0,
949
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
950
+ 98, 0, 188, 126, 0, 99, 0, 17, 0, 0,
951
+ 0, 20, 21, 22, 23, 24, 25, 26, 27, 28,
952
+ 29, 125, 31, 0, 0, 2, 3, 0, 4, 0,
953
+ 5, 0, 6, 0, 0, 0, 0, 0, 0, 0,
954
+ 0, 0, 0, 0, 0, 0, 98, 0, 239, 126,
955
+ 0, 99, 0, 17, 0, 0, 0, 20, 21, 22,
956
+ 23, 24, 25, 26, 27, 28, 29, 125, 31, 0,
957
+ 0, 2, 3, 0, 4, 0, 5, 0, 6, 0,
958
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
959
+ 0, 0, 98, 0, 243, 126, 0, 99, 0, 17,
960
+ 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
961
+ 27, 28, 29, 125, 31, 0, 0, 2, 3, 0,
962
+ 4, 0, 5, 0, 6, 0, 0, 0, 0, 0,
963
+ 0, 0, 0, 0, 0, 0, 0, 0, 98, 0,
964
+ 0, 126, 0, 99, 0, 17, 0, 0, 0, 20,
965
+ 21, 22, 23, 24, 25, 26, 27, 28, 29, 0,
966
+ 31, 290, 115, 116, 0, 0, 0, 117, 0, 0,
967
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 115,
968
+ 116, 0, 3, 0, 117, 98, 0, 118, 0, 271,
969
+ 99, 0, 17, 18, 19, 119, 115, 116, 0, 174,
970
+ 0, 117, 98, 0, 118, 0, 30, 99, 0, 17,
971
+ 18, 19, 119, 0, 0, 0, 0, 0, 0, 98,
972
+ 0, 118, 0, 30, 99, 0, 17, 18, 19, 119,
973
+ 115, 116, 0, 0, 0, 117, 0, 0, 0, 0,
974
+ 30, 0, 0, 0, 8, 115, 116, 0, 0, 0,
975
+ 117, 246, 0, 98, 0, 118, 0, 0, 99, 0,
976
+ 17, 18, 19, 119, 0, 0, 0, 0, 98, 0,
977
+ 118, 0, 0, 99, 30, 17, 18, 19, 119, 115,
978
+ 116, 0, 0, 0, 117, 278, 0, 0, 0, 30,
979
+ 0, 0, 0, 0, 115, 116, 0, 0, 0, 117,
980
+ 280, 0, 98, 0, 118, 0, 0, 99, 0, 17,
981
+ 18, 19, 119, 0, 0, 0, 0, 98, 0, 118,
982
+ 0, 0, 99, 30, 17, 18, 19, 119, 115, 116,
983
+ 0, 0, 0, 117, 0, 0, 0, 0, 30, 307,
984
+ 0, 0, 0, 115, 116, 0, 0, 0, 117, 0,
985
+ 0, 98, 0, 118, 0, 0, 99, 0, 17, 18,
986
+ 19, 119, 0, 0, 0, 0, 98, 0, 118, 0,
987
+ 0, 99, 30, 17, 18, 19, 119, 115, 116, 0,
988
+ 0, 0, 117, 0, 0, 0, 0, 30, 0, 0,
989
+ 0, 0, 0, 0, 0, -173, 0, 0, 0, -173,
990
+ 98, 0, 154, 0, -173, 99, -173, 17, 18, 19,
991
+ 119, 0, -173, -173, 8, 0, -173, -173, 0, 0,
992
+ 0, 30, 0, 0, 0, 0, 0, 0, 0, -173
993
+ };
994
+
995
+ static const yytype_int16 yycheck[] =
996
+ {
997
+ 0, 53, 0, 149, 0, 36, 0, 142, 19, 14,
998
+ 142, 8, 1, 8, 39, 17, 8, 123, 124, 28,
999
+ 5, 6, 4, 20, 33, 36, 35, 44, 19, 46,
1000
+ 32, 8, 4, 33, 17, 17, 36, 33, 19, 33,
1001
+ 36, 36, 39, 28, 44, 17, 46, 39, 33, 32,
1002
+ 35, 7, 8, 34, 54, 107, 8, 8, 14, 18,
1003
+ 19, 1, 2, 3, 4, 5, 24, 25, 20, 20,
1004
+ 205, 217, 19, 205, 180, 0, 17, 1, 19, 185,
1005
+ 111, 19, 28, 30, 14, 9, 10, 33, 17, 35,
1006
+ 19, 36, 16, 39, 94, 95, 94, 95, 94, 95,
1007
+ 94, 95, 17, 120, 170, 171, 46, 96, 17, 25,
1008
+ 110, 111, 24, 130, 110, 111, 110, 113, 17, 113,
1009
+ 120, 54, 11, 3, 9, 4, 157, 8, 159, 10,
1010
+ 130, 148, 28, 133, 67, 9, 125, 33, 11, 35,
1011
+ 36, 34, 13, 15, 68, 134, 11, 28, 148, 9,
1012
+ 20, 15, 33, 4, 35, 36, 14, 157, 209, 159,
1013
+ 177, 157, 140, 159, 313, 182, 90, 172, 49, 276,
1014
+ -1, -1, 96, 97, -1, -1, -1, 177, -1, 175,
1015
+ -1, 175, 182, -1, 236, -1, -1, -1, -1, 122,
1016
+ -1, -1, 132, 117, -1, -1, -1, 214, -1, 123,
1017
+ 124, 125, 126, -1, 144, -1, 11, 140, 148, 142,
1018
+ 134, -1, -1, 153, 214, 10, 156, 157, -1, 159,
1019
+ -1, 161, -1, 163, 164, 165, -1, -1, -1, -1,
1020
+ 247, -1, -1, 28, 174, -1, -1, -1, 33, -1,
1021
+ 35, 36, 37, -1, 168, 46, 179, 247, 188, -1,
1022
+ -1, 184, 176, -1, 49, -1, 180, 181, -1, -1,
1023
+ -1, 185, 279, -1, 281, 282, 10, -1, 208, -1,
1024
+ -1, 195, 205, -1, -1, 6, 209, -1, 211, 279,
1025
+ 213, 281, 282, 314, 28, -1, 226, -1, -1, 33,
1026
+ 321, 35, 36, 37, -1, 219, 220, -1, -1, 239,
1027
+ -1, -1, 107, 243, -1, 49, -1, 307, -1, 307,
1028
+ 41, 307, 252, 307, 314, -1, -1, 10, 314, 120,
1029
+ 320, 321, 320, 54, 320, 321, 320, 267, -1, 130,
1030
+ -1, -1, -1, 64, 139, 28, 276, 142, -1, -1,
1031
+ 33, -1, 35, 36, 268, -1, 39, 148, -1, -1,
1032
+ -1, 275, 292, -1, -1, -1, 49, -1, -1, -1,
1033
+ 91, 301, 286, 168, -1, -1, -1, 291, -1, -1,
1034
+ -1, 102, 312, 104, 105, -1, 177, 108, -1, -1,
1035
+ 320, 182, -1, -1, 115, 116, -1, -1, -1, -1,
1036
+ 41, -1, -1, 317, 199, -1, -1, -1, -1, 204,
1037
+ 205, -1, -1, 54, -1, 136, 137, 138, -1, 140,
1038
+ -1, -1, 10, 214, 145, 146, -1, -1, -1, 150,
1039
+ -1, -1, 153, 228, -1, -1, 231, -1, 233, -1,
1040
+ 28, 236, 163, -1, 41, 33, 167, 35, 36, -1,
1041
+ 91, -1, -1, -1, -1, 250, 247, -1, -1, 254,
1042
+ -1, 49, -1, 104, 105, 186, -1, 108, -1, -1,
1043
+ -1, 192, 193, -1, 115, 116, -1, -1, -1, -1,
1044
+ -1, 202, 203, -1, -1, -1, -1, -1, 279, -1,
1045
+ 281, 282, 287, -1, 91, -1, -1, -1, 293, 140,
1046
+ -1, -1, -1, -1, -1, 300, -1, 104, 105, 150,
1047
+ 231, 108, 153, -1, -1, -1, 311, 238, 115, 116,
1048
+ -1, 242, 163, -1, -1, -1, -1, -1, 249, -1,
1049
+ -1, -1, -1, -1, -1, -1, 257, -1, -1, -1,
1050
+ -1, 262, 263, -1, -1, 186, -1, -1, 145, 146,
1051
+ 271, 192, 193, 150, -1, -1, 153, -1, -1, -1,
1052
+ -1, 41, -1, 284, -1, -1, 163, -1, -1, -1,
1053
+ -1, 292, -1, 294, -1, -1, -1, -1, -1, -1,
1054
+ 301, 302, -1, 304, -1, -1, 5, 6, -1, 186,
1055
+ 231, 10, 313, -1, -1, 192, 193, 238, 319, -1,
1056
+ -1, 242, -1, -1, -1, -1, -1, -1, 249, 28,
1057
+ -1, 91, -1, -1, 33, -1, 35, 36, 37, 38,
1058
+ -1, 262, 263, -1, 104, 105, -1, -1, 108, -1,
1059
+ 49, -1, -1, -1, 231, 115, 116, -1, -1, -1,
1060
+ -1, 238, -1, -1, -1, 242, -1, -1, 4, 5,
1061
+ 6, 292, 249, 294, 10, -1, -1, -1, -1, -1,
1062
+ 301, -1, -1, 304, -1, 262, 263, -1, -1, -1,
1063
+ 150, -1, 28, 153, 30, -1, -1, 33, 319, 35,
1064
+ 36, 37, 38, 163, -1, -1, -1, -1, -1, -1,
1065
+ -1, -1, -1, 49, 3, 292, -1, 294, 7, 8,
1066
+ -1, 10, -1, 12, 301, 14, 186, 304, -1, -1,
1067
+ 19, -1, 192, 193, 23, -1, -1, 26, 27, 28,
1068
+ 29, -1, 319, -1, 33, -1, 35, 36, 37, -1,
1069
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
1070
+ 49, 50, -1, -1, -1, -1, -1, -1, -1, -1,
1071
+ -1, 231, -1, -1, -1, -1, -1, -1, 238, -1,
1072
+ -1, 3, 242, -1, -1, 7, 8, 9, 10, 249,
1073
+ 12, -1, 14, -1, -1, -1, 18, 19, -1, 21,
1074
+ 22, 23, 262, 263, 26, 27, 28, 29, -1, -1,
1075
+ -1, 33, -1, 35, 36, 37, -1, 39, 40, 41,
1076
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, -1,
1077
+ -1, 3, 292, -1, 294, 7, 8, -1, 10, -1,
1078
+ 12, 301, 14, -1, 304, -1, 18, 19, -1, 21,
1079
+ 22, 23, -1, -1, 26, 27, 28, 29, -1, 319,
1080
+ -1, 33, -1, 35, 36, 37, -1, 39, 40, 41,
1081
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 3,
1082
+ -1, -1, -1, 7, 8, -1, 10, -1, 12, -1,
1083
+ 14, -1, -1, -1, 18, 19, -1, 21, 22, 23,
1084
+ -1, -1, 26, 27, 28, 29, -1, -1, -1, 33,
1085
+ -1, 35, 36, 37, -1, 39, 40, 41, 42, 43,
1086
+ 44, 45, 46, 47, 48, 49, 50, 3, 4, -1,
1087
+ -1, 7, 8, -1, 10, -1, 12, -1, 14, -1,
1088
+ -1, -1, -1, -1, -1, -1, -1, 23, -1, -1,
1089
+ 26, 27, 28, 29, -1, -1, -1, 33, -1, 35,
1090
+ 36, 37, -1, 39, 40, 41, 42, 43, 44, 45,
1091
+ 46, 47, 48, 49, 50, 3, -1, -1, -1, 7,
1092
+ 8, -1, 10, 11, 12, -1, 14, -1, -1, -1,
1093
+ -1, -1, -1, -1, -1, 23, -1, -1, 26, 27,
1094
+ 28, 29, -1, -1, -1, 33, -1, 35, 36, 37,
1095
+ -1, 39, 40, 41, 42, 43, 44, 45, 46, 47,
1096
+ 48, 49, 50, 3, -1, -1, -1, 7, 8, -1,
1097
+ 10, -1, 12, 13, 14, -1, -1, -1, -1, -1,
1098
+ -1, -1, -1, 23, -1, -1, 26, 27, 28, 29,
1099
+ -1, -1, -1, 33, -1, 35, 36, 37, -1, 39,
1100
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
1101
+ 50, 3, -1, -1, -1, 7, 8, -1, 10, -1,
1102
+ 12, -1, 14, -1, -1, -1, -1, -1, -1, -1,
1103
+ -1, 23, -1, -1, 26, 27, 28, 29, -1, -1,
1104
+ -1, 33, -1, 35, 36, 37, -1, 39, 40, 41,
1105
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 3,
1106
+ -1, -1, -1, 7, 8, -1, 10, -1, 12, -1,
1107
+ 14, -1, -1, -1, -1, 19, -1, -1, -1, -1,
1108
+ -1, -1, -1, -1, 28, -1, -1, 31, -1, 33,
1109
+ -1, 35, -1, -1, -1, 39, 40, 41, 42, 43,
1110
+ 44, 45, 46, 47, 48, 3, 50, -1, -1, 7,
1111
+ 8, -1, 10, -1, 12, -1, 14, -1, -1, -1,
1112
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1113
+ 28, -1, 30, 31, -1, 33, -1, 35, -1, -1,
1114
+ -1, 39, 40, 41, 42, 43, 44, 45, 46, 47,
1115
+ 48, 3, 50, -1, -1, 7, 8, -1, 10, -1,
1116
+ 12, -1, 14, -1, -1, -1, -1, -1, -1, -1,
1117
+ -1, -1, -1, -1, -1, -1, 28, -1, 30, 31,
1118
+ -1, 33, -1, 35, -1, -1, -1, 39, 40, 41,
1119
+ 42, 43, 44, 45, 46, 47, 48, 3, 50, -1,
1120
+ -1, 7, 8, -1, 10, -1, 12, -1, 14, -1,
1121
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1122
+ -1, -1, 28, -1, 30, 31, -1, 33, -1, 35,
1123
+ -1, -1, -1, 39, 40, 41, 42, 43, 44, 45,
1124
+ 46, 47, 48, 3, 50, -1, -1, 7, 8, -1,
1125
+ 10, -1, 12, -1, 14, -1, -1, -1, -1, -1,
1126
+ -1, -1, -1, -1, -1, -1, -1, -1, 28, -1,
1127
+ -1, 31, -1, 33, -1, 35, -1, -1, -1, 39,
1128
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, -1,
1129
+ 50, 4, 5, 6, -1, -1, -1, 10, -1, -1,
1130
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 5,
1131
+ 6, -1, 8, -1, 10, 28, -1, 30, -1, 15,
1132
+ 33, -1, 35, 36, 37, 38, 5, 6, -1, 8,
1133
+ -1, 10, 28, -1, 30, -1, 49, 33, -1, 35,
1134
+ 36, 37, 38, -1, -1, -1, -1, -1, -1, 28,
1135
+ -1, 30, -1, 49, 33, -1, 35, 36, 37, 38,
1136
+ 5, 6, -1, -1, -1, 10, -1, -1, -1, -1,
1137
+ 49, -1, -1, -1, 19, 5, 6, -1, -1, -1,
1138
+ 10, 11, -1, 28, -1, 30, -1, -1, 33, -1,
1139
+ 35, 36, 37, 38, -1, -1, -1, -1, 28, -1,
1140
+ 30, -1, -1, 33, 49, 35, 36, 37, 38, 5,
1141
+ 6, -1, -1, -1, 10, 11, -1, -1, -1, 49,
1142
+ -1, -1, -1, -1, 5, 6, -1, -1, -1, 10,
1143
+ 11, -1, 28, -1, 30, -1, -1, 33, -1, 35,
1144
+ 36, 37, 38, -1, -1, -1, -1, 28, -1, 30,
1145
+ -1, -1, 33, 49, 35, 36, 37, 38, 5, 6,
1146
+ -1, -1, -1, 10, -1, -1, -1, -1, 49, 16,
1147
+ -1, -1, -1, 5, 6, -1, -1, -1, 10, -1,
1148
+ -1, 28, -1, 30, -1, -1, 33, -1, 35, 36,
1149
+ 37, 38, -1, -1, -1, -1, 28, -1, 30, -1,
1150
+ -1, 33, 49, 35, 36, 37, 38, 5, 6, -1,
1151
+ -1, -1, 10, -1, -1, -1, -1, 49, -1, -1,
1152
+ -1, -1, -1, -1, -1, 0, -1, -1, -1, 4,
1153
+ 28, -1, 30, -1, 9, 33, 11, 35, 36, 37,
1154
+ 38, -1, 17, 18, 19, -1, 21, 22, -1, -1,
1155
+ -1, 49, -1, -1, -1, -1, -1, -1, -1, 34
1156
+ };
1157
+
1158
+ /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1159
+ symbol of state STATE-NUM. */
1160
+ static const yytype_uint8 yystos[] =
1161
+ {
1162
+ 0, 3, 7, 8, 10, 12, 14, 18, 19, 21,
1163
+ 22, 23, 26, 27, 28, 29, 33, 35, 36, 37,
1164
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
1165
+ 49, 50, 52, 53, 54, 56, 57, 58, 59, 60,
1166
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
1167
+ 71, 72, 73, 74, 75, 76, 77, 78, 83, 84,
1168
+ 85, 86, 87, 88, 89, 90, 91, 92, 94, 96,
1169
+ 98, 99, 104, 105, 106, 107, 108, 109, 110, 111,
1170
+ 112, 113, 115, 116, 117, 118, 119, 120, 125, 54,
1171
+ 55, 62, 69, 114, 55, 55, 55, 55, 28, 33,
1172
+ 68, 121, 122, 123, 62, 62, 58, 74, 62, 0,
1173
+ 53, 57, 19, 53, 56, 5, 6, 10, 30, 38,
1174
+ 65, 68, 92, 94, 95, 3, 31, 69, 93, 112,
1175
+ 55, 93, 32, 17, 32, 66, 10, 65, 67, 68,
1176
+ 69, 79, 80, 81, 82, 5, 6, 68, 67, 4,
1177
+ 62, 97, 114, 62, 30, 4, 17, 57, 9, 57,
1178
+ 11, 114, 13, 62, 124, 14, 68, 17, 24, 100,
1179
+ 101, 102, 20, 58, 8, 53, 10, 65, 68, 92,
1180
+ 94, 10, 65, 68, 92, 94, 62, 55, 30, 93,
1181
+ 97, 97, 62, 62, 93, 55, 69, 114, 68, 68,
1182
+ 68, 58, 10, 65, 68, 80, 58, 79, 82, 55,
1183
+ 68, 92, 68, 92, 55, 93, 117, 4, 55, 30,
1184
+ 55, 54, 55, 55, 55, 55, 17, 55, 55, 68,
1185
+ 58, 62, 100, 25, 100, 103, 74, 55, 62, 30,
1186
+ 93, 97, 62, 30, 93, 97, 11, 55, 4, 62,
1187
+ 11, 58, 3, 68, 68, 58, 58, 67, 81, 93,
1188
+ 117, 4, 62, 62, 9, 9, 11, 15, 55, 13,
1189
+ 58, 15, 58, 58, 58, 34, 126, 127, 11, 55,
1190
+ 11, 55, 20, 93, 20, 58, 55, 11, 58, 68,
1191
+ 4, 55, 62, 68, 62, 55, 127, 93, 93, 93,
1192
+ 68, 62, 20, 58, 62, 55, 58, 16, 9, 58,
1193
+ 55, 68, 15, 14, 57, 4, 58, 55, 121, 62,
1194
+ 14, 57
1195
+ };
1196
+
1197
+ #define yyerrok (yyerrstatus = 0)
1198
+ #define yyclearin (yychar = YYEMPTY)
1199
+ #define YYEMPTY (-2)
1200
+ #define YYEOF 0
1201
+
1202
+ #define YYACCEPT goto yyacceptlab
1203
+ #define YYABORT goto yyabortlab
1204
+ #define YYERROR goto yyerrorlab
1205
+
1206
+
1207
+ /* Like YYERROR except do call yyerror. This remains here temporarily
1208
+ to ease the transition to the new meaning of YYERROR, for GCC.
1209
+ Once GCC version 2 has supplanted version 1, this can go. */
1210
+
1211
+ #define YYFAIL goto yyerrlab
1212
+
1213
+ #define YYRECOVERING() (!!yyerrstatus)
1214
+
1215
+ #define YYBACKUP(Token, Value) \
1216
+ do \
1217
+ if (yychar == YYEMPTY && yylen == 1) \
1218
+ { \
1219
+ yychar = (Token); \
1220
+ yylval = (Value); \
1221
+ yytoken = YYTRANSLATE (yychar); \
1222
+ YYPOPSTACK (1); \
1223
+ goto yybackup; \
1224
+ } \
1225
+ else \
1226
+ { \
1227
+ yyerror (self, YY_("syntax error: cannot back up")); \
1228
+ YYERROR; \
1229
+ } \
1230
+ while (YYID (0))
1231
+
1232
+
1233
+ #define YYTERROR 1
1234
+ #define YYERRCODE 256
1235
+
1236
+
1237
+ /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
1238
+ If N is 0, then set CURRENT to the empty location which ends
1239
+ the previous symbol: RHS[0] (always defined). */
1240
+
1241
+ #define YYRHSLOC(Rhs, K) ((Rhs)[K])
1242
+ #ifndef YYLLOC_DEFAULT
1243
+ # define YYLLOC_DEFAULT(Current, Rhs, N) \
1244
+ do \
1245
+ if (YYID (N)) \
1246
+ { \
1247
+ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
1248
+ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
1249
+ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
1250
+ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
1251
+ } \
1252
+ else \
1253
+ { \
1254
+ (Current).first_line = (Current).last_line = \
1255
+ YYRHSLOC (Rhs, 0).last_line; \
1256
+ (Current).first_column = (Current).last_column = \
1257
+ YYRHSLOC (Rhs, 0).last_column; \
1258
+ } \
1259
+ while (YYID (0))
1260
+ #endif
1261
+
1262
+
1263
+ /* YY_LOCATION_PRINT -- Print the location on the stream.
1264
+ This macro was not mandated originally: define only if we know
1265
+ we won't break user code: when these are the locations we know. */
1266
+
1267
+ #ifndef YY_LOCATION_PRINT
1268
+ # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
1269
+ # define YY_LOCATION_PRINT(File, Loc) \
1270
+ fprintf (File, "%d.%d-%d.%d", \
1271
+ (Loc).first_line, (Loc).first_column, \
1272
+ (Loc).last_line, (Loc).last_column)
1273
+ # else
1274
+ # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1275
+ # endif
1276
+ #endif
1277
+
1278
+
1279
+ /* YYLEX -- calling `yylex' with the right arguments. */
1280
+
1281
+ #ifdef YYLEX_PARAM
1282
+ # define YYLEX yylex (YYLEX_PARAM)
1283
+ #else
1284
+ # define YYLEX yylex (self)
1285
+ #endif
1286
+
1287
+ /* Enable debugging if requested. */
1288
+ #if YYDEBUG
1289
+
1290
+ # ifndef YYFPRINTF
1291
+ # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1292
+ # define YYFPRINTF fprintf
1293
+ # endif
1294
+
1295
+ # define YYDPRINTF(Args) \
1296
+ do { \
1297
+ if (yydebug) \
1298
+ YYFPRINTF Args; \
1299
+ } while (YYID (0))
1300
+
1301
+ # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
1302
+ do { \
1303
+ if (yydebug) \
1304
+ { \
1305
+ YYFPRINTF (stderr, "%s ", Title); \
1306
+ yy_symbol_print (stderr, \
1307
+ Type, Value, self); \
1308
+ YYFPRINTF (stderr, "\n"); \
1309
+ } \
1310
+ } while (YYID (0))
1311
+
1312
+
1313
+ /*--------------------------------.
1314
+ | Print this symbol on YYOUTPUT. |
1315
+ `--------------------------------*/
1316
+
1317
+ /*ARGSUSED*/
1318
+ #if (defined __STDC__ || defined __C99__FUNC__ \
1319
+ || defined __cplusplus || defined _MSC_VER)
1320
+ static void
1321
+ yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, VALUE self)
1322
+ #else
1323
+ static void
1324
+ yy_symbol_value_print (yyoutput, yytype, yyvaluep, self)
1325
+ FILE *yyoutput;
1326
+ int yytype;
1327
+ YYSTYPE const * const yyvaluep;
1328
+ VALUE self;
1329
+ #endif
1330
+ {
1331
+ if (!yyvaluep)
1332
+ return;
1333
+ YYUSE (self);
1334
+ # ifdef YYPRINT
1335
+ if (yytype < YYNTOKENS)
1336
+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1337
+ # else
1338
+ YYUSE (yyoutput);
1339
+ # endif
1340
+ switch (yytype)
1341
+ {
1342
+ default:
1343
+ break;
1344
+ }
1345
+ }
1346
+
1347
+
1348
+ /*--------------------------------.
1349
+ | Print this symbol on YYOUTPUT. |
1350
+ `--------------------------------*/
1351
+
1352
+ #if (defined __STDC__ || defined __C99__FUNC__ \
1353
+ || defined __cplusplus || defined _MSC_VER)
1354
+ static void
1355
+ yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, VALUE self)
1356
+ #else
1357
+ static void
1358
+ yy_symbol_print (yyoutput, yytype, yyvaluep, self)
1359
+ FILE *yyoutput;
1360
+ int yytype;
1361
+ YYSTYPE const * const yyvaluep;
1362
+ VALUE self;
1363
+ #endif
1364
+ {
1365
+ if (yytype < YYNTOKENS)
1366
+ YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1367
+ else
1368
+ YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1369
+
1370
+ yy_symbol_value_print (yyoutput, yytype, yyvaluep, self);
1371
+ YYFPRINTF (yyoutput, ")");
1372
+ }
1373
+
1374
+ /*------------------------------------------------------------------.
1375
+ | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1376
+ | TOP (included). |
1377
+ `------------------------------------------------------------------*/
1378
+
1379
+ #if (defined __STDC__ || defined __C99__FUNC__ \
1380
+ || defined __cplusplus || defined _MSC_VER)
1381
+ static void
1382
+ yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
1383
+ #else
1384
+ static void
1385
+ yy_stack_print (bottom, top)
1386
+ yytype_int16 *bottom;
1387
+ yytype_int16 *top;
1388
+ #endif
1389
+ {
1390
+ YYFPRINTF (stderr, "Stack now");
1391
+ for (; bottom <= top; ++bottom)
1392
+ YYFPRINTF (stderr, " %d", *bottom);
1393
+ YYFPRINTF (stderr, "\n");
1394
+ }
1395
+
1396
+ # define YY_STACK_PRINT(Bottom, Top) \
1397
+ do { \
1398
+ if (yydebug) \
1399
+ yy_stack_print ((Bottom), (Top)); \
1400
+ } while (YYID (0))
1401
+
1402
+
1403
+ /*------------------------------------------------.
1404
+ | Report that the YYRULE is going to be reduced. |
1405
+ `------------------------------------------------*/
1406
+
1407
+ #if (defined __STDC__ || defined __C99__FUNC__ \
1408
+ || defined __cplusplus || defined _MSC_VER)
1409
+ static void
1410
+ yy_reduce_print (YYSTYPE *yyvsp, int yyrule, VALUE self)
1411
+ #else
1412
+ static void
1413
+ yy_reduce_print (yyvsp, yyrule, self)
1414
+ YYSTYPE *yyvsp;
1415
+ int yyrule;
1416
+ VALUE self;
1417
+ #endif
1418
+ {
1419
+ int yynrhs = yyr2[yyrule];
1420
+ int yyi;
1421
+ unsigned long int yylno = yyrline[yyrule];
1422
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1423
+ yyrule - 1, yylno);
1424
+ /* The symbols being reduced. */
1425
+ for (yyi = 0; yyi < yynrhs; yyi++)
1426
+ {
1427
+ fprintf (stderr, " $%d = ", yyi + 1);
1428
+ yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
1429
+ &(yyvsp[(yyi + 1) - (yynrhs)])
1430
+ , self);
1431
+ fprintf (stderr, "\n");
1432
+ }
1433
+ }
1434
+
1435
+ # define YY_REDUCE_PRINT(Rule) \
1436
+ do { \
1437
+ if (yydebug) \
1438
+ yy_reduce_print (yyvsp, Rule, self); \
1439
+ } while (YYID (0))
1440
+
1441
+ /* Nonzero means print parse trace. It is left uninitialized so that
1442
+ multiple parsers can coexist. */
1443
+ int yydebug;
1444
+ #else /* !YYDEBUG */
1445
+ # define YYDPRINTF(Args)
1446
+ # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1447
+ # define YY_STACK_PRINT(Bottom, Top)
1448
+ # define YY_REDUCE_PRINT(Rule)
1449
+ #endif /* !YYDEBUG */
1450
+
1451
+
1452
+ /* YYINITDEPTH -- initial size of the parser's stacks. */
1453
+ #ifndef YYINITDEPTH
1454
+ # define YYINITDEPTH 200
1455
+ #endif
1456
+
1457
+ /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1458
+ if the built-in stack extension method is used).
1459
+
1460
+ Do not make this value too large; the results are undefined if
1461
+ YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1462
+ evaluated with infinite-precision integer arithmetic. */
1463
+
1464
+ #ifndef YYMAXDEPTH
1465
+ # define YYMAXDEPTH 10000
1466
+ #endif
1467
+
1468
+
1469
+
1470
+ #if YYERROR_VERBOSE
1471
+
1472
+ # ifndef yystrlen
1473
+ # if defined __GLIBC__ && defined _STRING_H
1474
+ # define yystrlen strlen
1475
+ # else
1476
+ /* Return the length of YYSTR. */
1477
+ #if (defined __STDC__ || defined __C99__FUNC__ \
1478
+ || defined __cplusplus || defined _MSC_VER)
1479
+ static YYSIZE_T
1480
+ yystrlen (const char *yystr)
1481
+ #else
1482
+ static YYSIZE_T
1483
+ yystrlen (yystr)
1484
+ const char *yystr;
1485
+ #endif
1486
+ {
1487
+ YYSIZE_T yylen;
1488
+ for (yylen = 0; yystr[yylen]; yylen++)
1489
+ continue;
1490
+ return yylen;
1491
+ }
1492
+ # endif
1493
+ # endif
1494
+
1495
+ # ifndef yystpcpy
1496
+ # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1497
+ # define yystpcpy stpcpy
1498
+ # else
1499
+ /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1500
+ YYDEST. */
1501
+ #if (defined __STDC__ || defined __C99__FUNC__ \
1502
+ || defined __cplusplus || defined _MSC_VER)
1503
+ static char *
1504
+ yystpcpy (char *yydest, const char *yysrc)
1505
+ #else
1506
+ static char *
1507
+ yystpcpy (yydest, yysrc)
1508
+ char *yydest;
1509
+ const char *yysrc;
1510
+ #endif
1511
+ {
1512
+ char *yyd = yydest;
1513
+ const char *yys = yysrc;
1514
+
1515
+ while ((*yyd++ = *yys++) != '\0')
1516
+ continue;
1517
+
1518
+ return yyd - 1;
1519
+ }
1520
+ # endif
1521
+ # endif
1522
+
1523
+ # ifndef yytnamerr
1524
+ /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1525
+ quotes and backslashes, so that it's suitable for yyerror. The
1526
+ heuristic is that double-quoting is unnecessary unless the string
1527
+ contains an apostrophe, a comma, or backslash (other than
1528
+ backslash-backslash). YYSTR is taken from yytname. If YYRES is
1529
+ null, do not copy; instead, return the length of what the result
1530
+ would have been. */
1531
+ static YYSIZE_T
1532
+ yytnamerr (char *yyres, const char *yystr)
1533
+ {
1534
+ if (*yystr == '"')
1535
+ {
1536
+ YYSIZE_T yyn = 0;
1537
+ char const *yyp = yystr;
1538
+
1539
+ for (;;)
1540
+ switch (*++yyp)
1541
+ {
1542
+ case '\'':
1543
+ case ',':
1544
+ goto do_not_strip_quotes;
1545
+
1546
+ case '\\':
1547
+ if (*++yyp != '\\')
1548
+ goto do_not_strip_quotes;
1549
+ /* Fall through. */
1550
+ default:
1551
+ if (yyres)
1552
+ yyres[yyn] = *yyp;
1553
+ yyn++;
1554
+ break;
1555
+
1556
+ case '"':
1557
+ if (yyres)
1558
+ yyres[yyn] = '\0';
1559
+ return yyn;
1560
+ }
1561
+ do_not_strip_quotes: ;
1562
+ }
1563
+
1564
+ if (! yyres)
1565
+ return yystrlen (yystr);
1566
+
1567
+ return yystpcpy (yyres, yystr) - yyres;
1568
+ }
1569
+ # endif
1570
+
1571
+ /* Copy into YYRESULT an error message about the unexpected token
1572
+ YYCHAR while in state YYSTATE. Return the number of bytes copied,
1573
+ including the terminating null byte. If YYRESULT is null, do not
1574
+ copy anything; just return the number of bytes that would be
1575
+ copied. As a special case, return 0 if an ordinary "syntax error"
1576
+ message will do. Return YYSIZE_MAXIMUM if overflow occurs during
1577
+ size calculation. */
1578
+ static YYSIZE_T
1579
+ yysyntax_error (char *yyresult, int yystate, int yychar)
1580
+ {
1581
+ int yyn = yypact[yystate];
1582
+
1583
+ if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
1584
+ return 0;
1585
+ else
1586
+ {
1587
+ int yytype = YYTRANSLATE (yychar);
1588
+ YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
1589
+ YYSIZE_T yysize = yysize0;
1590
+ YYSIZE_T yysize1;
1591
+ int yysize_overflow = 0;
1592
+ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1593
+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1594
+ int yyx;
1595
+
1596
+ # if 0
1597
+ /* This is so xgettext sees the translatable formats that are
1598
+ constructed on the fly. */
1599
+ YY_("syntax error, unexpected %s");
1600
+ YY_("syntax error, unexpected %s, expecting %s");
1601
+ YY_("syntax error, unexpected %s, expecting %s or %s");
1602
+ YY_("syntax error, unexpected %s, expecting %s or %s or %s");
1603
+ YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1604
+ # endif
1605
+ char *yyfmt;
1606
+ char const *yyf;
1607
+ static char const yyunexpected[] = "syntax error, unexpected %s";
1608
+ static char const yyexpecting[] = ", expecting %s";
1609
+ static char const yyor[] = " or %s";
1610
+ char yyformat[sizeof yyunexpected
1611
+ + sizeof yyexpecting - 1
1612
+ + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
1613
+ * (sizeof yyor - 1))];
1614
+ char const *yyprefix = yyexpecting;
1615
+
1616
+ /* Start YYX at -YYN if negative to avoid negative indexes in
1617
+ YYCHECK. */
1618
+ int yyxbegin = yyn < 0 ? -yyn : 0;
1619
+
1620
+ /* Stay within bounds of both yycheck and yytname. */
1621
+ int yychecklim = YYLAST - yyn + 1;
1622
+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1623
+ int yycount = 1;
1624
+
1625
+ yyarg[0] = yytname[yytype];
1626
+ yyfmt = yystpcpy (yyformat, yyunexpected);
1627
+
1628
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1629
+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1630
+ {
1631
+ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1632
+ {
1633
+ yycount = 1;
1634
+ yysize = yysize0;
1635
+ yyformat[sizeof yyunexpected - 1] = '\0';
1636
+ break;
1637
+ }
1638
+ yyarg[yycount++] = yytname[yyx];
1639
+ yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1640
+ yysize_overflow |= (yysize1 < yysize);
1641
+ yysize = yysize1;
1642
+ yyfmt = yystpcpy (yyfmt, yyprefix);
1643
+ yyprefix = yyor;
1644
+ }
1645
+
1646
+ yyf = YY_(yyformat);
1647
+ yysize1 = yysize + yystrlen (yyf);
1648
+ yysize_overflow |= (yysize1 < yysize);
1649
+ yysize = yysize1;
1650
+
1651
+ if (yysize_overflow)
1652
+ return YYSIZE_MAXIMUM;
1653
+
1654
+ if (yyresult)
1655
+ {
1656
+ /* Avoid sprintf, as that infringes on the user's name space.
1657
+ Don't have undefined behavior even if the translation
1658
+ produced a string with the wrong number of "%s"s. */
1659
+ char *yyp = yyresult;
1660
+ int yyi = 0;
1661
+ while ((*yyp = *yyf) != '\0')
1662
+ {
1663
+ if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1664
+ {
1665
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
1666
+ yyf += 2;
1667
+ }
1668
+ else
1669
+ {
1670
+ yyp++;
1671
+ yyf++;
1672
+ }
1673
+ }
1674
+ }
1675
+ return yysize;
1676
+ }
1677
+ }
1678
+ #endif /* YYERROR_VERBOSE */
1679
+
1680
+
1681
+ /*-----------------------------------------------.
1682
+ | Release the memory associated to this symbol. |
1683
+ `-----------------------------------------------*/
1684
+
1685
+ /*ARGSUSED*/
1686
+ #if (defined __STDC__ || defined __C99__FUNC__ \
1687
+ || defined __cplusplus || defined _MSC_VER)
1688
+ static void
1689
+ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, VALUE self)
1690
+ #else
1691
+ static void
1692
+ yydestruct (yymsg, yytype, yyvaluep, self)
1693
+ const char *yymsg;
1694
+ int yytype;
1695
+ YYSTYPE *yyvaluep;
1696
+ VALUE self;
1697
+ #endif
1698
+ {
1699
+ YYUSE (yyvaluep);
1700
+ YYUSE (self);
1701
+
1702
+ if (!yymsg)
1703
+ yymsg = "Deleting";
1704
+ YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1705
+
1706
+ switch (yytype)
1707
+ {
1708
+
1709
+ default:
1710
+ break;
1711
+ }
1712
+ }
1713
+
1714
+
1715
+ /* Prevent warnings from -Wmissing-prototypes. */
1716
+
1717
+ #ifdef YYPARSE_PARAM
1718
+ #if defined __STDC__ || defined __cplusplus
1719
+ int yyparse (void *YYPARSE_PARAM);
1720
+ #else
1721
+ int yyparse ();
1722
+ #endif
1723
+ #else /* ! YYPARSE_PARAM */
1724
+ #if defined __STDC__ || defined __cplusplus
1725
+ int yyparse (VALUE self);
1726
+ #else
1727
+ int yyparse ();
1728
+ #endif
1729
+ #endif /* ! YYPARSE_PARAM */
1730
+
1731
+
1732
+
1733
+ /* The look-ahead symbol. */
1734
+ int yychar;
1735
+
1736
+ /* The semantic value of the look-ahead symbol. */
1737
+ YYSTYPE yylval;
1738
+
1739
+ /* Number of syntax errors so far. */
1740
+ int yynerrs;
1741
+
1742
+
1743
+
1744
+ /*----------.
1745
+ | yyparse. |
1746
+ `----------*/
1747
+
1748
+ #ifdef YYPARSE_PARAM
1749
+ #if (defined __STDC__ || defined __C99__FUNC__ \
1750
+ || defined __cplusplus || defined _MSC_VER)
1751
+ int
1752
+ yyparse (void *YYPARSE_PARAM)
1753
+ #else
1754
+ int
1755
+ yyparse (YYPARSE_PARAM)
1756
+ void *YYPARSE_PARAM;
1757
+ #endif
1758
+ #else /* ! YYPARSE_PARAM */
1759
+ #if (defined __STDC__ || defined __C99__FUNC__ \
1760
+ || defined __cplusplus || defined _MSC_VER)
1761
+ int
1762
+ yyparse (VALUE self)
1763
+ #else
1764
+ int
1765
+ yyparse (self)
1766
+ VALUE self;
1767
+ #endif
1768
+ #endif
1769
+ {
1770
+
1771
+ int yystate;
1772
+ int yyn;
1773
+ int yyresult;
1774
+ /* Number of tokens to shift before error messages enabled. */
1775
+ int yyerrstatus;
1776
+ /* Look-ahead token as an internal (translated) token number. */
1777
+ int yytoken = 0;
1778
+ #if YYERROR_VERBOSE
1779
+ /* Buffer for error messages, and its allocated size. */
1780
+ char yymsgbuf[128];
1781
+ char *yymsg = yymsgbuf;
1782
+ YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1783
+ #endif
1784
+
1785
+ /* Three stacks and their tools:
1786
+ `yyss': related to states,
1787
+ `yyvs': related to semantic values,
1788
+ `yyls': related to locations.
1789
+
1790
+ Refer to the stacks thru separate pointers, to allow yyoverflow
1791
+ to reallocate them elsewhere. */
1792
+
1793
+ /* The state stack. */
1794
+ yytype_int16 yyssa[YYINITDEPTH];
1795
+ yytype_int16 *yyss = yyssa;
1796
+ yytype_int16 *yyssp;
1797
+
1798
+ /* The semantic value stack. */
1799
+ YYSTYPE yyvsa[YYINITDEPTH];
1800
+ YYSTYPE *yyvs = yyvsa;
1801
+ YYSTYPE *yyvsp;
1802
+
1803
+
1804
+
1805
+ #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
1806
+
1807
+ YYSIZE_T yystacksize = YYINITDEPTH;
1808
+
1809
+ /* The variables used to return semantic value and location from the
1810
+ action routines. */
1811
+ YYSTYPE yyval;
1812
+
1813
+
1814
+ /* The number of symbols on the RHS of the reduced rule.
1815
+ Keep to zero when no symbol should be popped. */
1816
+ int yylen = 0;
1817
+
1818
+ YYDPRINTF ((stderr, "Starting parse\n"));
1819
+
1820
+ yystate = 0;
1821
+ yyerrstatus = 0;
1822
+ yynerrs = 0;
1823
+ yychar = YYEMPTY; /* Cause a token to be read. */
1824
+
1825
+ /* Initialize stack pointers.
1826
+ Waste one element of value and location stack
1827
+ so that they stay on the same level as the state stack.
1828
+ The wasted elements are never initialized. */
1829
+
1830
+ yyssp = yyss;
1831
+ yyvsp = yyvs;
1832
+
1833
+ goto yysetstate;
1834
+
1835
+ /*------------------------------------------------------------.
1836
+ | yynewstate -- Push a new state, which is found in yystate. |
1837
+ `------------------------------------------------------------*/
1838
+ yynewstate:
1839
+ /* In all cases, when you get here, the value and location stacks
1840
+ have just been pushed. So pushing a state here evens the stacks. */
1841
+ yyssp++;
1842
+
1843
+ yysetstate:
1844
+ *yyssp = yystate;
1845
+
1846
+ if (yyss + yystacksize - 1 <= yyssp)
1847
+ {
1848
+ /* Get the current used size of the three stacks, in elements. */
1849
+ YYSIZE_T yysize = yyssp - yyss + 1;
1850
+
1851
+ #ifdef yyoverflow
1852
+ {
1853
+ /* Give user a chance to reallocate the stack. Use copies of
1854
+ these so that the &'s don't force the real ones into
1855
+ memory. */
1856
+ YYSTYPE *yyvs1 = yyvs;
1857
+ yytype_int16 *yyss1 = yyss;
1858
+
1859
+
1860
+ /* Each stack pointer address is followed by the size of the
1861
+ data in use in that stack, in bytes. This used to be a
1862
+ conditional around just the two extra args, but that might
1863
+ be undefined if yyoverflow is a macro. */
1864
+ yyoverflow (YY_("memory exhausted"),
1865
+ &yyss1, yysize * sizeof (*yyssp),
1866
+ &yyvs1, yysize * sizeof (*yyvsp),
1867
+
1868
+ &yystacksize);
1869
+
1870
+ yyss = yyss1;
1871
+ yyvs = yyvs1;
1872
+ }
1873
+ #else /* no yyoverflow */
1874
+ # ifndef YYSTACK_RELOCATE
1875
+ goto yyexhaustedlab;
1876
+ # else
1877
+ /* Extend the stack our own way. */
1878
+ if (YYMAXDEPTH <= yystacksize)
1879
+ goto yyexhaustedlab;
1880
+ yystacksize *= 2;
1881
+ if (YYMAXDEPTH < yystacksize)
1882
+ yystacksize = YYMAXDEPTH;
1883
+
1884
+ {
1885
+ yytype_int16 *yyss1 = yyss;
1886
+ union yyalloc *yyptr =
1887
+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1888
+ if (! yyptr)
1889
+ goto yyexhaustedlab;
1890
+ YYSTACK_RELOCATE (yyss);
1891
+ YYSTACK_RELOCATE (yyvs);
1892
+
1893
+ # undef YYSTACK_RELOCATE
1894
+ if (yyss1 != yyssa)
1895
+ YYSTACK_FREE (yyss1);
1896
+ }
1897
+ # endif
1898
+ #endif /* no yyoverflow */
1899
+
1900
+ yyssp = yyss + yysize - 1;
1901
+ yyvsp = yyvs + yysize - 1;
1902
+
1903
+
1904
+ YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1905
+ (unsigned long int) yystacksize));
1906
+
1907
+ if (yyss + yystacksize - 1 <= yyssp)
1908
+ YYABORT;
1909
+ }
1910
+
1911
+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1912
+
1913
+ goto yybackup;
1914
+
1915
+ /*-----------.
1916
+ | yybackup. |
1917
+ `-----------*/
1918
+ yybackup:
1919
+
1920
+ /* Do appropriate processing given the current state. Read a
1921
+ look-ahead token if we need one and don't already have one. */
1922
+
1923
+ /* First try to decide what to do without reference to look-ahead token. */
1924
+ yyn = yypact[yystate];
1925
+ if (yyn == YYPACT_NINF)
1926
+ goto yydefault;
1927
+
1928
+ /* Not known => get a look-ahead token if don't already have one. */
1929
+
1930
+ /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
1931
+ if (yychar == YYEMPTY)
1932
+ {
1933
+ YYDPRINTF ((stderr, "Reading a token: "));
1934
+ yychar = YYLEX;
1935
+ }
1936
+
1937
+ if (yychar <= YYEOF)
1938
+ {
1939
+ yychar = yytoken = YYEOF;
1940
+ YYDPRINTF ((stderr, "Now at end of input.\n"));
1941
+ }
1942
+ else
1943
+ {
1944
+ yytoken = YYTRANSLATE (yychar);
1945
+ YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1946
+ }
1947
+
1948
+ /* If the proper action on seeing token YYTOKEN is to reduce or to
1949
+ detect an error, take that action. */
1950
+ yyn += yytoken;
1951
+ if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1952
+ goto yydefault;
1953
+ yyn = yytable[yyn];
1954
+ if (yyn <= 0)
1955
+ {
1956
+ if (yyn == 0 || yyn == YYTABLE_NINF)
1957
+ goto yyerrlab;
1958
+ yyn = -yyn;
1959
+ goto yyreduce;
1960
+ }
1961
+
1962
+ if (yyn == YYFINAL)
1963
+ YYACCEPT;
1964
+
1965
+ /* Count tokens shifted since error; after three, turn off error
1966
+ status. */
1967
+ if (yyerrstatus)
1968
+ yyerrstatus--;
1969
+
1970
+ /* Shift the look-ahead token. */
1971
+ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1972
+
1973
+ /* Discard the shifted token unless it is eof. */
1974
+ if (yychar != YYEOF)
1975
+ yychar = YYEMPTY;
1976
+
1977
+ yystate = yyn;
1978
+ *++yyvsp = yylval;
1979
+
1980
+ goto yynewstate;
1981
+
1982
+
1983
+ /*-----------------------------------------------------------.
1984
+ | yydefault -- do the default action for the current state. |
1985
+ `-----------------------------------------------------------*/
1986
+ yydefault:
1987
+ yyn = yydefact[yystate];
1988
+ if (yyn == 0)
1989
+ goto yyerrlab;
1990
+ goto yyreduce;
1991
+
1992
+
1993
+ /*-----------------------------.
1994
+ | yyreduce -- Do a reduction. |
1995
+ `-----------------------------*/
1996
+ yyreduce:
1997
+ /* yyn is the number of a rule to reduce with. */
1998
+ yylen = yyr2[yyn];
1999
+
2000
+ /* If YYLEN is nonzero, implement the default value of the action:
2001
+ `$$ = $1'.
2002
+
2003
+ Otherwise, the following line sets YYVAL to garbage.
2004
+ This behavior is undocumented and Bison
2005
+ users should not rely upon it. Assigning to YYVAL
2006
+ unconditionally makes the parser a bit smaller, and it avoids a
2007
+ GCC warning that YYVAL may be used uninitialized. */
2008
+ yyval = yyvsp[1-yylen];
2009
+
2010
+
2011
+ YY_REDUCE_PRINT (yyn);
2012
+ switch (yyn)
2013
+ {
2014
+ case 3:
2015
+ #line 164 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2016
+ {
2017
+ rb_funcall(self, rb_intern("body:"), 1, (yyvsp[(1) - (1)].object));
2018
+ ;}
2019
+ break;
2020
+
2021
+ case 13:
2022
+ #line 186 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2023
+ {
2024
+ (yyval.object) = rb_funcall(self, rb_intern("ast:exp_list:"), 2, INT2NUM(yylineno), (yyvsp[(1) - (1)].object));
2025
+ ;}
2026
+ break;
2027
+
2028
+ case 14:
2029
+ #line 189 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2030
+ {
2031
+ (yyval.object) = rb_funcall(self, rb_intern("ast:exp_list:into:"), 3, INT2NUM(yylineno), (yyvsp[(2) - (2)].object), (yyvsp[(1) - (2)].object));
2032
+ ;}
2033
+ break;
2034
+
2035
+ case 15:
2036
+ #line 192 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2037
+ {
2038
+ (yyval.object) = (yyvsp[(2) - (2)].object);
2039
+ ;}
2040
+ break;
2041
+
2042
+ case 16:
2043
+ #line 195 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2044
+ {
2045
+ (yyval.object) = (yyvsp[(1) - (2)].object);
2046
+ ;}
2047
+ break;
2048
+
2049
+ case 17:
2050
+ #line 200 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2051
+ {
2052
+ (yyval.object) = (yyvsp[(3) - (5)].object);
2053
+ ;}
2054
+ break;
2055
+
2056
+ case 18:
2057
+ #line 203 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2058
+ {
2059
+ (yyval.object) = rb_funcall(self, rb_intern("ast:exp_list:"), 2, INT2NUM(yylineno), Qnil);
2060
+ ;}
2061
+ break;
2062
+
2063
+ case 19:
2064
+ #line 209 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2065
+ {
2066
+ (yyval.object) = (yyvsp[(3) - (5)].object);
2067
+ ;}
2068
+ break;
2069
+
2070
+ case 25:
2071
+ #line 221 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2072
+ {
2073
+ (yyval.object) = (yyvsp[(3) - (5)].object);
2074
+ ;}
2075
+ break;
2076
+
2077
+ case 34:
2078
+ #line 234 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2079
+ { (yyval.object) = rb_funcall(self, rb_intern("ast:super_exp:"), 2, INT2NUM(yylineno), Qnil); ;}
2080
+ break;
2081
+
2082
+ case 35:
2083
+ #line 235 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2084
+ { (yyval.object) = rb_funcall(self, rb_intern("ast:retry_exp:"), 2, INT2NUM(yylineno), Qnil); ;}
2085
+ break;
2086
+
2087
+ case 36:
2088
+ #line 236 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2089
+ {
2090
+ (yyval.object) = (yyvsp[(1) - (3)].object);
2091
+ ;}
2092
+ break;
2093
+
2094
+ case 37:
2095
+ #line 241 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2096
+ {
2097
+ (yyval.object) = rb_funcall(self, rb_intern("ast:assign:to:"), 3, INT2NUM(yylineno), (yyvsp[(4) - (4)].object), (yyvsp[(1) - (4)].object));
2098
+ ;}
2099
+ break;
2100
+
2101
+ case 39:
2102
+ #line 247 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2103
+ {
2104
+ (yyval.object) = rb_funcall(self, rb_intern("ast:assign:to:many:"), 4, INT2NUM(yylineno), (yyvsp[(3) - (3)].object), (yyvsp[(1) - (3)].object), Qtrue);
2105
+ ;}
2106
+ break;
2107
+
2108
+ case 40:
2109
+ #line 252 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2110
+ {
2111
+ (yyval.object) = fy_terminal_node(self, "ast:identifier:");
2112
+ ;}
2113
+ break;
2114
+
2115
+ case 41:
2116
+ #line 257 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2117
+ {
2118
+ (yyval.object) = fy_terminal_node(self, "ast:identifier:");
2119
+ ;}
2120
+ break;
2121
+
2122
+ case 42:
2123
+ #line 262 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2124
+ {
2125
+ (yyval.object) = fy_terminal_node(self, "ast:identifier:");
2126
+ ;}
2127
+ break;
2128
+
2129
+ case 43:
2130
+ #line 267 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2131
+ {
2132
+ (yyval.object) = fy_terminal_node(self, "ast:identifier:");
2133
+ ;}
2134
+ break;
2135
+
2136
+ case 44:
2137
+ #line 270 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2138
+ {
2139
+ (yyval.object) = fy_terminal_node_from(self, "ast:identifier:", "match");
2140
+ ;}
2141
+ break;
2142
+
2143
+ case 45:
2144
+ #line 273 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2145
+ {
2146
+ (yyval.object) = fy_terminal_node_from(self, "ast:identifier:", "class");
2147
+ ;}
2148
+ break;
2149
+
2150
+ case 48:
2151
+ #line 282 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2152
+ {
2153
+ (yyval.object) = rb_funcall(self, rb_intern("ast:concat:"), 2, INT2NUM(yylineno), (yyvsp[(1) - (1)].object));
2154
+ ;}
2155
+ break;
2156
+
2157
+ case 49:
2158
+ #line 285 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2159
+ {
2160
+ (yyval.object) = rb_funcall(self, rb_intern("ast:concat:into:"), 3, INT2NUM(yylineno), (yyvsp[(3) - (3)].object), (yyvsp[(1) - (3)].object));
2161
+ ;}
2162
+ break;
2163
+
2164
+ case 50:
2165
+ #line 290 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2166
+ {
2167
+ (yyval.object) = rb_funcall(self, rb_intern("ast:return_local_stmt:"), 2, INT2NUM(yylineno), (yyvsp[(2) - (2)].object));
2168
+ ;}
2169
+ break;
2170
+
2171
+ case 51:
2172
+ #line 293 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2173
+ {
2174
+ (yyval.object) = rb_funcall(self, rb_intern("ast:return_local_stmt:"), 2, INT2NUM(yylineno), Qnil);
2175
+ ;}
2176
+ break;
2177
+
2178
+ case 52:
2179
+ #line 298 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2180
+ {
2181
+ (yyval.object) = rb_funcall(self, rb_intern("ast:return_stmt:"), 2, INT2NUM(yylineno), (yyvsp[(2) - (2)].object));
2182
+ ;}
2183
+ break;
2184
+
2185
+ case 53:
2186
+ #line 301 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2187
+ {
2188
+ (yyval.object) = rb_funcall(self, rb_intern("ast:return_stmt:"), 2, INT2NUM(yylineno), Qnil);
2189
+ ;}
2190
+ break;
2191
+
2192
+ case 56:
2193
+ #line 312 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2194
+ {
2195
+ (yyval.object) = rb_funcall(self, rb_intern("ast:identity:"), 2, INT2NUM(yylineno), (yyvsp[(1) - (1)].object));
2196
+ ;}
2197
+ break;
2198
+
2199
+ case 57:
2200
+ #line 315 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2201
+ {
2202
+ (yyval.object) = rb_funcall(self, rb_intern("ast:constant:parent:"), 3, INT2NUM(yylineno), (yyvsp[(2) - (2)].object), (yyvsp[(1) - (2)].object));
2203
+ ;}
2204
+ break;
2205
+
2206
+ case 58:
2207
+ #line 320 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2208
+ { (yyval.object) = rb_intern("public"); ;}
2209
+ break;
2210
+
2211
+ case 59:
2212
+ #line 323 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2213
+ {
2214
+ (yyval.object) = rb_funcall(self, rb_intern("ast:class:parent:body:"), 4, INT2NUM(yylineno), (yyvsp[(2) - (3)].object), Qnil, (yyvsp[(3) - (3)].object));
2215
+ ;}
2216
+ break;
2217
+
2218
+ case 60:
2219
+ #line 326 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2220
+ {
2221
+ (yyval.object) = rb_funcall(self, rb_intern("ast:class:parent:"), 3, INT2NUM(yylineno), (yyvsp[(2) - (2)].object), Qnil);
2222
+ ;}
2223
+ break;
2224
+
2225
+ case 61:
2226
+ #line 331 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2227
+ {
2228
+ (yyval.object) = rb_funcall(self, rb_intern("ast:class:parent:body:"), 4, INT2NUM(yylineno), (yyvsp[(2) - (5)].object), (yyvsp[(4) - (5)].object), (yyvsp[(5) - (5)].object));
2229
+ ;}
2230
+ break;
2231
+
2232
+ case 62:
2233
+ #line 334 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2234
+ {
2235
+ (yyval.object) = rb_funcall(self, rb_intern("ast:class:parent:"), 3, INT2NUM(yylineno), (yyvsp[(2) - (4)].object), (yyvsp[(4) - (4)].object));
2236
+ ;}
2237
+ break;
2238
+
2239
+ case 69:
2240
+ #line 347 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2241
+ {
2242
+ (yyval.object) = rb_funcall(self, rb_intern("ast:param:var:"), 3, INT2NUM(yylineno), (yyvsp[(1) - (2)].object), (yyvsp[(2) - (2)].object));
2243
+ ;}
2244
+ break;
2245
+
2246
+ case 70:
2247
+ #line 352 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2248
+ {
2249
+ (yyval.object) = rb_funcall(self, rb_intern("ast:concat:"), 2, INT2NUM(yylineno), (yyvsp[(1) - (1)].object));
2250
+ ;}
2251
+ break;
2252
+
2253
+ case 71:
2254
+ #line 355 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2255
+ {
2256
+ (yyval.object) = rb_funcall(self, rb_intern("ast:concat:into:"), 3, INT2NUM(yylineno), (yyvsp[(2) - (2)].object), (yyvsp[(1) - (2)].object));
2257
+ ;}
2258
+ break;
2259
+
2260
+ case 72:
2261
+ #line 358 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2262
+ {
2263
+ (yyval.object) = rb_funcall(self, rb_intern("ast:concat:into:"), 3, INT2NUM(yylineno), (yyvsp[(2) - (2)].object), (yyvsp[(1) - (2)].object));
2264
+ ;}
2265
+ break;
2266
+
2267
+ case 73:
2268
+ #line 361 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2269
+ {
2270
+ (yyval.object) = rb_funcall(self, rb_intern("ast:concat:"), 2, INT2NUM(yylineno), (yyvsp[(1) - (1)].object));
2271
+ ;}
2272
+ break;
2273
+
2274
+ case 74:
2275
+ #line 366 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2276
+ {
2277
+ (yyval.object) = rb_funcall(self, rb_intern("ast:param:var:default:"), 4, INT2NUM(yylineno), (yyvsp[(1) - (7)].object), (yyvsp[(2) - (7)].object), (yyvsp[(5) - (7)].object));
2278
+ ;}
2279
+ break;
2280
+
2281
+ case 75:
2282
+ #line 371 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2283
+ {
2284
+ (yyval.object) = rb_funcall(self, rb_intern("ast:concat:"), 2, INT2NUM(yylineno), (yyvsp[(1) - (1)].object));
2285
+ ;}
2286
+ break;
2287
+
2288
+ case 76:
2289
+ #line 374 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2290
+ {
2291
+ (yyval.object) = rb_funcall(self, rb_intern("ast:concat:into:"), 3, INT2NUM(yylineno), (yyvsp[(3) - (3)].object), (yyvsp[(1) - (3)].object));
2292
+ ;}
2293
+ break;
2294
+
2295
+ case 77:
2296
+ #line 379 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2297
+ {
2298
+ (yyval.object) = rb_funcall(self, rb_intern("ast:method:expand:access:"), 4, INT2NUM(yylineno), (yyvsp[(2) - (3)].object), (yyvsp[(3) - (3)].object), (yyvsp[(1) - (3)].object));
2299
+ ;}
2300
+ break;
2301
+
2302
+ case 78:
2303
+ #line 382 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2304
+ {
2305
+ (yyval.object) = rb_funcall(self, rb_intern("ast:method:expand:access:"), 4, INT2NUM(yylineno), (yyvsp[(2) - (2)].object), Qnil, (yyvsp[(1) - (2)].object));
2306
+ ;}
2307
+ break;
2308
+
2309
+ case 79:
2310
+ #line 388 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2311
+ {
2312
+ (yyval.object) = rb_funcall(self, rb_intern("ast:method:body:access:"), 4, INT2NUM(yylineno), (yyvsp[(2) - (3)].object), (yyvsp[(3) - (3)].object), (yyvsp[(1) - (3)].object));
2313
+ ;}
2314
+ break;
2315
+
2316
+ case 80:
2317
+ #line 391 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2318
+ {
2319
+ (yyval.object) = rb_funcall(self, rb_intern("ast:method:body:access:"), 4, INT2NUM(yylineno), (yyvsp[(2) - (2)].object), Qnil, (yyvsp[(1) - (2)].object));
2320
+ ;}
2321
+ break;
2322
+
2323
+ case 81:
2324
+ #line 397 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2325
+ {
2326
+ (yyval.object) = rb_funcall(self, rb_intern("ast:method:expand:access:owner:"), 5, INT2NUM(yylineno), (yyvsp[(3) - (4)].object), (yyvsp[(4) - (4)].object), (yyvsp[(1) - (4)].object), (yyvsp[(2) - (4)].object));
2327
+ ;}
2328
+ break;
2329
+
2330
+ case 82:
2331
+ #line 400 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2332
+ {
2333
+ (yyval.object) = rb_funcall(self, rb_intern("ast:method:expand:access:owner:"), 5, INT2NUM(yylineno), (yyvsp[(3) - (3)].object), Qnil, (yyvsp[(1) - (3)].object), (yyvsp[(2) - (3)].object));
2334
+ ;}
2335
+ break;
2336
+
2337
+ case 83:
2338
+ #line 405 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2339
+ {
2340
+ (yyval.object) = rb_funcall(self, rb_intern("ast:method:body:access:owner:"), 5, INT2NUM(yylineno), (yyvsp[(3) - (4)].object), (yyvsp[(4) - (4)].object), (yyvsp[(1) - (4)].object), (yyvsp[(2) - (4)].object));
2341
+ ;}
2342
+ break;
2343
+
2344
+ case 84:
2345
+ #line 408 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2346
+ {
2347
+ (yyval.object) = rb_funcall(self, rb_intern("ast:method:body:access:owner:"), 5, INT2NUM(yylineno), (yyvsp[(3) - (3)].object), Qnil, (yyvsp[(1) - (3)].object), (yyvsp[(2) - (3)].object));
2348
+ ;}
2349
+ break;
2350
+
2351
+ case 85:
2352
+ #line 413 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2353
+ {
2354
+ (yyval.object) = rb_funcall(self, rb_intern("ast:oper:arg:body:access:"), 5, INT2NUM(yylineno), (yyvsp[(2) - (4)].object), (yyvsp[(3) - (4)].object), (yyvsp[(4) - (4)].object), (yyvsp[(1) - (4)].object));
2355
+ ;}
2356
+ break;
2357
+
2358
+ case 86:
2359
+ #line 416 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2360
+ {
2361
+ (yyval.object) = rb_funcall(self, rb_intern("ast:oper:arg:body:access:"), 5,
2362
+ INT2NUM(yylineno), fy_terminal_node_from(self, "ast:identifier:", "[]"), (yyvsp[(3) - (5)].object), (yyvsp[(5) - (5)].object), (yyvsp[(1) - (5)].object));
2363
+ ;}
2364
+ break;
2365
+
2366
+ case 87:
2367
+ #line 420 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2368
+ {
2369
+ (yyval.object) = rb_funcall(self, rb_intern("ast:oper:arg:arg:body:access:"), 6,
2370
+ INT2NUM(yylineno), fy_terminal_node_from(self, "ast:identifier:", "[]:"), (yyvsp[(3) - (7)].object), (yyvsp[(6) - (7)].object), (yyvsp[(7) - (7)].object), (yyvsp[(1) - (7)].object));
2371
+ ;}
2372
+ break;
2373
+
2374
+ case 88:
2375
+ #line 426 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2376
+ {
2377
+ (yyval.object) = rb_funcall(self, rb_intern("ast:oper:arg:body:access:owner:"), 6, INT2NUM(yylineno), (yyvsp[(3) - (5)].object), (yyvsp[(4) - (5)].object), (yyvsp[(5) - (5)].object), (yyvsp[(1) - (5)].object), (yyvsp[(2) - (5)].object));
2378
+ ;}
2379
+ break;
2380
+
2381
+ case 89:
2382
+ #line 429 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2383
+ {
2384
+ (yyval.object) = rb_funcall(self, rb_intern("ast:oper:arg:body:access:owner:"), 6,
2385
+ INT2NUM(yylineno), fy_terminal_node_from(self, "ast:identifier:", "[]"), (yyvsp[(4) - (6)].object), (yyvsp[(6) - (6)].object), (yyvsp[(1) - (6)].object), (yyvsp[(2) - (6)].object));
2386
+ ;}
2387
+ break;
2388
+
2389
+ case 90:
2390
+ #line 433 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2391
+ {
2392
+ (yyval.object) = rb_funcall(self, rb_intern("ast:oper:arg:arg:body:access:owner:"), 7,
2393
+ INT2NUM(yylineno), fy_terminal_node_from(self, "ast:identifier:", "[]:"), (yyvsp[(4) - (8)].object), (yyvsp[(7) - (8)].object), (yyvsp[(8) - (8)].object), (yyvsp[(1) - (8)].object), (yyvsp[(2) - (8)].object));
2394
+ ;}
2395
+ break;
2396
+
2397
+ case 91:
2398
+ #line 439 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2399
+ {
2400
+ (yyval.object) = rb_funcall(self, rb_intern("ast:send:to:"), 3, INT2NUM(yylineno), (yyvsp[(2) - (2)].object), (yyvsp[(1) - (2)].object));
2401
+ ;}
2402
+ break;
2403
+
2404
+ case 92:
2405
+ #line 442 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2406
+ {
2407
+ (yyval.object) = rb_funcall(self, rb_intern("ast:send:to:"), 3, INT2NUM(yylineno), (yyvsp[(2) - (2)].object), (yyvsp[(1) - (2)].object));
2408
+ ;}
2409
+ break;
2410
+
2411
+ case 93:
2412
+ #line 445 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2413
+ {
2414
+ (yyval.object) = rb_funcall(self, rb_intern("ast:future_send:to:"), 3, INT2NUM(yylineno), (yyvsp[(3) - (3)].object), (yyvsp[(1) - (3)].object));
2415
+ ;}
2416
+ break;
2417
+
2418
+ case 94:
2419
+ #line 448 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2420
+ {
2421
+ (yyval.object) = rb_funcall(self, rb_intern("ast:future_send:to:"), 3, INT2NUM(yylineno), (yyvsp[(3) - (3)].object), (yyvsp[(1) - (3)].object));
2422
+ ;}
2423
+ break;
2424
+
2425
+ case 95:
2426
+ #line 451 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2427
+ {
2428
+ (yyval.object) = rb_funcall(self, rb_intern("ast:async_send:to:"), 3, INT2NUM(yylineno), (yyvsp[(3) - (3)].object), (yyvsp[(1) - (3)].object));
2429
+ ;}
2430
+ break;
2431
+
2432
+ case 96:
2433
+ #line 454 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2434
+ {
2435
+ (yyval.object) = rb_funcall(self, rb_intern("ast:async_send:to:"), 3, INT2NUM(yylineno), (yyvsp[(3) - (3)].object), (yyvsp[(1) - (3)].object));
2436
+ ;}
2437
+ break;
2438
+
2439
+ case 97:
2440
+ #line 459 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2441
+ {
2442
+ (yyval.object) = rb_funcall(self, rb_intern("ast:oper:arg:to:"), 4, INT2NUM(yylineno), (yyvsp[(2) - (3)].object), (yyvsp[(3) - (3)].object), (yyvsp[(1) - (3)].object));
2443
+ ;}
2444
+ break;
2445
+
2446
+ case 98:
2447
+ #line 462 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2448
+ {
2449
+ (yyval.object) = rb_funcall(self, rb_intern("ast:oper:arg:to:"), 4, INT2NUM(yylineno), (yyvsp[(2) - (5)].object), (yyvsp[(5) - (5)].object), (yyvsp[(1) - (5)].object));
2450
+ ;}
2451
+ break;
2452
+
2453
+ case 99:
2454
+ #line 465 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2455
+ {
2456
+ (yyval.object) = rb_funcall(self, rb_intern("ast:oper:arg:to:"), 4,
2457
+ INT2NUM(yylineno), fy_terminal_node_from(self, "ast:identifier:", "[]"), (yyvsp[(3) - (4)].object), (yyvsp[(1) - (4)].object));
2458
+ ;}
2459
+ break;
2460
+
2461
+ case 100:
2462
+ #line 469 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2463
+ {
2464
+ (yyval.object) = rb_funcall(self, rb_intern("ast:oper:arg:arg:to:"), 5,
2465
+ INT2NUM(yylineno), fy_terminal_node_from(self, "ast:identifier:", "[]:"), (yyvsp[(3) - (6)].object), (yyvsp[(6) - (6)].object), (yyvsp[(1) - (6)].object));
2466
+ ;}
2467
+ break;
2468
+
2469
+ case 101:
2470
+ #line 473 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2471
+ {
2472
+ (yyval.object) = rb_funcall(self, rb_intern("ast:oper:arg:"), 3, INT2NUM(yylineno), (yyvsp[(1) - (2)].object), (yyvsp[(2) - (2)].object));
2473
+ ;}
2474
+ break;
2475
+
2476
+ case 102:
2477
+ #line 476 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2478
+ {
2479
+ (yyval.object) = rb_funcall(self, rb_intern("ast:future_oper:arg:to:"), 4, INT2NUM(yylineno), (yyvsp[(3) - (4)].object), (yyvsp[(4) - (4)].object), (yyvsp[(1) - (4)].object));
2480
+ ;}
2481
+ break;
2482
+
2483
+ case 103:
2484
+ #line 479 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2485
+ {
2486
+ (yyval.object) = rb_funcall(self, rb_intern("ast:future_oper:arg:to:"), 4, INT2NUM(yylineno), (yyvsp[(3) - (6)].object), (yyvsp[(6) - (6)].object), (yyvsp[(1) - (6)].object));
2487
+ ;}
2488
+ break;
2489
+
2490
+ case 104:
2491
+ #line 482 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2492
+ {
2493
+ (yyval.object) = rb_funcall(self, rb_intern("ast:future_oper:arg:to:"), 4,
2494
+ INT2NUM(yylineno), fy_terminal_node_from(self, "ast:identifier:", "[]"), (yyvsp[(4) - (5)].object), (yyvsp[(1) - (5)].object));
2495
+ ;}
2496
+ break;
2497
+
2498
+ case 105:
2499
+ #line 486 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2500
+ {
2501
+ (yyval.object) = rb_funcall(self, rb_intern("ast:async_oper:arg:to:"), 4, INT2NUM(yylineno), (yyvsp[(3) - (4)].object), (yyvsp[(4) - (4)].object), (yyvsp[(1) - (4)].object));
2502
+ ;}
2503
+ break;
2504
+
2505
+ case 106:
2506
+ #line 489 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2507
+ {
2508
+ (yyval.object) = rb_funcall(self, rb_intern("ast:async_oper:arg:to:"), 4, INT2NUM(yylineno), (yyvsp[(3) - (6)].object), (yyvsp[(6) - (6)].object), (yyvsp[(1) - (6)].object));
2509
+ ;}
2510
+ break;
2511
+
2512
+ case 107:
2513
+ #line 492 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2514
+ {
2515
+ (yyval.object) = rb_funcall(self, rb_intern("ast:async_oper:arg:to:"), 4,
2516
+ INT2NUM(yylineno), fy_terminal_node_from(self, "ast:identifier:", "[]"), (yyvsp[(4) - (5)].object), (yyvsp[(1) - (5)].object));
2517
+ ;}
2518
+ break;
2519
+
2520
+ case 110:
2521
+ #line 500 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2522
+ {
2523
+ (yyval.object) = rb_funcall(self, rb_intern("ast:send:to:"), 3, INT2NUM(yylineno), (yyvsp[(2) - (2)].object), (yyvsp[(1) - (2)].object));
2524
+ ;}
2525
+ break;
2526
+
2527
+ case 111:
2528
+ #line 503 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2529
+ {
2530
+ (yyval.object) = rb_funcall(self, rb_intern("ast:send:"), 2, INT2NUM(yylineno), (yyvsp[(1) - (1)].object));
2531
+ ;}
2532
+ break;
2533
+
2534
+ case 112:
2535
+ #line 506 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2536
+ {
2537
+ (yyval.object) = rb_funcall(self, rb_intern("ast:future_send:to:"), 3, INT2NUM(yylineno), (yyvsp[(3) - (3)].object), (yyvsp[(1) - (3)].object));
2538
+ ;}
2539
+ break;
2540
+
2541
+ case 113:
2542
+ #line 509 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2543
+ {
2544
+ (yyval.object) = rb_funcall(self, rb_intern("ast:async_send:to:"), 3, INT2NUM(yylineno), (yyvsp[(3) - (3)].object), (yyvsp[(1) - (3)].object));
2545
+ ;}
2546
+ break;
2547
+
2548
+ case 114:
2549
+ #line 512 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2550
+ {
2551
+ (yyval.object) = rb_funcall(self, rb_intern("ast:future_send:to:"), 3, INT2NUM(yylineno), (yyvsp[(3) - (3)].object), (yyvsp[(1) - (3)].object));
2552
+ ;}
2553
+ break;
2554
+
2555
+ case 115:
2556
+ #line 515 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2557
+ {
2558
+ (yyval.object) = rb_funcall(self, rb_intern("ast:async_send:to:"), 3, INT2NUM(yylineno), (yyvsp[(3) - (3)].object), (yyvsp[(1) - (3)].object));
2559
+ ;}
2560
+ break;
2561
+
2562
+ case 116:
2563
+ #line 520 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2564
+ {
2565
+ (yyval.object) = rb_funcall(self, rb_intern("ast:send:arg:"), 3, INT2NUM(yylineno), (yyvsp[(1) - (2)].object), (yyvsp[(2) - (2)].object));
2566
+ ;}
2567
+ break;
2568
+
2569
+ case 117:
2570
+ #line 523 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2571
+ {
2572
+ (yyval.object) = rb_funcall(self, rb_intern("ast:send:arg:"), 3, INT2NUM(yylineno), (yyvsp[(1) - (3)].object), (yyvsp[(3) - (3)].object));
2573
+ ;}
2574
+ break;
2575
+
2576
+ case 118:
2577
+ #line 526 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2578
+ {
2579
+ (yyval.object) = rb_funcall(self, rb_intern("ast:send:arg:ary:"), 4, INT2NUM(yylineno), (yyvsp[(2) - (3)].object), (yyvsp[(3) - (3)].object), (yyvsp[(1) - (3)].object));
2580
+ ;}
2581
+ break;
2582
+
2583
+ case 119:
2584
+ #line 529 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2585
+ {
2586
+ (yyval.object) = rb_funcall(self, rb_intern("ast:send:arg:ary:"), 4, INT2NUM(yylineno), (yyvsp[(2) - (4)].object), (yyvsp[(4) - (4)].object), (yyvsp[(1) - (4)].object));
2587
+ ;}
2588
+ break;
2589
+
2590
+ case 120:
2591
+ #line 534 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2592
+ {
2593
+ (yyval.object) = (yyvsp[(1) - (1)].object);
2594
+ ;}
2595
+ break;
2596
+
2597
+ case 121:
2598
+ #line 537 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2599
+ {
2600
+ (yyval.object) = (yyvsp[(2) - (3)].object);
2601
+ ;}
2602
+ break;
2603
+
2604
+ case 122:
2605
+ #line 540 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2606
+ {
2607
+ (yyval.object) = (yyvsp[(1) - (1)].object);
2608
+ ;}
2609
+ break;
2610
+
2611
+ case 123:
2612
+ #line 543 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2613
+ {
2614
+ (yyval.object) = (yyvsp[(2) - (2)].object);
2615
+ ;}
2616
+ break;
2617
+
2618
+ case 124:
2619
+ #line 553 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2620
+ {
2621
+ // remove the trailing left paren and create an identifier.
2622
+ (yyval.object) = fy_terminal_node(self, "ast:ruby_send:");
2623
+ ;}
2624
+ break;
2625
+
2626
+ case 125:
2627
+ #line 557 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2628
+ {
2629
+ // remove the trailing left paren and create an identifier.
2630
+ (yyval.object) = fy_terminal_node(self, "ast:ruby_send:");
2631
+ ;}
2632
+ break;
2633
+
2634
+ case 126:
2635
+ #line 562 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2636
+ {
2637
+ (yyval.object) = rb_funcall(self, rb_intern("ast:send:to:ruby:"), 4, INT2NUM(yylineno), (yyvsp[(2) - (3)].object), (yyvsp[(1) - (3)].object), (yyvsp[(3) - (3)].object));
2638
+ ;}
2639
+ break;
2640
+
2641
+ case 127:
2642
+ #line 565 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2643
+ {
2644
+ (yyval.object) = rb_funcall(self, rb_intern("ast:send:to:ruby:"), 4, INT2NUM(yylineno), (yyvsp[(1) - (2)].object), Qnil, (yyvsp[(2) - (2)].object));
2645
+ ;}
2646
+ break;
2647
+
2648
+ case 128:
2649
+ #line 568 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2650
+ {
2651
+ (yyval.object) = rb_funcall(self, rb_intern("ast:future_send:to:ruby:"), 4, INT2NUM(yylineno), (yyvsp[(3) - (4)].object), (yyvsp[(1) - (4)].object), (yyvsp[(4) - (4)].object));
2652
+ ;}
2653
+ break;
2654
+
2655
+ case 129:
2656
+ #line 571 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2657
+ {
2658
+ (yyval.object) = rb_funcall(self, rb_intern("ast:async_send:to:ruby:"), 4, INT2NUM(yylineno), (yyvsp[(3) - (4)].object), (yyvsp[(1) - (4)].object), (yyvsp[(4) - (4)].object));
2659
+ ;}
2660
+ break;
2661
+
2662
+ case 130:
2663
+ #line 581 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2664
+ {
2665
+ (yyval.object) = rb_funcall(self, rb_intern("ast:ruby_args:block:"), 3, INT2NUM(yylineno), Qnil, (yyvsp[(2) - (2)].object));
2666
+ ;}
2667
+ break;
2668
+
2669
+ case 131:
2670
+ #line 584 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2671
+ {
2672
+ (yyval.object) = rb_funcall(self, rb_intern("ast:ruby_args:block:"), 3, INT2NUM(yylineno), (yyvsp[(1) - (3)].object), (yyvsp[(3) - (3)].object));
2673
+ ;}
2674
+ break;
2675
+
2676
+ case 132:
2677
+ #line 587 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2678
+ {
2679
+ (yyval.object) = rb_funcall(self, rb_intern("ast:ruby_args:"), 2, INT2NUM(yylineno), Qnil);
2680
+ ;}
2681
+ break;
2682
+
2683
+ case 133:
2684
+ #line 590 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2685
+ {
2686
+ (yyval.object) = rb_funcall(self, rb_intern("ast:ruby_args:"), 2, INT2NUM(yylineno), (yyvsp[(1) - (2)].object));
2687
+ ;}
2688
+ break;
2689
+
2690
+ case 134:
2691
+ #line 595 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2692
+ {
2693
+ (yyval.object) = rb_funcall(self, rb_intern("ast:send:to:ruby:"), 4, INT2NUM(yylineno), (yyvsp[(2) - (3)].object), (yyvsp[(1) - (3)].object), (yyvsp[(3) - (3)].object));
2694
+ ;}
2695
+ break;
2696
+
2697
+ case 135:
2698
+ #line 601 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2699
+ {
2700
+ (yyval.object) = rb_funcall(self, rb_intern("ast:try_block:ex_handlers:finally_block:"), 4, INT2NUM(yylineno), (yyvsp[(2) - (4)].object), (yyvsp[(3) - (4)].object), (yyvsp[(4) - (4)].object));
2701
+ ;}
2702
+ break;
2703
+
2704
+ case 136:
2705
+ #line 604 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2706
+ {
2707
+ (yyval.object) = rb_funcall(self, rb_intern("ast:try_block:ex_handlers:"), 3, INT2NUM(yylineno), (yyvsp[(2) - (3)].object), (yyvsp[(3) - (3)].object));
2708
+ ;}
2709
+ break;
2710
+
2711
+ case 137:
2712
+ #line 609 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2713
+ {
2714
+ (yyval.object) = rb_funcall(self, rb_intern("ast:ex_handler:"), 2, INT2NUM(yylineno), (yyvsp[(2) - (2)].object));
2715
+ ;}
2716
+ break;
2717
+
2718
+ case 138:
2719
+ #line 612 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2720
+ {
2721
+ (yyval.object) = rb_funcall(self, rb_intern("ast:ex_handler:cond:"), 3, INT2NUM(yylineno), (yyvsp[(3) - (3)].object), (yyvsp[(2) - (3)].object));
2722
+ ;}
2723
+ break;
2724
+
2725
+ case 139:
2726
+ #line 615 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2727
+ {
2728
+ (yyval.object) = rb_funcall(self, rb_intern("ast:ex_handler:cond:var:"), 4, INT2NUM(yylineno), (yyvsp[(5) - (5)].object), (yyvsp[(2) - (5)].object), (yyvsp[(4) - (5)].object));
2729
+ ;}
2730
+ break;
2731
+
2732
+ case 140:
2733
+ #line 620 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2734
+ {
2735
+ (yyval.object) = rb_funcall(self, rb_intern("ast:concat:"), 2, INT2NUM(yylineno), (yyvsp[(1) - (1)].object));
2736
+ ;}
2737
+ break;
2738
+
2739
+ case 141:
2740
+ #line 623 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2741
+ {
2742
+ (yyval.object) = rb_funcall(self, rb_intern("ast:concat:into:"), 3, INT2NUM(yylineno), (yyvsp[(2) - (2)].object), (yyvsp[(1) - (2)].object));
2743
+ ;}
2744
+ break;
2745
+
2746
+ case 142:
2747
+ #line 628 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2748
+ {
2749
+ (yyval.object) = rb_funcall(self, rb_intern("ast:concat:"), 2, INT2NUM(yylineno), (yyvsp[(1) - (1)].object));
2750
+ ;}
2751
+ break;
2752
+
2753
+ case 143:
2754
+ #line 631 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2755
+ {
2756
+ (yyval.object) = rb_funcall(self, rb_intern("ast:concat:into:"), 3, INT2NUM(yylineno), (yyvsp[(2) - (2)].object), (yyvsp[(1) - (2)].object));
2757
+ ;}
2758
+ break;
2759
+
2760
+ case 144:
2761
+ #line 634 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2762
+ {
2763
+ (yyval.object) = rb_funcall(self, rb_intern("ast:concat:"), 2, INT2NUM(yylineno), Qnil);
2764
+ ;}
2765
+ break;
2766
+
2767
+ case 145:
2768
+ #line 639 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2769
+ {
2770
+ (yyval.object) = (yyvsp[(2) - (2)].object);
2771
+ ;}
2772
+ break;
2773
+
2774
+ case 146:
2775
+ #line 644 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2776
+ {
2777
+ (yyval.object) = fy_terminal_node(self, "ast:fixnum:");
2778
+ ;}
2779
+ break;
2780
+
2781
+ case 147:
2782
+ #line 648 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2783
+ {
2784
+ (yyval.object) = fy_terminal_node(self, "ast:number:");
2785
+ ;}
2786
+ break;
2787
+
2788
+ case 148:
2789
+ #line 652 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2790
+ {
2791
+ (yyval.object) = fy_terminal_node(self, "ast:string:");
2792
+ ;}
2793
+ break;
2794
+
2795
+ case 149:
2796
+ #line 655 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2797
+ {
2798
+ (yyval.object) = fy_terminal_node(self, "ast:multi_line_string:");
2799
+ ;}
2800
+ break;
2801
+
2802
+ case 150:
2803
+ #line 659 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2804
+ {
2805
+ (yyval.object) = fy_terminal_node(self, "ast:symbol:");
2806
+ ;}
2807
+ break;
2808
+
2809
+ case 151:
2810
+ #line 663 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2811
+ {
2812
+ (yyval.object) = fy_terminal_node(self, "ast:regexp:");
2813
+ ;}
2814
+ break;
2815
+
2816
+ case 152:
2817
+ #line 668 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2818
+ {
2819
+ (yyval.object) = rb_funcall(self, rb_intern("ast:fixnum:base:"), 3,
2820
+ INT2NUM(yylineno), rb_str_new2(yytext), INT2NUM(16));
2821
+ ;}
2822
+ break;
2823
+
2824
+ case 153:
2825
+ #line 674 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2826
+ {
2827
+ (yyval.object) = rb_funcall(self, rb_intern("ast:fixnum:base:"), 3,
2828
+ INT2NUM(yylineno), rb_str_new2(yytext), INT2NUM(8));
2829
+ ;}
2830
+ break;
2831
+
2832
+ case 154:
2833
+ #line 680 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2834
+ {
2835
+ (yyval.object) = rb_funcall(self, rb_intern("ast:fixnum:base:"), 3,
2836
+ INT2NUM(yylineno), rb_str_new2(yytext), INT2NUM(2));
2837
+ ;}
2838
+ break;
2839
+
2840
+ case 169:
2841
+ #line 702 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2842
+ {
2843
+ (yyval.object) = (yyvsp[(1) - (1)].object);
2844
+ ;}
2845
+ break;
2846
+
2847
+ case 170:
2848
+ #line 705 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2849
+ {
2850
+ (yyval.object) = rb_funcall(self, rb_intern("ast:array:"), 2, INT2NUM(yylineno), (yyvsp[(3) - (5)].object));
2851
+ ;}
2852
+ break;
2853
+
2854
+ case 171:
2855
+ #line 710 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2856
+ {
2857
+ (yyval.object) = rb_funcall(self, rb_intern("ast:concat:"), 2, INT2NUM(yylineno), (yyvsp[(1) - (1)].object));
2858
+ ;}
2859
+ break;
2860
+
2861
+ case 172:
2862
+ #line 713 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2863
+ {
2864
+ (yyval.object) = rb_funcall(self, rb_intern("ast:concat:into:"), 3, INT2NUM(yylineno), (yyvsp[(4) - (4)].object), (yyvsp[(1) - (4)].object));
2865
+ ;}
2866
+ break;
2867
+
2868
+ case 173:
2869
+ #line 716 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2870
+ {
2871
+ (yyval.object) = (yyvsp[(1) - (2)].object);
2872
+ ;}
2873
+ break;
2874
+
2875
+ case 174:
2876
+ #line 721 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2877
+ {
2878
+ (yyval.object) = rb_funcall(self, rb_intern("ast:array:"), 2, INT2NUM(yylineno), Qnil);
2879
+ ;}
2880
+ break;
2881
+
2882
+ case 175:
2883
+ #line 726 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2884
+ {
2885
+ (yyval.object) = rb_funcall(self, rb_intern("ast:hash:"), 2, INT2NUM(yylineno), (yyvsp[(3) - (5)].object));
2886
+ ;}
2887
+ break;
2888
+
2889
+ case 176:
2890
+ #line 729 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2891
+ {
2892
+ (yyval.object) = rb_funcall(self, rb_intern("ast:hash:"), 2, INT2NUM(yylineno), Qnil);
2893
+ ;}
2894
+ break;
2895
+
2896
+ case 177:
2897
+ #line 734 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2898
+ {
2899
+ (yyval.object) = rb_funcall(self, rb_intern("ast:partial_block:"), 2, INT2NUM(yylineno), (yyvsp[(1) - (1)].object));
2900
+ ;}
2901
+ break;
2902
+
2903
+ case 178:
2904
+ #line 737 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2905
+ {
2906
+ (yyval.object) = rb_funcall(self, rb_intern("ast:block:"), 2, INT2NUM(yylineno), (yyvsp[(1) - (1)].object));
2907
+ ;}
2908
+ break;
2909
+
2910
+ case 179:
2911
+ #line 740 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2912
+ {
2913
+ (yyval.object) = rb_funcall(self, rb_intern("ast:block:args:"), 3, INT2NUM(yylineno), (yyvsp[(5) - (5)].object), (yyvsp[(2) - (5)].object));
2914
+ ;}
2915
+ break;
2916
+
2917
+ case 180:
2918
+ #line 745 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2919
+ {
2920
+ (yyval.object) = rb_funcall(self, rb_intern("ast:tuple:"), 2, INT2NUM(yylineno), (yyvsp[(2) - (3)].object));
2921
+ ;}
2922
+ break;
2923
+
2924
+ case 181:
2925
+ #line 750 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2926
+ {
2927
+ (yyval.object) = rb_funcall(self, rb_intern("ast:range:to:"), 3, INT2NUM(yylineno), (yyvsp[(2) - (6)].object), (yyvsp[(5) - (6)].object));
2928
+ ;}
2929
+ break;
2930
+
2931
+ case 182:
2932
+ #line 755 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2933
+ {
2934
+ (yyval.object) = fy_terminal_node(self, "ast:backtick:");
2935
+ ;}
2936
+ break;
2937
+
2938
+ case 185:
2939
+ #line 764 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2940
+ {
2941
+ (yyval.object) = rb_funcall(self, rb_intern("ast:concat:"), 2, INT2NUM(yylineno), (yyvsp[(1) - (1)].object));
2942
+ ;}
2943
+ break;
2944
+
2945
+ case 186:
2946
+ #line 767 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2947
+ {
2948
+ (yyval.object) = rb_funcall(self, rb_intern("ast:concat:into:"), 3, INT2NUM(yylineno), (yyvsp[(2) - (2)].object), (yyvsp[(1) - (2)].object));
2949
+ ;}
2950
+ break;
2951
+
2952
+ case 187:
2953
+ #line 772 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2954
+ {
2955
+ (yyval.object) = rb_funcall(self, rb_intern("ast:concat:"), 2, INT2NUM(yylineno), (yyvsp[(1) - (1)].object));
2956
+ ;}
2957
+ break;
2958
+
2959
+ case 188:
2960
+ #line 775 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2961
+ {
2962
+ (yyval.object) = rb_funcall(self, rb_intern("ast:concat:into:"), 3, INT2NUM(yylineno), (yyvsp[(3) - (3)].object), (yyvsp[(1) - (3)].object));
2963
+ ;}
2964
+ break;
2965
+
2966
+ case 189:
2967
+ #line 780 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2968
+ {
2969
+ (yyval.object) = rb_funcall(self, rb_intern("ast:key:value:into:"), 4, INT2NUM(yylineno), (yyvsp[(1) - (5)].object), (yyvsp[(5) - (5)].object), Qnil);
2970
+ ;}
2971
+ break;
2972
+
2973
+ case 190:
2974
+ #line 783 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2975
+ {
2976
+ (yyval.object) = rb_funcall(self, rb_intern("ast:key:value:into:"), 4, INT2NUM(yylineno), (yyvsp[(4) - (8)].object), (yyvsp[(8) - (8)].object), (yyvsp[(1) - (8)].object));
2977
+ ;}
2978
+ break;
2979
+
2980
+ case 191:
2981
+ #line 788 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2982
+ {
2983
+ (yyval.object) = rb_funcall(self, rb_intern("ast:match_expr:body:"), 3, INT2NUM(yylineno), (yyvsp[(2) - (7)].object), (yyvsp[(5) - (7)].object));
2984
+ ;}
2985
+ break;
2986
+
2987
+ case 192:
2988
+ #line 793 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2989
+ {
2990
+ (yyval.object) = rb_funcall(self, rb_intern("ast:concat:"), 2, INT2NUM(yylineno), (yyvsp[(1) - (1)].object));
2991
+ ;}
2992
+ break;
2993
+
2994
+ case 193:
2995
+ #line 796 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
2996
+ {
2997
+ (yyval.object) = rb_funcall(self, rb_intern("ast:concat:into:"), 3, INT2NUM(yylineno), (yyvsp[(2) - (2)].object), (yyvsp[(1) - (2)].object));
2998
+ ;}
2999
+ break;
3000
+
3001
+ case 194:
3002
+ #line 801 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
3003
+ {
3004
+ (yyval.object) = rb_funcall(self, rb_intern("ast:match_clause:body:"), 3, INT2NUM(yylineno), (yyvsp[(2) - (4)].object), (yyvsp[(4) - (4)].object));
3005
+ ;}
3006
+ break;
3007
+
3008
+ case 195:
3009
+ #line 804 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
3010
+ {
3011
+ (yyval.object) = rb_funcall(self, rb_intern("ast:match_clause:body:args:"), 4, INT2NUM(yylineno), (yyvsp[(2) - (7)].object), (yyvsp[(7) - (7)].object), (yyvsp[(5) - (7)].object));
3012
+ ;}
3013
+ break;
3014
+
3015
+
3016
+ /* Line 1267 of yacc.c. */
3017
+ #line 3018 "/Users/backtype/projects/fancy/lib/parser/ext/parser.c"
3018
+ default: break;
3019
+ }
3020
+ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
3021
+
3022
+ YYPOPSTACK (yylen);
3023
+ yylen = 0;
3024
+ YY_STACK_PRINT (yyss, yyssp);
3025
+
3026
+ *++yyvsp = yyval;
3027
+
3028
+
3029
+ /* Now `shift' the result of the reduction. Determine what state
3030
+ that goes to, based on the state we popped back to and the rule
3031
+ number reduced by. */
3032
+
3033
+ yyn = yyr1[yyn];
3034
+
3035
+ yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
3036
+ if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
3037
+ yystate = yytable[yystate];
3038
+ else
3039
+ yystate = yydefgoto[yyn - YYNTOKENS];
3040
+
3041
+ goto yynewstate;
3042
+
3043
+
3044
+ /*------------------------------------.
3045
+ | yyerrlab -- here on detecting error |
3046
+ `------------------------------------*/
3047
+ yyerrlab:
3048
+ /* If not already recovering from an error, report this error. */
3049
+ if (!yyerrstatus)
3050
+ {
3051
+ ++yynerrs;
3052
+ #if ! YYERROR_VERBOSE
3053
+ yyerror (self, YY_("syntax error"));
3054
+ #else
3055
+ {
3056
+ YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
3057
+ if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
3058
+ {
3059
+ YYSIZE_T yyalloc = 2 * yysize;
3060
+ if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
3061
+ yyalloc = YYSTACK_ALLOC_MAXIMUM;
3062
+ if (yymsg != yymsgbuf)
3063
+ YYSTACK_FREE (yymsg);
3064
+ yymsg = (char *) YYSTACK_ALLOC (yyalloc);
3065
+ if (yymsg)
3066
+ yymsg_alloc = yyalloc;
3067
+ else
3068
+ {
3069
+ yymsg = yymsgbuf;
3070
+ yymsg_alloc = sizeof yymsgbuf;
3071
+ }
3072
+ }
3073
+
3074
+ if (0 < yysize && yysize <= yymsg_alloc)
3075
+ {
3076
+ (void) yysyntax_error (yymsg, yystate, yychar);
3077
+ yyerror (self, yymsg);
3078
+ }
3079
+ else
3080
+ {
3081
+ yyerror (self, YY_("syntax error"));
3082
+ if (yysize != 0)
3083
+ goto yyexhaustedlab;
3084
+ }
3085
+ }
3086
+ #endif
3087
+ }
3088
+
3089
+
3090
+
3091
+ if (yyerrstatus == 3)
3092
+ {
3093
+ /* If just tried and failed to reuse look-ahead token after an
3094
+ error, discard it. */
3095
+
3096
+ if (yychar <= YYEOF)
3097
+ {
3098
+ /* Return failure if at end of input. */
3099
+ if (yychar == YYEOF)
3100
+ YYABORT;
3101
+ }
3102
+ else
3103
+ {
3104
+ yydestruct ("Error: discarding",
3105
+ yytoken, &yylval, self);
3106
+ yychar = YYEMPTY;
3107
+ }
3108
+ }
3109
+
3110
+ /* Else will try to reuse look-ahead token after shifting the error
3111
+ token. */
3112
+ goto yyerrlab1;
3113
+
3114
+
3115
+ /*---------------------------------------------------.
3116
+ | yyerrorlab -- error raised explicitly by YYERROR. |
3117
+ `---------------------------------------------------*/
3118
+ yyerrorlab:
3119
+
3120
+ /* Pacify compilers like GCC when the user code never invokes
3121
+ YYERROR and the label yyerrorlab therefore never appears in user
3122
+ code. */
3123
+ if (/*CONSTCOND*/ 0)
3124
+ goto yyerrorlab;
3125
+
3126
+ /* Do not reclaim the symbols of the rule which action triggered
3127
+ this YYERROR. */
3128
+ YYPOPSTACK (yylen);
3129
+ yylen = 0;
3130
+ YY_STACK_PRINT (yyss, yyssp);
3131
+ yystate = *yyssp;
3132
+ goto yyerrlab1;
3133
+
3134
+
3135
+ /*-------------------------------------------------------------.
3136
+ | yyerrlab1 -- common code for both syntax error and YYERROR. |
3137
+ `-------------------------------------------------------------*/
3138
+ yyerrlab1:
3139
+ yyerrstatus = 3; /* Each real token shifted decrements this. */
3140
+
3141
+ for (;;)
3142
+ {
3143
+ yyn = yypact[yystate];
3144
+ if (yyn != YYPACT_NINF)
3145
+ {
3146
+ yyn += YYTERROR;
3147
+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
3148
+ {
3149
+ yyn = yytable[yyn];
3150
+ if (0 < yyn)
3151
+ break;
3152
+ }
3153
+ }
3154
+
3155
+ /* Pop the current state because it cannot handle the error token. */
3156
+ if (yyssp == yyss)
3157
+ YYABORT;
3158
+
3159
+
3160
+ yydestruct ("Error: popping",
3161
+ yystos[yystate], yyvsp, self);
3162
+ YYPOPSTACK (1);
3163
+ yystate = *yyssp;
3164
+ YY_STACK_PRINT (yyss, yyssp);
3165
+ }
3166
+
3167
+ if (yyn == YYFINAL)
3168
+ YYACCEPT;
3169
+
3170
+ *++yyvsp = yylval;
3171
+
3172
+
3173
+ /* Shift the error token. */
3174
+ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
3175
+
3176
+ yystate = yyn;
3177
+ goto yynewstate;
3178
+
3179
+
3180
+ /*-------------------------------------.
3181
+ | yyacceptlab -- YYACCEPT comes here. |
3182
+ `-------------------------------------*/
3183
+ yyacceptlab:
3184
+ yyresult = 0;
3185
+ goto yyreturn;
3186
+
3187
+ /*-----------------------------------.
3188
+ | yyabortlab -- YYABORT comes here. |
3189
+ `-----------------------------------*/
3190
+ yyabortlab:
3191
+ yyresult = 1;
3192
+ goto yyreturn;
3193
+
3194
+ #ifndef yyoverflow
3195
+ /*-------------------------------------------------.
3196
+ | yyexhaustedlab -- memory exhaustion comes here. |
3197
+ `-------------------------------------------------*/
3198
+ yyexhaustedlab:
3199
+ yyerror (self, YY_("memory exhausted"));
3200
+ yyresult = 2;
3201
+ /* Fall through. */
3202
+ #endif
3203
+
3204
+ yyreturn:
3205
+ if (yychar != YYEOF && yychar != YYEMPTY)
3206
+ yydestruct ("Cleanup: discarding lookahead",
3207
+ yytoken, &yylval, self);
3208
+ /* Do not reclaim the symbols of the rule which action triggered
3209
+ this YYABORT or YYACCEPT. */
3210
+ YYPOPSTACK (yylen);
3211
+ YY_STACK_PRINT (yyss, yyssp);
3212
+ while (yyssp != yyss)
3213
+ {
3214
+ yydestruct ("Cleanup: popping",
3215
+ yystos[*yyssp], yyvsp, self);
3216
+ YYPOPSTACK (1);
3217
+ }
3218
+ #ifndef yyoverflow
3219
+ if (yyss != yyssa)
3220
+ YYSTACK_FREE (yyss);
3221
+ #endif
3222
+ #if YYERROR_VERBOSE
3223
+ if (yymsg != yymsgbuf)
3224
+ YYSTACK_FREE (yymsg);
3225
+ #endif
3226
+ /* Make sure YYID is used. */
3227
+ return YYID (yyresult);
3228
+ }
3229
+
3230
+
3231
+ #line 809 "/Users/backtype/projects/fancy/lib/parser/ext/parser.y"
3232
+
3233
+
3234
+
3235
+ VALUE fy_terminal_node(VALUE self, char* method) {
3236
+ return rb_funcall(self, rb_intern(method), 2,
3237
+ INT2NUM(yylineno), rb_str_new2(yytext));
3238
+ }
3239
+
3240
+ VALUE fy_terminal_node_from(VALUE self, char* method, char* text) {
3241
+ return rb_funcall(self, rb_intern(method), 2,
3242
+ INT2NUM(yylineno), rb_str_new2(text));
3243
+ }
3244
+
3245
+ int yyerror(VALUE self, char *s)
3246
+ {
3247
+ rb_funcall(self, rb_intern("ast:parse_error:"), 2, INT2NUM(yylineno), rb_str_new2(yytext));
3248
+ return 1;
3249
+ }
3250
+
3251
+