slow_blink 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -50,7 +50,7 @@
50
50
 
51
51
 
52
52
  /* First part of user declarations. */
53
- #line 6 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:240 */
53
+ #line 13 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:240 */
54
54
 
55
55
 
56
56
  typedef void * yyscan_t;
@@ -61,16 +61,18 @@ typedef void * yyscan_t;
61
61
  #include "parser.h"
62
62
  #include "lexer.h"
63
63
 
64
- void yyerror(YYLTYPE *locp, yyscan_t scanner, VALUE filename, VALUE *tree, char const *msg);
64
+ YY_DECL;
65
65
 
66
- static VALUE parseFileBuffer(int argc, VALUE* argv, VALUE self);
67
- static VALUE newLocation(VALUE filename, const YYLTYPE *locp);
66
+ void yyerror(YYLTYPE *locp, yyscan_t scanner, VALUE filename, VALUE crefs, VALUE *tree, char const *msg);
67
+
68
+ static VALUE parseFileBuffer(VALUE self, VALUE buffer, VALUE filename);
69
+ static VALUE newLocation(VALUE filename, VALUE crefs, const YYLTYPE *locp);
68
70
 
69
71
  static VALUE cSlowBlink;
70
72
  static VALUE cParseError;
71
73
 
72
74
 
73
- #line 74 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:240 */
75
+ #line 76 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:240 */
74
76
 
75
77
  # ifndef YY_NULLPTR
76
78
  # if defined __cplusplus && 201103L <= __cplusplus
@@ -103,7 +105,7 @@ static YYLTYPE yyloc_default
103
105
 
104
106
  /* Copy the second part of user declarations. */
105
107
 
106
- #line 107 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:263 */
108
+ #line 109 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:263 */
107
109
 
108
110
  #include <stdio.h>
109
111
  #include <stdlib.h>
@@ -272,19 +274,19 @@ static const unsigned char yytranslate[] =
272
274
  /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
273
275
  static const unsigned short int yyrline[] =
274
276
  {
275
- 0, 75, 75, 82, 88, 97, 104, 109, 116, 122,
276
- 128, 132, 143, 145, 149, 161, 163, 172, 177, 184,
277
- 190, 197, 211, 216, 223, 225, 229, 234, 236, 238,
278
- 243, 248, 250, 257, 266, 273, 279, 288, 294, 303,
279
- 313, 318, 325, 332, 342, 349, 356, 363, 370, 377,
280
- 384, 391, 398, 405, 414, 421, 428, 435, 442, 452,
281
- 460, 467, 475, 482, 492, 494, 499, 506, 511, 515,
282
- 521, 527, 535, 537, 544, 554, 556, 561, 568, 578,
283
- 585, 592, 600, 608, 619, 625, 632, 634, 636, 638,
284
- 642, 644, 648, 650, 654, 659, 664, 669, 674, 679,
285
- 684, 689, 694, 699, 704, 709, 714, 719, 724, 729,
286
- 734, 739, 744, 749, 754, 759, 764, 771, 775, 777,
287
- 781, 785, 787, 791, 795, 799
277
+ 0, 84, 84, 91, 98, 108, 115, 121, 128, 134,
278
+ 140, 144, 156, 158, 162, 175, 177, 187, 193, 200,
279
+ 207, 214, 229, 234, 241, 243, 247, 252, 254, 256,
280
+ 261, 266, 268, 276, 286, 293, 300, 310, 317, 327,
281
+ 338, 343, 350, 358, 369, 377, 385, 393, 401, 409,
282
+ 417, 425, 433, 441, 451, 459, 467, 475, 483, 494,
283
+ 503, 510, 519, 526, 537, 539, 544, 551, 557, 561,
284
+ 568, 574, 583, 585, 592, 603, 605, 610, 617, 628,
285
+ 636, 644, 653, 662, 674, 681, 688, 690, 692, 694,
286
+ 698, 700, 704, 706, 710, 715, 720, 725, 730, 735,
287
+ 740, 745, 750, 755, 760, 765, 770, 775, 780, 785,
288
+ 790, 795, 800, 805, 810, 815, 820, 827, 831, 833,
289
+ 837, 841, 843, 847, 851, 855
288
290
  };
289
291
  #endif
290
292
 
@@ -695,13 +697,14 @@ yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp)
695
697
  `----------------------------------------*/
696
698
 
697
699
  static void
698
- yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, yyscan_t scanner, VALUE filename, VALUE *tree)
700
+ yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, yyscan_t scanner, VALUE filename, VALUE crefs, VALUE *tree)
699
701
  {
700
702
  FILE *yyo = yyoutput;
701
703
  YYUSE (yyo);
702
704
  YYUSE (yylocationp);
703
705
  YYUSE (scanner);
704
706
  YYUSE (filename);
707
+ YYUSE (crefs);
705
708
  YYUSE (tree);
706
709
  if (!yyvaluep)
707
710
  return;
@@ -714,14 +717,14 @@ yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvalue
714
717
  `--------------------------------*/
715
718
 
716
719
  static void
717
- yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, yyscan_t scanner, VALUE filename, VALUE *tree)
720
+ yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, yyscan_t scanner, VALUE filename, VALUE crefs, VALUE *tree)
718
721
  {
719
722
  YYFPRINTF (yyoutput, "%s %s (",
720
723
  yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
721
724
 
722
725
  YY_LOCATION_PRINT (yyoutput, *yylocationp);
723
726
  YYFPRINTF (yyoutput, ": ");
724
- yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, scanner, filename, tree);
727
+ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, scanner, filename, crefs, tree);
725
728
  YYFPRINTF (yyoutput, ")");
726
729
  }
727
730
 
@@ -730,7 +733,7 @@ yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYL
730
733
  if (yydebug) \
731
734
  { \
732
735
  YYFPRINTF (stderr, "%s ", Title); \
733
- yy_symbol_print (stderr, Type, Value, Location, scanner, filename, tree); \
736
+ yy_symbol_print (stderr, Type, Value, Location, scanner, filename, crefs, tree); \
734
737
  YYFPRINTF (stderr, "\n"); \
735
738
  } \
736
739
  } while (0)
@@ -965,10 +968,10 @@ static void yyexpandGLRStack (yyGLRStack* yystackp);
965
968
  #endif
966
969
 
967
970
  static _Noreturn void
968
- yyFail (yyGLRStack* yystackp, YYLTYPE *yylocp, yyscan_t scanner, VALUE filename, VALUE *tree, const char* yymsg)
971
+ yyFail (yyGLRStack* yystackp, YYLTYPE *yylocp, yyscan_t scanner, VALUE filename, VALUE crefs, VALUE *tree, const char* yymsg)
969
972
  {
970
973
  if (yymsg != YY_NULLPTR)
971
- yyerror (yylocp, scanner, filename, tree, yymsg);
974
+ yyerror (yylocp, scanner, filename, crefs, tree, yymsg);
972
975
  YYLONGJMP (yystackp->yyexception_buffer, 1);
973
976
  }
974
977
 
@@ -1040,7 +1043,7 @@ yyfill (yyGLRStackItem *yyvsp, int *yylow, int yylow1, yybool yynormal)
1040
1043
  static YYRESULTTAG
1041
1044
  yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
1042
1045
  yyGLRStack* yystackp,
1043
- YYSTYPE* yyvalp, YYLTYPE *yylocp, yyscan_t scanner, VALUE filename, VALUE *tree)
1046
+ YYSTYPE* yyvalp, YYLTYPE *yylocp, yyscan_t scanner, VALUE filename, VALUE crefs, VALUE *tree)
1044
1047
  {
1045
1048
  yybool yynormal YY_ATTRIBUTE_UNUSED = (yystackp->yysplitPoint == YY_NULLPTR);
1046
1049
  int yylow;
@@ -1048,6 +1051,7 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
1048
1051
  YYUSE (yylocp);
1049
1052
  YYUSE (scanner);
1050
1053
  YYUSE (filename);
1054
+ YYUSE (crefs);
1051
1055
  YYUSE (tree);
1052
1056
  YYUSE (yyrhslen);
1053
1057
  # undef yyerrok
@@ -1066,7 +1070,7 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
1066
1070
  # define YYFILL(N) yyfill (yyvsp, &yylow, N, yynormal)
1067
1071
  # undef YYBACKUP
1068
1072
  # define YYBACKUP(Token, Value) \
1069
- return yyerror (yylocp, scanner, filename, tree, YY_("syntax error: cannot back up")), \
1073
+ return yyerror (yylocp, scanner, filename, crefs, tree, YY_("syntax error: cannot back up")), \
1070
1074
  yyerrok, yyerr
1071
1075
 
1072
1076
  yylow = 1;
@@ -1080,871 +1084,918 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
1080
1084
  switch (yyn)
1081
1085
  {
1082
1086
  case 2:
1083
- #line 76 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1087
+ #line 85 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1084
1088
  {
1085
1089
  *tree = (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval);
1086
1090
  }
1087
- #line 1088 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1091
+ #line 1092 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1088
1092
  break;
1089
1093
 
1090
1094
  case 3:
1091
- #line 83 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1092
- {
1095
+ #line 92 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1096
+ {
1093
1097
  ((*yyvalp)) = rb_hash_new();
1098
+ rb_ary_push(crefs, ((*yyvalp)));
1094
1099
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("defs")), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
1095
1100
  }
1096
- #line 1097 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1101
+ #line 1102 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1097
1102
  break;
1098
1103
 
1099
1104
  case 4:
1100
- #line 89 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1105
+ #line 99 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1101
1106
  {
1102
1107
  ((*yyvalp)) = rb_hash_new();
1108
+ rb_ary_push(crefs, ((*yyvalp)));
1103
1109
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("defs")), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
1104
1110
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("name")), (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
1105
1111
  }
1106
- #line 1107 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1112
+ #line 1113 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1107
1113
  break;
1108
1114
 
1109
1115
  case 5:
1110
- #line 98 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1116
+ #line 109 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1111
1117
  {
1112
1118
  ((*yyvalp)) = (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval);
1113
1119
  }
1114
- #line 1115 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1120
+ #line 1121 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1115
1121
  break;
1116
1122
 
1117
1123
  case 6:
1118
- #line 105 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1124
+ #line 116 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1119
1125
  {
1120
1126
  ((*yyvalp)) = rb_ary_new();
1127
+ rb_ary_push(crefs, ((*yyvalp)));
1121
1128
  }
1122
- #line 1123 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1129
+ #line 1130 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1123
1130
  break;
1124
1131
 
1125
1132
  case 7:
1126
- #line 110 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1133
+ #line 122 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1127
1134
  {
1128
1135
  rb_ary_push(((*yyvalp)), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
1129
1136
  }
1130
- #line 1131 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1137
+ #line 1138 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1131
1138
  break;
1132
1139
 
1133
1140
  case 8:
1134
- #line 117 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1141
+ #line 129 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1135
1142
  {
1136
1143
  ((*yyvalp)) = (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval);
1137
1144
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("annotes")), (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
1138
1145
  }
1139
- #line 1140 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1146
+ #line 1147 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1140
1147
  break;
1141
1148
 
1142
1149
  case 9:
1143
- #line 123 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1150
+ #line 135 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1144
1151
  {
1145
1152
  ((*yyvalp)) = (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval);
1146
1153
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("annotes")), (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
1147
1154
  }
1148
- #line 1149 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1155
+ #line 1156 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1149
1156
  break;
1150
1157
 
1151
1158
  case 11:
1152
- #line 133 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1159
+ #line 145 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1153
1160
  {
1154
1161
  ((*yyvalp)) = rb_hash_new();
1162
+ rb_ary_push(crefs, ((*yyvalp)));
1155
1163
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("class")), ID2SYM(rb_intern("Definition")));
1156
1164
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("name")), (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
1157
1165
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("type")), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
1158
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1166
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1159
1167
  }
1160
- #line 1161 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1168
+ #line 1169 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1161
1169
  break;
1162
1170
 
1163
1171
  case 14:
1164
- #line 150 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1172
+ #line 163 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1165
1173
  {
1166
1174
  ((*yyvalp)) = rb_hash_new();
1175
+ rb_ary_push(crefs, ((*yyvalp)));
1167
1176
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("class")), ID2SYM(rb_intern("Group")));
1168
1177
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("name")), (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
1169
1178
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("super")), (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
1170
1179
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("fields")), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
1171
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1180
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1172
1181
  }
1173
- #line 1174 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1182
+ #line 1183 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1174
1183
  break;
1175
1184
 
1176
1185
  case 16:
1177
- #line 164 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1186
+ #line 178 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1178
1187
  {
1179
1188
  ((*yyvalp)) = rb_hash_new();
1180
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yyloc)));
1189
+ rb_ary_push(crefs, ((*yyvalp)));
1190
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yyloc)));
1181
1191
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("ref")), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
1182
1192
  }
1183
- #line 1184 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1193
+ #line 1194 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1184
1194
  break;
1185
1195
 
1186
1196
  case 17:
1187
- #line 173 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1197
+ #line 188 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1188
1198
  {
1189
1199
  ((*yyvalp)) = rb_ary_new();
1200
+ rb_ary_push(crefs, ((*yyvalp)));
1190
1201
  }
1191
- #line 1192 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1202
+ #line 1203 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1192
1203
  break;
1193
1204
 
1194
1205
  case 18:
1195
- #line 178 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1206
+ #line 194 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1196
1207
  {
1197
1208
  ((*yyvalp)) = (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval);
1198
1209
  }
1199
- #line 1200 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1210
+ #line 1211 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1200
1211
  break;
1201
1212
 
1202
1213
  case 19:
1203
- #line 185 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1214
+ #line 201 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1204
1215
  {
1205
1216
  ((*yyvalp)) = rb_ary_new();
1217
+ rb_ary_push(crefs, ((*yyvalp)));
1206
1218
  rb_ary_push(((*yyvalp)), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
1207
1219
  }
1208
- #line 1209 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1220
+ #line 1221 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1209
1221
  break;
1210
1222
 
1211
1223
  case 20:
1212
- #line 191 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1224
+ #line 208 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1213
1225
  {
1214
1226
  rb_ary_push(((*yyvalp)), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
1215
1227
  }
1216
- #line 1217 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1228
+ #line 1229 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1217
1229
  break;
1218
1230
 
1219
1231
  case 21:
1220
- #line 198 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1232
+ #line 215 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1221
1233
  {
1222
1234
  ((*yyvalp)) = rb_hash_new();
1235
+ rb_ary_push(crefs, ((*yyvalp)));
1223
1236
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("class")), ID2SYM(rb_intern("Field")));
1224
1237
  rb_hash_aset((((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval), ID2SYM(rb_intern("annotes")), (((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval));
1225
1238
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("type")), (((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval));
1226
1239
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("annotes")), (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
1227
1240
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("name")), (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
1228
1241
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("optional")), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
1229
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1242
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1230
1243
  }
1231
- #line 1232 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1244
+ #line 1245 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1232
1245
  break;
1233
1246
 
1234
1247
  case 22:
1235
- #line 212 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1248
+ #line 230 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1236
1249
  {
1237
1250
  ((*yyvalp)) = Qfalse;
1238
1251
  }
1239
- #line 1240 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1252
+ #line 1253 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1240
1253
  break;
1241
1254
 
1242
1255
  case 23:
1243
- #line 217 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1256
+ #line 235 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1244
1257
  {
1245
1258
  ((*yyvalp)) = Qtrue;
1246
1259
  }
1247
- #line 1248 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1260
+ #line 1261 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1248
1261
  break;
1249
1262
 
1250
1263
  case 26:
1251
- #line 230 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1264
+ #line 248 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1252
1265
  {
1253
1266
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("class")), ID2SYM(rb_intern("REF")));
1254
1267
  }
1255
- #line 1256 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1268
+ #line 1269 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1256
1269
  break;
1257
1270
 
1258
1271
  case 29:
1259
- #line 239 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1272
+ #line 257 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1260
1273
  {
1261
1274
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("class")), ID2SYM(rb_intern("STRING")));
1262
1275
  }
1263
- #line 1264 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1276
+ #line 1277 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1264
1277
  break;
1265
1278
 
1266
1279
  case 30:
1267
- #line 244 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1280
+ #line 262 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1268
1281
  {
1269
1282
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("class")), ID2SYM(rb_intern("BINARY")));
1270
1283
  }
1271
- #line 1272 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1284
+ #line 1285 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1272
1285
  break;
1273
1286
 
1274
1287
  case 32:
1275
- #line 251 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1288
+ #line 269 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1276
1289
  {
1277
1290
  ((*yyvalp)) = rb_hash_new();
1291
+ rb_ary_push(crefs, ((*yyvalp)));
1278
1292
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("class")), ID2SYM(rb_intern("BOOLEAN")));
1279
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1293
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1280
1294
  }
1281
- #line 1282 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1295
+ #line 1296 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1282
1296
  break;
1283
1297
 
1284
1298
  case 33:
1285
- #line 258 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1299
+ #line 277 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1286
1300
  {
1287
1301
  ((*yyvalp)) = rb_hash_new();
1302
+ rb_ary_push(crefs, ((*yyvalp)));
1288
1303
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("class")), ID2SYM(rb_intern("OBJECT")));
1289
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1304
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1290
1305
  }
1291
- #line 1292 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1306
+ #line 1307 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1292
1307
  break;
1293
1308
 
1294
1309
  case 34:
1295
- #line 267 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1310
+ #line 287 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1296
1311
  {
1297
1312
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("sequence")), Qtrue);
1298
1313
  }
1299
- #line 1300 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1314
+ #line 1315 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1300
1315
  break;
1301
1316
 
1302
1317
  case 35:
1303
- #line 274 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1318
+ #line 294 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1304
1319
  {
1305
- ((*yyvalp)) = rb_hash_new();
1306
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1320
+ ((*yyvalp)) = rb_hash_new();
1321
+ rb_ary_push(crefs, ((*yyvalp)));
1322
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1307
1323
  }
1308
- #line 1309 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1324
+ #line 1325 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1309
1325
  break;
1310
1326
 
1311
1327
  case 36:
1312
- #line 280 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1328
+ #line 301 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1313
1329
  {
1314
1330
  ((*yyvalp)) = rb_hash_new();
1315
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1331
+ rb_ary_push(crefs, ((*yyvalp)));
1332
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1316
1333
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("size")), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
1317
1334
  }
1318
- #line 1319 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1335
+ #line 1336 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1319
1336
  break;
1320
1337
 
1321
1338
  case 37:
1322
- #line 289 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1339
+ #line 311 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1323
1340
  {
1324
1341
  ((*yyvalp)) = rb_hash_new();
1325
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1342
+ rb_ary_push(crefs, ((*yyvalp)));
1343
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1326
1344
  }
1327
- #line 1328 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1345
+ #line 1346 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1328
1346
  break;
1329
1347
 
1330
1348
  case 38:
1331
- #line 295 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1349
+ #line 318 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1332
1350
  {
1333
1351
  ((*yyvalp)) = rb_hash_new();
1352
+ rb_ary_push(crefs, ((*yyvalp)));
1334
1353
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("size")), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
1335
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1354
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1336
1355
  }
1337
- #line 1338 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1356
+ #line 1357 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1338
1357
  break;
1339
1358
 
1340
1359
  case 39:
1341
- #line 304 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1360
+ #line 328 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1342
1361
  {
1343
1362
  ((*yyvalp)) = rb_hash_new();
1363
+ rb_ary_push(crefs, ((*yyvalp)));
1344
1364
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("class")), ID2SYM(rb_intern("FIXED")));
1345
1365
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("size")), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
1346
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1366
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1347
1367
  }
1348
- #line 1349 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1368
+ #line 1369 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1349
1369
  break;
1350
1370
 
1351
1371
  case 40:
1352
- #line 314 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1372
+ #line 339 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1353
1373
  {
1354
1374
  ((*yyvalp)) = (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval);
1355
1375
  }
1356
- #line 1357 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1376
+ #line 1377 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1357
1377
  break;
1358
1378
 
1359
1379
  case 41:
1360
- #line 319 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1380
+ #line 344 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1361
1381
  {
1362
1382
  ((*yyvalp)) = (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval);
1363
1383
  }
1364
- #line 1365 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1384
+ #line 1385 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1365
1385
  break;
1366
1386
 
1367
1387
  case 42:
1368
- #line 326 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1388
+ #line 351 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1369
1389
  {
1370
- ((*yyvalp)) = rb_hash_new();
1390
+ ((*yyvalp)) = rb_hash_new();
1391
+ rb_ary_push(crefs, ((*yyvalp)));
1371
1392
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("ref")), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
1372
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1393
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1373
1394
  }
1374
- #line 1375 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1395
+ #line 1396 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1375
1396
  break;
1376
1397
 
1377
1398
  case 43:
1378
- #line 333 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1399
+ #line 359 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1379
1400
  {
1380
1401
  ((*yyvalp)) = rb_hash_new();
1402
+ rb_ary_push(crefs, ((*yyvalp)));
1381
1403
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("ref")), (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
1382
1404
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("dynamic")), Qtrue);
1383
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1405
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1384
1406
  }
1385
- #line 1386 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1407
+ #line 1408 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1386
1408
  break;
1387
1409
 
1388
1410
  case 44:
1389
- #line 343 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1411
+ #line 370 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1390
1412
  {
1391
1413
  ((*yyvalp)) = rb_hash_new();
1414
+ rb_ary_push(crefs, ((*yyvalp)));
1392
1415
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("class")), ID2SYM(rb_intern("I8")));
1393
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1416
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1394
1417
  }
1395
- #line 1396 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1418
+ #line 1419 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1396
1419
  break;
1397
1420
 
1398
1421
  case 45:
1399
- #line 350 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1422
+ #line 378 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1400
1423
  {
1401
1424
  ((*yyvalp)) = rb_hash_new();
1425
+ rb_ary_push(crefs, ((*yyvalp)));
1402
1426
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("class")), ID2SYM(rb_intern("I16")));
1403
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1427
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1404
1428
  }
1405
- #line 1406 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1429
+ #line 1430 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1406
1430
  break;
1407
1431
 
1408
1432
  case 46:
1409
- #line 357 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1433
+ #line 386 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1410
1434
  {
1411
1435
  ((*yyvalp)) = rb_hash_new();
1436
+ rb_ary_push(crefs, ((*yyvalp)));
1412
1437
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("class")), ID2SYM(rb_intern("I32")));
1413
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1438
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1414
1439
  }
1415
- #line 1416 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1440
+ #line 1441 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1416
1441
  break;
1417
1442
 
1418
1443
  case 47:
1419
- #line 364 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1444
+ #line 394 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1420
1445
  {
1421
1446
  ((*yyvalp)) = rb_hash_new();
1447
+ rb_ary_push(crefs, ((*yyvalp)));
1422
1448
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("class")), ID2SYM(rb_intern("I64")));
1423
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1449
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1424
1450
  }
1425
- #line 1426 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1451
+ #line 1452 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1426
1452
  break;
1427
1453
 
1428
1454
  case 48:
1429
- #line 371 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1455
+ #line 402 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1430
1456
  {
1431
1457
  ((*yyvalp)) = rb_hash_new();
1458
+ rb_ary_push(crefs, ((*yyvalp)));
1432
1459
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("class")), ID2SYM(rb_intern("U8")));
1433
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1460
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1434
1461
  }
1435
- #line 1436 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1462
+ #line 1463 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1436
1463
  break;
1437
1464
 
1438
1465
  case 49:
1439
- #line 378 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1466
+ #line 410 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1440
1467
  {
1441
1468
  ((*yyvalp)) = rb_hash_new();
1469
+ rb_ary_push(crefs, ((*yyvalp)));
1442
1470
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("class")), ID2SYM(rb_intern("U16")));
1443
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1471
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1444
1472
  }
1445
- #line 1446 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1473
+ #line 1474 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1446
1474
  break;
1447
1475
 
1448
1476
  case 50:
1449
- #line 385 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1477
+ #line 418 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1450
1478
  {
1451
1479
  ((*yyvalp)) = rb_hash_new();
1480
+ rb_ary_push(crefs, ((*yyvalp)));
1452
1481
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("class")), ID2SYM(rb_intern("U32")));
1453
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1482
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1454
1483
  }
1455
- #line 1456 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1484
+ #line 1485 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1456
1485
  break;
1457
1486
 
1458
1487
  case 51:
1459
- #line 392 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1488
+ #line 426 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1460
1489
  {
1461
1490
  ((*yyvalp)) = rb_hash_new();
1491
+ rb_ary_push(crefs, ((*yyvalp)));
1462
1492
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("class")), ID2SYM(rb_intern("U64")));
1463
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1493
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1464
1494
  }
1465
- #line 1466 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1495
+ #line 1496 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1466
1496
  break;
1467
1497
 
1468
1498
  case 52:
1469
- #line 399 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1499
+ #line 434 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1470
1500
  {
1471
1501
  ((*yyvalp)) = rb_hash_new();
1502
+ rb_ary_push(crefs, ((*yyvalp)));
1472
1503
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("class")), ID2SYM(rb_intern("FLOATING_POINT")));
1473
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1504
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1474
1505
  }
1475
- #line 1476 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1506
+ #line 1507 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1476
1507
  break;
1477
1508
 
1478
1509
  case 53:
1479
- #line 406 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1510
+ #line 442 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1480
1511
  {
1481
1512
  ((*yyvalp)) = rb_hash_new();
1513
+ rb_ary_push(crefs, ((*yyvalp)));
1482
1514
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("class")), ID2SYM(rb_intern("DECIMAL")));
1483
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1515
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1484
1516
  }
1485
- #line 1486 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1517
+ #line 1518 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1486
1518
  break;
1487
1519
 
1488
1520
  case 54:
1489
- #line 415 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1521
+ #line 452 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1490
1522
  {
1491
1523
  ((*yyvalp)) = rb_hash_new();
1524
+ rb_ary_push(crefs, ((*yyvalp)));
1492
1525
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("class")), ID2SYM(rb_intern("DATE")));
1493
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1526
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1494
1527
  }
1495
- #line 1496 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1528
+ #line 1529 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1496
1529
  break;
1497
1530
 
1498
1531
  case 55:
1499
- #line 422 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1532
+ #line 460 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1500
1533
  {
1501
1534
  ((*yyvalp)) = rb_hash_new();
1535
+ rb_ary_push(crefs, ((*yyvalp)));
1502
1536
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("class")), ID2SYM(rb_intern("TIME_OF_DAY_MILLI")));
1503
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1537
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1504
1538
  }
1505
- #line 1506 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1539
+ #line 1540 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1506
1540
  break;
1507
1541
 
1508
1542
  case 56:
1509
- #line 429 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1543
+ #line 468 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1510
1544
  {
1511
1545
  ((*yyvalp)) = rb_hash_new();
1546
+ rb_ary_push(crefs, ((*yyvalp)));
1512
1547
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("class")), ID2SYM(rb_intern("TIME_OF_DAY_NANO")));
1513
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1548
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1514
1549
  }
1515
- #line 1516 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1550
+ #line 1551 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1516
1551
  break;
1517
1552
 
1518
1553
  case 57:
1519
- #line 436 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1554
+ #line 476 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1520
1555
  {
1521
1556
  ((*yyvalp)) = rb_hash_new();
1557
+ rb_ary_push(crefs, ((*yyvalp)));
1522
1558
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("class")), ID2SYM(rb_intern("NANO_TIME")));
1523
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1559
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1524
1560
  }
1525
- #line 1526 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1561
+ #line 1562 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1526
1562
  break;
1527
1563
 
1528
1564
  case 58:
1529
- #line 443 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1565
+ #line 484 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1530
1566
  {
1531
1567
  ((*yyvalp)) = rb_hash_new();
1568
+ rb_ary_push(crefs, ((*yyvalp)));
1532
1569
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("class")), ID2SYM(rb_intern("MILLI_TIME")));
1533
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1570
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1534
1571
  }
1535
- #line 1536 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1572
+ #line 1573 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1536
1573
  break;
1537
1574
 
1538
1575
  case 59:
1539
- #line 453 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1576
+ #line 495 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1540
1577
  {
1541
1578
  ((*yyvalp)) = rb_hash_new();
1579
+ rb_ary_push(crefs, ((*yyvalp)));
1542
1580
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("class")), ID2SYM(rb_intern("ENUM")));
1543
1581
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("syms")), rb_ary_new());
1544
1582
  rb_ary_push(rb_hash_aref(((*yyvalp)), ID2SYM(rb_intern("syms"))), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
1545
1583
  }
1546
- #line 1547 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1584
+ #line 1585 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1547
1585
  break;
1548
1586
 
1549
1587
  case 60:
1550
- #line 461 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1588
+ #line 504 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1551
1589
  {
1552
1590
  rb_ary_push(rb_hash_aref(((*yyvalp)), ID2SYM(rb_intern("syms"))), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
1553
1591
  }
1554
- #line 1555 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1592
+ #line 1593 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1555
1593
  break;
1556
1594
 
1557
1595
  case 61:
1558
- #line 468 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1596
+ #line 511 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1559
1597
  {
1560
1598
  ((*yyvalp)) = rb_hash_new();
1599
+ rb_ary_push(crefs, ((*yyvalp)));
1561
1600
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("class")), ID2SYM(rb_intern("ENUM")));
1562
1601
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("syms")), rb_ary_new());
1563
1602
  rb_ary_push(rb_hash_aref(((*yyvalp)), ID2SYM(rb_intern("syms"))), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
1564
1603
  }
1565
- #line 1566 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1604
+ #line 1605 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1566
1605
  break;
1567
1606
 
1568
1607
  case 62:
1569
- #line 476 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1608
+ #line 520 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1570
1609
  {
1571
1610
  rb_ary_push(rb_hash_aref(((*yyvalp)), ID2SYM(rb_intern("syms"))), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
1572
1611
  }
1573
- #line 1574 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1612
+ #line 1613 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1574
1613
  break;
1575
1614
 
1576
1615
  case 63:
1577
- #line 483 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1616
+ #line 527 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1578
1617
  {
1579
1618
  ((*yyvalp)) = rb_hash_new();
1619
+ rb_ary_push(crefs, ((*yyvalp)));
1580
1620
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("annotes")), (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
1581
1621
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("name")), (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
1582
1622
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("value")), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
1583
1623
  }
1584
- #line 1585 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1624
+ #line 1625 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1585
1625
  break;
1586
1626
 
1587
1627
  case 65:
1588
- #line 495 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1628
+ #line 540 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1589
1629
  {
1590
1630
  ((*yyvalp)) = (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval);
1591
1631
  }
1592
- #line 1593 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1632
+ #line 1633 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1593
1633
  break;
1594
1634
 
1595
1635
  case 66:
1596
- #line 500 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1636
+ #line 545 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1597
1637
  {
1598
1638
  ((*yyvalp)) = (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval);
1599
1639
  }
1600
- #line 1601 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1640
+ #line 1641 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1601
1641
  break;
1602
1642
 
1603
1643
  case 67:
1604
- #line 507 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1644
+ #line 552 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1605
1645
  {
1606
1646
  ((*yyvalp)) = rb_ary_new();
1647
+ rb_ary_push(crefs, ((*yyvalp)));
1607
1648
  }
1608
- #line 1609 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1649
+ #line 1650 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1609
1650
  break;
1610
1651
 
1611
1652
  case 69:
1612
- #line 516 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1653
+ #line 562 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1613
1654
  {
1614
1655
  ((*yyvalp)) = rb_ary_new();
1656
+ rb_ary_push(crefs, ((*yyvalp)));
1615
1657
  rb_ary_push(((*yyvalp)), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
1616
1658
  }
1617
- #line 1618 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1659
+ #line 1660 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1618
1660
  break;
1619
1661
 
1620
1662
  case 70:
1621
- #line 522 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1663
+ #line 569 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1622
1664
  {
1623
1665
  rb_ary_push(((*yyvalp)), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
1624
1666
  }
1625
- #line 1626 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1667
+ #line 1668 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1626
1668
  break;
1627
1669
 
1628
1670
  case 71:
1629
- #line 528 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1671
+ #line 575 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1630
1672
  {
1631
1673
  ((*yyvalp)) = rb_hash_new();
1674
+ rb_ary_push(crefs, ((*yyvalp)));
1632
1675
  rb_hash_aset(((*yyvalp)), (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
1633
1676
  }
1634
- #line 1635 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1677
+ #line 1678 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1635
1678
  break;
1636
1679
 
1637
1680
  case 73:
1638
- #line 538 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1681
+ #line 586 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1639
1682
  {
1640
1683
  rb_str_append(((*yyvalp)), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
1641
1684
  }
1642
- #line 1643 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1685
+ #line 1686 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1643
1686
  break;
1644
1687
 
1645
1688
  case 74:
1646
- #line 545 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1689
+ #line 593 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1647
1690
  {
1648
1691
  ((*yyvalp)) = rb_hash_new();
1692
+ rb_ary_push(crefs, ((*yyvalp)));
1649
1693
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("name")), (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
1650
1694
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("id")), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
1651
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1695
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1652
1696
  }
1653
- #line 1654 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1697
+ #line 1698 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1654
1698
  break;
1655
1699
 
1656
1700
  case 76:
1657
- #line 557 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1701
+ #line 606 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1658
1702
  {
1659
1703
  ((*yyvalp)) = (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval);
1660
1704
  }
1661
- #line 1662 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1705
+ #line 1706 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1662
1706
  break;
1663
1707
 
1664
1708
  case 77:
1665
- #line 562 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1709
+ #line 611 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1666
1710
  {
1667
1711
  ((*yyvalp)) = (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval);
1668
1712
  }
1669
- #line 1670 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1713
+ #line 1714 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1670
1714
  break;
1671
1715
 
1672
1716
  case 78:
1673
- #line 569 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1717
+ #line 618 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1674
1718
  {
1675
1719
  ((*yyvalp)) = rb_hash_new();
1720
+ rb_ary_push(crefs, ((*yyvalp)));
1676
1721
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("class")), ID2SYM(rb_intern("IncrementalAnnotation")));
1677
1722
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("annotes")), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
1678
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1723
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1679
1724
  }
1680
- #line 1681 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1725
+ #line 1726 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1681
1726
  break;
1682
1727
 
1683
1728
  case 79:
1684
- #line 579 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1729
+ #line 629 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1685
1730
  {
1686
1731
  ((*yyvalp)) = rb_hash_new();
1732
+ rb_ary_push(crefs, ((*yyvalp)));
1687
1733
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("ref")), ID2SYM(rb_intern("SCHEMA")));
1688
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1734
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1689
1735
  }
1690
- #line 1691 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1736
+ #line 1737 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1691
1737
  break;
1692
1738
 
1693
1739
  case 80:
1694
- #line 586 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1740
+ #line 637 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1695
1741
  {
1696
1742
  ((*yyvalp)) = rb_hash_new();
1743
+ rb_ary_push(crefs, ((*yyvalp)));
1697
1744
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("ref")), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
1698
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1745
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1699
1746
  }
1700
- #line 1701 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1747
+ #line 1748 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1701
1748
  break;
1702
1749
 
1703
1750
  case 81:
1704
- #line 593 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1751
+ #line 645 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1705
1752
  {
1706
1753
  ((*yyvalp)) = rb_hash_new();
1754
+ rb_ary_push(crefs, ((*yyvalp)));
1707
1755
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("ref")), (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
1708
1756
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("type")), Qtrue);
1709
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1757
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1710
1758
  }
1711
- #line 1712 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1759
+ #line 1760 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1712
1760
  break;
1713
1761
 
1714
1762
  case 82:
1715
- #line 601 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1763
+ #line 654 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1716
1764
  {
1717
1765
  ((*yyvalp)) = rb_hash_new();
1766
+ rb_ary_push(crefs, ((*yyvalp)));
1718
1767
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("ref")), (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
1719
1768
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("name")), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
1720
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1769
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1721
1770
  }
1722
- #line 1723 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1771
+ #line 1772 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1723
1772
  break;
1724
1773
 
1725
1774
  case 83:
1726
- #line 609 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1775
+ #line 663 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1727
1776
  {
1728
1777
  ((*yyvalp)) = rb_hash_new();
1778
+ rb_ary_push(crefs, ((*yyvalp)));
1729
1779
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("ref")), (((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval));
1730
1780
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("type")), Qtrue);
1731
1781
  rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("name")), (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
1732
- rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, &(*yylocp)));
1782
+ rb_hash_aset(((*yyvalp)), ID2SYM(rb_intern("loc")), newLocation(filename, crefs, &(*yylocp)));
1733
1783
  }
1734
- #line 1735 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1784
+ #line 1785 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1735
1785
  break;
1736
1786
 
1737
1787
  case 84:
1738
- #line 620 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1788
+ #line 675 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1739
1789
  {
1740
1790
  ((*yyvalp)) = rb_ary_new();
1791
+ rb_ary_push(crefs, ((*yyvalp)));
1741
1792
  rb_ary_push(((*yyvalp)), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
1742
1793
  }
1743
- #line 1744 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1794
+ #line 1795 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1744
1795
  break;
1745
1796
 
1746
1797
  case 85:
1747
- #line 626 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1798
+ #line 682 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1748
1799
  {
1749
1800
  rb_ary_push(((*yyvalp)), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
1750
1801
  }
1751
- #line 1752 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1802
+ #line 1803 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1752
1803
  break;
1753
1804
 
1754
1805
  case 94:
1755
- #line 655 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1806
+ #line 711 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1756
1807
  {
1757
1808
  ((*yyvalp)) = rb_str_new2("i8");
1758
1809
  }
1759
- #line 1760 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1810
+ #line 1811 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1760
1811
  break;
1761
1812
 
1762
1813
  case 95:
1763
- #line 660 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1814
+ #line 716 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1764
1815
  {
1765
1816
  ((*yyvalp)) = rb_str_new2("i16");
1766
1817
  }
1767
- #line 1768 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1818
+ #line 1819 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1768
1819
  break;
1769
1820
 
1770
1821
  case 96:
1771
- #line 665 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1822
+ #line 721 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1772
1823
  {
1773
1824
  ((*yyvalp)) = rb_str_new2("i32");
1774
1825
  }
1775
- #line 1776 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1826
+ #line 1827 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1776
1827
  break;
1777
1828
 
1778
1829
  case 97:
1779
- #line 670 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1830
+ #line 726 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1780
1831
  {
1781
1832
  ((*yyvalp)) = rb_str_new2("i64");
1782
1833
  }
1783
- #line 1784 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1834
+ #line 1835 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1784
1835
  break;
1785
1836
 
1786
1837
  case 98:
1787
- #line 675 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1838
+ #line 731 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1788
1839
  {
1789
1840
  ((*yyvalp)) = rb_str_new2("u8");
1790
1841
  }
1791
- #line 1792 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1842
+ #line 1843 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1792
1843
  break;
1793
1844
 
1794
1845
  case 99:
1795
- #line 680 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1846
+ #line 736 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1796
1847
  {
1797
1848
  ((*yyvalp)) = rb_str_new2("u16");
1798
1849
  }
1799
- #line 1800 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1850
+ #line 1851 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1800
1851
  break;
1801
1852
 
1802
1853
  case 100:
1803
- #line 685 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1854
+ #line 741 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1804
1855
  {
1805
1856
  ((*yyvalp)) = rb_str_new2("u32");
1806
1857
  }
1807
- #line 1808 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1858
+ #line 1859 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1808
1859
  break;
1809
1860
 
1810
1861
  case 101:
1811
- #line 690 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1862
+ #line 746 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1812
1863
  {
1813
1864
  ((*yyvalp)) = rb_str_new2("u64");
1814
1865
  }
1815
- #line 1816 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1866
+ #line 1867 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1816
1867
  break;
1817
1868
 
1818
1869
  case 102:
1819
- #line 695 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1870
+ #line 751 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1820
1871
  {
1821
1872
  ((*yyvalp)) = rb_str_new2("f64");
1822
1873
  }
1823
- #line 1824 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1874
+ #line 1875 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1824
1875
  break;
1825
1876
 
1826
1877
  case 103:
1827
- #line 700 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1878
+ #line 756 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1828
1879
  {
1829
1880
  ((*yyvalp)) = rb_str_new2("decimal");
1830
1881
  }
1831
- #line 1832 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1882
+ #line 1883 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1832
1883
  break;
1833
1884
 
1834
1885
  case 104:
1835
- #line 705 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1886
+ #line 761 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1836
1887
  {
1837
1888
  ((*yyvalp)) = rb_str_new2("date");
1838
1889
  }
1839
- #line 1840 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1890
+ #line 1891 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1840
1891
  break;
1841
1892
 
1842
1893
  case 105:
1843
- #line 710 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1894
+ #line 766 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1844
1895
  {
1845
1896
  ((*yyvalp)) = rb_str_new2("timeOfDayMilli");
1846
1897
  }
1847
- #line 1848 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1898
+ #line 1899 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1848
1899
  break;
1849
1900
 
1850
1901
  case 106:
1851
- #line 715 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1902
+ #line 771 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1852
1903
  {
1853
1904
  ((*yyvalp)) = rb_str_new2("timeOfDayNano");
1854
1905
  }
1855
- #line 1856 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1906
+ #line 1907 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1856
1907
  break;
1857
1908
 
1858
1909
  case 107:
1859
- #line 720 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1910
+ #line 776 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1860
1911
  {
1861
1912
  ((*yyvalp)) = rb_str_new2("nanoTime");
1862
1913
  }
1863
- #line 1864 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1914
+ #line 1915 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1864
1915
  break;
1865
1916
 
1866
1917
  case 108:
1867
- #line 725 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1918
+ #line 781 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1868
1919
  {
1869
1920
  ((*yyvalp)) = rb_str_new2("milliTime");
1870
1921
  }
1871
- #line 1872 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1922
+ #line 1923 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1872
1923
  break;
1873
1924
 
1874
1925
  case 109:
1875
- #line 730 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1926
+ #line 786 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1876
1927
  {
1877
1928
  ((*yyvalp)) = rb_str_new2("boolean");
1878
1929
  }
1879
- #line 1880 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1930
+ #line 1931 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1880
1931
  break;
1881
1932
 
1882
1933
  case 110:
1883
- #line 735 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1934
+ #line 791 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1884
1935
  {
1885
1936
  ((*yyvalp)) = rb_str_new2("string");
1886
1937
  }
1887
- #line 1888 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1938
+ #line 1939 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1888
1939
  break;
1889
1940
 
1890
1941
  case 111:
1891
- #line 740 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1942
+ #line 796 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1892
1943
  {
1893
1944
  ((*yyvalp)) = rb_str_new2("binary");
1894
1945
  }
1895
- #line 1896 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1946
+ #line 1947 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1896
1947
  break;
1897
1948
 
1898
1949
  case 112:
1899
- #line 745 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1950
+ #line 801 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1900
1951
  {
1901
1952
  ((*yyvalp)) = rb_str_new2("fixed");
1902
1953
  }
1903
- #line 1904 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1954
+ #line 1955 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1904
1955
  break;
1905
1956
 
1906
1957
  case 113:
1907
- #line 750 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1958
+ #line 806 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1908
1959
  {
1909
1960
  ((*yyvalp)) = rb_str_new2("object");
1910
1961
  }
1911
- #line 1912 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1962
+ #line 1963 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1912
1963
  break;
1913
1964
 
1914
1965
  case 114:
1915
- #line 755 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1966
+ #line 811 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1916
1967
  {
1917
1968
  ((*yyvalp)) = rb_str_new2("namespace");
1918
1969
  }
1919
- #line 1920 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1970
+ #line 1971 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1920
1971
  break;
1921
1972
 
1922
1973
  case 115:
1923
- #line 760 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1974
+ #line 816 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1924
1975
  {
1925
1976
  ((*yyvalp)) = rb_str_new2("type");
1926
1977
  }
1927
- #line 1928 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1978
+ #line 1979 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1928
1979
  break;
1929
1980
 
1930
1981
  case 116:
1931
- #line 765 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1982
+ #line 821 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1932
1983
  {
1933
1984
  ((*yyvalp)) = rb_str_new2("schema");
1934
1985
  }
1935
- #line 1936 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1986
+ #line 1987 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1936
1987
  break;
1937
1988
 
1938
1989
  case 125:
1939
- #line 800 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1990
+ #line 856 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:816 */
1940
1991
  {
1941
1992
  ((*yyvalp)) = Qnil;
1942
1993
  }
1943
- #line 1944 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1994
+ #line 1995 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1944
1995
  break;
1945
1996
 
1946
1997
 
1947
- #line 1948 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1998
+ #line 1999 "ext/slow_blink/ext_schema_parser/parser.c" /* glr.c:816 */
1948
1999
  default: break;
1949
2000
  }
1950
2001
 
@@ -1979,12 +2030,13 @@ yyuserMerge (int yyn, YYSTYPE* yy0, YYSTYPE* yy1)
1979
2030
  `-----------------------------------------------*/
1980
2031
 
1981
2032
  static void
1982
- yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, yyscan_t scanner, VALUE filename, VALUE *tree)
2033
+ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, yyscan_t scanner, VALUE filename, VALUE crefs, VALUE *tree)
1983
2034
  {
1984
2035
  YYUSE (yyvaluep);
1985
2036
  YYUSE (yylocationp);
1986
2037
  YYUSE (scanner);
1987
2038
  YYUSE (filename);
2039
+ YYUSE (crefs);
1988
2040
  YYUSE (tree);
1989
2041
  if (!yymsg)
1990
2042
  yymsg = "Deleting";
@@ -2003,11 +2055,11 @@ yyrhsLength (yyRuleNum yyrule)
2003
2055
  }
2004
2056
 
2005
2057
  static void
2006
- yydestroyGLRState (char const *yymsg, yyGLRState *yys, yyscan_t scanner, VALUE filename, VALUE *tree)
2058
+ yydestroyGLRState (char const *yymsg, yyGLRState *yys, yyscan_t scanner, VALUE filename, VALUE crefs, VALUE *tree)
2007
2059
  {
2008
2060
  if (yys->yyresolved)
2009
2061
  yydestruct (yymsg, yystos[yys->yylrState],
2010
- &yys->yysemantics.yysval, &yys->yyloc, scanner, filename, tree);
2062
+ &yys->yysemantics.yysval, &yys->yyloc, scanner, filename, crefs, tree);
2011
2063
  else
2012
2064
  {
2013
2065
  #if YYDEBUG
@@ -2029,7 +2081,7 @@ yydestroyGLRState (char const *yymsg, yyGLRState *yys, yyscan_t scanner, VALUE f
2029
2081
  for (yyrh = yyoption->yystate, yyn = yyrhsLength (yyoption->yyrule);
2030
2082
  yyn > 0;
2031
2083
  yyrh = yyrh->yypred, yyn -= 1)
2032
- yydestroyGLRState (yymsg, yyrh, scanner, filename, tree);
2084
+ yydestroyGLRState (yymsg, yyrh, scanner, filename, crefs, tree);
2033
2085
  }
2034
2086
  }
2035
2087
  }
@@ -2410,7 +2462,7 @@ do { \
2410
2462
 
2411
2463
  static inline void
2412
2464
  yy_reduce_print (int yynormal, yyGLRStackItem* yyvsp, size_t yyk,
2413
- yyRuleNum yyrule, yyscan_t scanner, VALUE filename, VALUE *tree)
2465
+ yyRuleNum yyrule, yyscan_t scanner, VALUE filename, VALUE crefs, VALUE *tree)
2414
2466
  {
2415
2467
  int yynrhs = yyrhsLength (yyrule);
2416
2468
  int yylow = 1;
@@ -2427,7 +2479,7 @@ yy_reduce_print (int yynormal, yyGLRStackItem* yyvsp, size_t yyk,
2427
2479
  yy_symbol_print (stderr,
2428
2480
  yystos[yyvsp[yyi - yynrhs + 1].yystate.yylrState],
2429
2481
  &yyvsp[yyi - yynrhs + 1].yystate.yysemantics.yysval
2430
- , &(((yyGLRStackItem const *)yyvsp)[YYFILL ((yyi + 1) - (yynrhs))].yystate.yyloc) , scanner, filename, tree);
2482
+ , &(((yyGLRStackItem const *)yyvsp)[YYFILL ((yyi + 1) - (yynrhs))].yystate.yyloc) , scanner, filename, crefs, tree);
2431
2483
  if (!yyvsp[yyi - yynrhs + 1].yystate.yyresolved)
2432
2484
  YYFPRINTF (stderr, " (unresolved)");
2433
2485
  YYFPRINTF (stderr, "\n");
@@ -2443,7 +2495,7 @@ yy_reduce_print (int yynormal, yyGLRStackItem* yyvsp, size_t yyk,
2443
2495
  * for userAction. */
2444
2496
  static inline YYRESULTTAG
2445
2497
  yydoAction (yyGLRStack* yystackp, size_t yyk, yyRuleNum yyrule,
2446
- YYSTYPE* yyvalp, YYLTYPE *yylocp, yyscan_t scanner, VALUE filename, VALUE *tree)
2498
+ YYSTYPE* yyvalp, YYLTYPE *yylocp, yyscan_t scanner, VALUE filename, VALUE crefs, VALUE *tree)
2447
2499
  {
2448
2500
  int yynrhs = yyrhsLength (yyrule);
2449
2501
 
@@ -2455,9 +2507,9 @@ yydoAction (yyGLRStack* yystackp, size_t yyk, yyRuleNum yyrule,
2455
2507
  yystackp->yynextFree -= yynrhs;
2456
2508
  yystackp->yyspaceLeft += yynrhs;
2457
2509
  yystackp->yytops.yystates[0] = & yystackp->yynextFree[-1].yystate;
2458
- YY_REDUCE_PRINT ((1, yyrhs, yyk, yyrule, scanner, filename, tree));
2510
+ YY_REDUCE_PRINT ((1, yyrhs, yyk, yyrule, scanner, filename, crefs, tree));
2459
2511
  return yyuserAction (yyrule, yynrhs, yyrhs, yystackp,
2460
- yyvalp, yylocp, scanner, filename, tree);
2512
+ yyvalp, yylocp, scanner, filename, crefs, tree);
2461
2513
  }
2462
2514
  else
2463
2515
  {
@@ -2476,9 +2528,9 @@ yydoAction (yyGLRStack* yystackp, size_t yyk, yyRuleNum yyrule,
2476
2528
  }
2477
2529
  yyupdateSplit (yystackp, yys);
2478
2530
  yystackp->yytops.yystates[yyk] = yys;
2479
- YY_REDUCE_PRINT ((0, yyrhsVals + YYMAXRHS + YYMAXLEFT - 1, yyk, yyrule, scanner, filename, tree));
2531
+ YY_REDUCE_PRINT ((0, yyrhsVals + YYMAXRHS + YYMAXLEFT - 1, yyk, yyrule, scanner, filename, crefs, tree));
2480
2532
  return yyuserAction (yyrule, yynrhs, yyrhsVals + YYMAXRHS + YYMAXLEFT - 1,
2481
- yystackp, yyvalp, yylocp, scanner, filename, tree);
2533
+ yystackp, yyvalp, yylocp, scanner, filename, crefs, tree);
2482
2534
  }
2483
2535
  }
2484
2536
 
@@ -2495,7 +2547,7 @@ yydoAction (yyGLRStack* yystackp, size_t yyk, yyRuleNum yyrule,
2495
2547
  */
2496
2548
  static inline YYRESULTTAG
2497
2549
  yyglrReduce (yyGLRStack* yystackp, size_t yyk, yyRuleNum yyrule,
2498
- yybool yyforceEval, yyscan_t scanner, VALUE filename, VALUE *tree)
2550
+ yybool yyforceEval, yyscan_t scanner, VALUE filename, VALUE crefs, VALUE *tree)
2499
2551
  {
2500
2552
  size_t yyposn = yystackp->yytops.yystates[yyk]->yyposn;
2501
2553
 
@@ -2504,7 +2556,7 @@ yyglrReduce (yyGLRStack* yystackp, size_t yyk, yyRuleNum yyrule,
2504
2556
  YYSTYPE yysval;
2505
2557
  YYLTYPE yyloc;
2506
2558
 
2507
- YYRESULTTAG yyflag = yydoAction (yystackp, yyk, yyrule, &yysval, &yyloc, scanner, filename, tree);
2559
+ YYRESULTTAG yyflag = yydoAction (yystackp, yyk, yyrule, &yysval, &yyloc, scanner, filename, crefs, tree);
2508
2560
  if (yyflag == yyerr && yystackp->yysplitPoint != YY_NULLPTR)
2509
2561
  {
2510
2562
  YYDPRINTF ((stderr, "Parse on stack %lu rejected by rule #%d.\n",
@@ -2705,7 +2757,7 @@ yypreference (yySemanticOption* y0, yySemanticOption* y1)
2705
2757
  }
2706
2758
 
2707
2759
  static YYRESULTTAG yyresolveValue (yyGLRState* yys,
2708
- yyGLRStack* yystackp, yyscan_t scanner, VALUE filename, VALUE *tree);
2760
+ yyGLRStack* yystackp, yyscan_t scanner, VALUE filename, VALUE crefs, VALUE *tree);
2709
2761
 
2710
2762
 
2711
2763
  /** Resolve the previous YYN states starting at and including state YYS
@@ -2715,14 +2767,14 @@ static YYRESULTTAG yyresolveValue (yyGLRState* yys,
2715
2767
  * data so that yydestroyGLRState can be invoked if necessary. */
2716
2768
  static YYRESULTTAG
2717
2769
  yyresolveStates (yyGLRState* yys, int yyn,
2718
- yyGLRStack* yystackp, yyscan_t scanner, VALUE filename, VALUE *tree)
2770
+ yyGLRStack* yystackp, yyscan_t scanner, VALUE filename, VALUE crefs, VALUE *tree)
2719
2771
  {
2720
2772
  if (0 < yyn)
2721
2773
  {
2722
2774
  YYASSERT (yys->yypred);
2723
- YYCHK (yyresolveStates (yys->yypred, yyn-1, yystackp, scanner, filename, tree));
2775
+ YYCHK (yyresolveStates (yys->yypred, yyn-1, yystackp, scanner, filename, crefs, tree));
2724
2776
  if (! yys->yyresolved)
2725
- YYCHK (yyresolveValue (yys, yystackp, scanner, filename, tree));
2777
+ YYCHK (yyresolveValue (yys, yystackp, scanner, filename, crefs, tree));
2726
2778
  }
2727
2779
  return yyok;
2728
2780
  }
@@ -2734,17 +2786,17 @@ yyresolveStates (yyGLRState* yys, int yyn,
2734
2786
  * semantic values if invoked). */
2735
2787
  static YYRESULTTAG
2736
2788
  yyresolveAction (yySemanticOption* yyopt, yyGLRStack* yystackp,
2737
- YYSTYPE* yyvalp, YYLTYPE *yylocp, yyscan_t scanner, VALUE filename, VALUE *tree)
2789
+ YYSTYPE* yyvalp, YYLTYPE *yylocp, yyscan_t scanner, VALUE filename, VALUE crefs, VALUE *tree)
2738
2790
  {
2739
2791
  yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1];
2740
2792
  int yynrhs = yyrhsLength (yyopt->yyrule);
2741
2793
  YYRESULTTAG yyflag =
2742
- yyresolveStates (yyopt->yystate, yynrhs, yystackp, scanner, filename, tree);
2794
+ yyresolveStates (yyopt->yystate, yynrhs, yystackp, scanner, filename, crefs, tree);
2743
2795
  if (yyflag != yyok)
2744
2796
  {
2745
2797
  yyGLRState *yys;
2746
2798
  for (yys = yyopt->yystate; yynrhs > 0; yys = yys->yypred, yynrhs -= 1)
2747
- yydestroyGLRState ("Cleanup: popping", yys, scanner, filename, tree);
2799
+ yydestroyGLRState ("Cleanup: popping", yys, scanner, filename, crefs, tree);
2748
2800
  return yyflag;
2749
2801
  }
2750
2802
 
@@ -2761,7 +2813,7 @@ yyresolveAction (yySemanticOption* yyopt, yyGLRStack* yystackp,
2761
2813
  yylloc = yyopt->yyloc;
2762
2814
  yyflag = yyuserAction (yyopt->yyrule, yynrhs,
2763
2815
  yyrhsVals + YYMAXRHS + YYMAXLEFT - 1,
2764
- yystackp, yyvalp, yylocp, scanner, filename, tree);
2816
+ yystackp, yyvalp, yylocp, scanner, filename, crefs, tree);
2765
2817
  yychar = yychar_current;
2766
2818
  yylval = yylval_current;
2767
2819
  yylloc = yylloc_current;
@@ -2819,7 +2871,7 @@ yyreportTree (yySemanticOption* yyx, int yyindent)
2819
2871
 
2820
2872
  static YYRESULTTAG
2821
2873
  yyreportAmbiguity (yySemanticOption* yyx0,
2822
- yySemanticOption* yyx1, YYLTYPE *yylocp, yyscan_t scanner, VALUE filename, VALUE *tree)
2874
+ yySemanticOption* yyx1, YYLTYPE *yylocp, yyscan_t scanner, VALUE filename, VALUE crefs, VALUE *tree)
2823
2875
  {
2824
2876
  YYUSE (yyx0);
2825
2877
  YYUSE (yyx1);
@@ -2833,7 +2885,7 @@ yyreportAmbiguity (yySemanticOption* yyx0,
2833
2885
  YYFPRINTF (stderr, "\n");
2834
2886
  #endif
2835
2887
 
2836
- yyerror (yylocp, scanner, filename, tree, YY_("syntax is ambiguous"));
2888
+ yyerror (yylocp, scanner, filename, crefs, tree, YY_("syntax is ambiguous"));
2837
2889
  return yyabort;
2838
2890
  }
2839
2891
 
@@ -2842,11 +2894,11 @@ yyreportAmbiguity (yySemanticOption* yyx0,
2842
2894
  * The first semantic option of a state is always chosen. */
2843
2895
  static void
2844
2896
  yyresolveLocations (yyGLRState* yys1, int yyn1,
2845
- yyGLRStack *yystackp, yyscan_t scanner, VALUE filename, VALUE *tree)
2897
+ yyGLRStack *yystackp, yyscan_t scanner, VALUE filename, VALUE crefs, VALUE *tree)
2846
2898
  {
2847
2899
  if (0 < yyn1)
2848
2900
  {
2849
- yyresolveLocations (yys1->yypred, yyn1 - 1, yystackp, scanner, filename, tree);
2901
+ yyresolveLocations (yys1->yypred, yyn1 - 1, yystackp, scanner, filename, crefs, tree);
2850
2902
  if (!yys1->yyresolved)
2851
2903
  {
2852
2904
  yyGLRStackItem yyrhsloc[1 + YYMAXRHS];
@@ -2859,7 +2911,7 @@ yyresolveLocations (yyGLRState* yys1, int yyn1,
2859
2911
  yyGLRState *yys;
2860
2912
  int yyn;
2861
2913
  yyresolveLocations (yyoption->yystate, yynrhs,
2862
- yystackp, scanner, filename, tree);
2914
+ yystackp, scanner, filename, crefs, tree);
2863
2915
  for (yys = yyoption->yystate, yyn = yynrhs;
2864
2916
  yyn > 0;
2865
2917
  yys = yys->yypred, yyn -= 1)
@@ -2901,7 +2953,7 @@ yyresolveLocations (yyGLRState* yys1, int yyn1,
2901
2953
  * result = yyok, YYS has been left with consistent data so that
2902
2954
  * yydestroyGLRState can be invoked if necessary. */
2903
2955
  static YYRESULTTAG
2904
- yyresolveValue (yyGLRState* yys, yyGLRStack* yystackp, yyscan_t scanner, VALUE filename, VALUE *tree)
2956
+ yyresolveValue (yyGLRState* yys, yyGLRStack* yystackp, yyscan_t scanner, VALUE filename, VALUE crefs, VALUE *tree)
2905
2957
  {
2906
2958
  yySemanticOption* yyoptionList = yys->yysemantics.yyfirstVal;
2907
2959
  yySemanticOption* yybest = yyoptionList;
@@ -2925,8 +2977,8 @@ yyresolveValue (yyGLRState* yys, yyGLRStack* yystackp, yyscan_t scanner, VALUE f
2925
2977
  switch (yypreference (yybest, yyp))
2926
2978
  {
2927
2979
  case 0:
2928
- yyresolveLocations (yys, 1, yystackp, scanner, filename, tree);
2929
- return yyreportAmbiguity (yybest, yyp, yylocp, scanner, filename, tree);
2980
+ yyresolveLocations (yys, 1, yystackp, scanner, filename, crefs, tree);
2981
+ return yyreportAmbiguity (yybest, yyp, yylocp, scanner, filename, crefs, tree);
2930
2982
  break;
2931
2983
  case 1:
2932
2984
  yymerge = yytrue;
@@ -2951,7 +3003,7 @@ yyresolveValue (yyGLRState* yys, yyGLRStack* yystackp, yyscan_t scanner, VALUE f
2951
3003
  {
2952
3004
  yySemanticOption* yyp;
2953
3005
  int yyprec = yydprec[yybest->yyrule];
2954
- yyflag = yyresolveAction (yybest, yystackp, &yysval, yylocp, scanner, filename, tree);
3006
+ yyflag = yyresolveAction (yybest, yystackp, &yysval, yylocp, scanner, filename, crefs, tree);
2955
3007
  if (yyflag == yyok)
2956
3008
  for (yyp = yybest->yynext; yyp != YY_NULLPTR; yyp = yyp->yynext)
2957
3009
  {
@@ -2959,12 +3011,12 @@ yyresolveValue (yyGLRState* yys, yyGLRStack* yystackp, yyscan_t scanner, VALUE f
2959
3011
  {
2960
3012
  YYSTYPE yysval_other;
2961
3013
  YYLTYPE yydummy;
2962
- yyflag = yyresolveAction (yyp, yystackp, &yysval_other, &yydummy, scanner, filename, tree);
3014
+ yyflag = yyresolveAction (yyp, yystackp, &yysval_other, &yydummy, scanner, filename, crefs, tree);
2963
3015
  if (yyflag != yyok)
2964
3016
  {
2965
3017
  yydestruct ("Cleanup: discarding incompletely merged value for",
2966
3018
  yystos[yys->yylrState],
2967
- &yysval, yylocp, scanner, filename, tree);
3019
+ &yysval, yylocp, scanner, filename, crefs, tree);
2968
3020
  break;
2969
3021
  }
2970
3022
  yyuserMerge (yymerger[yyp->yyrule], &yysval, &yysval_other);
@@ -2972,7 +3024,7 @@ yyresolveValue (yyGLRState* yys, yyGLRStack* yystackp, yyscan_t scanner, VALUE f
2972
3024
  }
2973
3025
  }
2974
3026
  else
2975
- yyflag = yyresolveAction (yybest, yystackp, &yysval, yylocp, scanner, filename, tree);
3027
+ yyflag = yyresolveAction (yybest, yystackp, &yysval, yylocp, scanner, filename, crefs, tree);
2976
3028
 
2977
3029
  if (yyflag == yyok)
2978
3030
  {
@@ -2985,7 +3037,7 @@ yyresolveValue (yyGLRState* yys, yyGLRStack* yystackp, yyscan_t scanner, VALUE f
2985
3037
  }
2986
3038
 
2987
3039
  static YYRESULTTAG
2988
- yyresolveStack (yyGLRStack* yystackp, yyscan_t scanner, VALUE filename, VALUE *tree)
3040
+ yyresolveStack (yyGLRStack* yystackp, yyscan_t scanner, VALUE filename, VALUE crefs, VALUE *tree)
2989
3041
  {
2990
3042
  if (yystackp->yysplitPoint != YY_NULLPTR)
2991
3043
  {
@@ -2997,7 +3049,7 @@ yyresolveStack (yyGLRStack* yystackp, yyscan_t scanner, VALUE filename, VALUE *t
2997
3049
  yys = yys->yypred, yyn += 1)
2998
3050
  continue;
2999
3051
  YYCHK (yyresolveStates (yystackp->yytops.yystates[0], yyn, yystackp
3000
- , scanner, filename, tree));
3052
+ , scanner, filename, crefs, tree));
3001
3053
  }
3002
3054
  return yyok;
3003
3055
  }
@@ -3034,7 +3086,7 @@ yycompressStack (yyGLRStack* yystackp)
3034
3086
 
3035
3087
  static YYRESULTTAG
3036
3088
  yyprocessOneStack (yyGLRStack* yystackp, size_t yyk,
3037
- size_t yyposn, YYLTYPE *yylocp, yyscan_t scanner, VALUE filename, VALUE *tree)
3089
+ size_t yyposn, YYLTYPE *yylocp, yyscan_t scanner, VALUE filename, VALUE crefs, VALUE *tree)
3038
3090
  {
3039
3091
  while (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
3040
3092
  {
@@ -3055,7 +3107,7 @@ yyprocessOneStack (yyGLRStack* yystackp, size_t yyk,
3055
3107
  yymarkStackDeleted (yystackp, yyk);
3056
3108
  return yyok;
3057
3109
  }
3058
- yyflag = yyglrReduce (yystackp, yyk, yyrule, yyimmediate[yyrule], scanner, filename, tree);
3110
+ yyflag = yyglrReduce (yystackp, yyk, yyrule, yyimmediate[yyrule], scanner, filename, crefs, tree);
3059
3111
  if (yyflag == yyerr)
3060
3112
  {
3061
3113
  YYDPRINTF ((stderr,
@@ -3078,7 +3130,7 @@ yyprocessOneStack (yyGLRStack* yystackp, size_t yyk,
3078
3130
  if (yychar == YYEMPTY)
3079
3131
  {
3080
3132
  YYDPRINTF ((stderr, "Reading a token: "));
3081
- yychar = yylex (&yylval, &yylloc, scanner);
3133
+ yychar = yylex (&yylval, &yylloc, scanner, crefs);
3082
3134
  }
3083
3135
 
3084
3136
  if (yychar <= YYEOF)
@@ -3103,10 +3155,10 @@ yyprocessOneStack (yyGLRStack* yystackp, size_t yyk,
3103
3155
  (unsigned long int) yyk));
3104
3156
  yyflag = yyglrReduce (yystackp, yynewStack,
3105
3157
  *yyconflicts,
3106
- yyimmediate[*yyconflicts], scanner, filename, tree);
3158
+ yyimmediate[*yyconflicts], scanner, filename, crefs, tree);
3107
3159
  if (yyflag == yyok)
3108
3160
  YYCHK (yyprocessOneStack (yystackp, yynewStack,
3109
- yyposn, yylocp, scanner, filename, tree));
3161
+ yyposn, yylocp, scanner, filename, crefs, tree));
3110
3162
  else if (yyflag == yyerr)
3111
3163
  {
3112
3164
  YYDPRINTF ((stderr, "Stack %lu dies.\n",
@@ -3130,7 +3182,7 @@ yyprocessOneStack (yyGLRStack* yystackp, size_t yyk,
3130
3182
  else
3131
3183
  {
3132
3184
  YYRESULTTAG yyflag = yyglrReduce (yystackp, yyk, -yyaction,
3133
- yyimmediate[-yyaction], scanner, filename, tree);
3185
+ yyimmediate[-yyaction], scanner, filename, crefs, tree);
3134
3186
  if (yyflag == yyerr)
3135
3187
  {
3136
3188
  YYDPRINTF ((stderr,
@@ -3149,12 +3201,12 @@ yyprocessOneStack (yyGLRStack* yystackp, size_t yyk,
3149
3201
  }
3150
3202
 
3151
3203
  static void
3152
- yyreportSyntaxError (yyGLRStack* yystackp, yyscan_t scanner, VALUE filename, VALUE *tree)
3204
+ yyreportSyntaxError (yyGLRStack* yystackp, yyscan_t scanner, VALUE filename, VALUE crefs, VALUE *tree)
3153
3205
  {
3154
3206
  if (yystackp->yyerrState != 0)
3155
3207
  return;
3156
3208
  #if ! YYERROR_VERBOSE
3157
- yyerror (&yylloc, scanner, filename, tree, YY_("syntax error"));
3209
+ yyerror (&yylloc, scanner, filename, crefs, tree, YY_("syntax error"));
3158
3210
  #else
3159
3211
  {
3160
3212
  yySymbol yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
@@ -3269,12 +3321,12 @@ yyreportSyntaxError (yyGLRStack* yystackp, yyscan_t scanner, VALUE filename, VAL
3269
3321
  yyformat++;
3270
3322
  }
3271
3323
  }
3272
- yyerror (&yylloc, scanner, filename, tree, yymsg);
3324
+ yyerror (&yylloc, scanner, filename, crefs, tree, yymsg);
3273
3325
  YYFREE (yymsg);
3274
3326
  }
3275
3327
  else
3276
3328
  {
3277
- yyerror (&yylloc, scanner, filename, tree, YY_("syntax error"));
3329
+ yyerror (&yylloc, scanner, filename, crefs, tree, YY_("syntax error"));
3278
3330
  yyMemoryExhausted (yystackp);
3279
3331
  }
3280
3332
  }
@@ -3286,7 +3338,7 @@ yyreportSyntaxError (yyGLRStack* yystackp, yyscan_t scanner, VALUE filename, VAL
3286
3338
  yylval, and yylloc are the syntactic category, semantic value, and location
3287
3339
  of the lookahead. */
3288
3340
  static void
3289
- yyrecoverSyntaxError (yyGLRStack* yystackp, yyscan_t scanner, VALUE filename, VALUE *tree)
3341
+ yyrecoverSyntaxError (yyGLRStack* yystackp, yyscan_t scanner, VALUE filename, VALUE crefs, VALUE *tree)
3290
3342
  {
3291
3343
  size_t yyk;
3292
3344
  int yyj;
@@ -3298,7 +3350,7 @@ yyrecoverSyntaxError (yyGLRStack* yystackp, yyscan_t scanner, VALUE filename, VA
3298
3350
  {
3299
3351
  yySymbol yytoken;
3300
3352
  if (yychar == YYEOF)
3301
- yyFail (yystackp, &yylloc, scanner, filename, tree, YY_NULLPTR);
3353
+ yyFail (yystackp, &yylloc, scanner, filename, crefs, tree, YY_NULLPTR);
3302
3354
  if (yychar != YYEMPTY)
3303
3355
  {
3304
3356
  /* We throw away the lookahead, but the error range
@@ -3310,10 +3362,10 @@ yyrecoverSyntaxError (yyGLRStack* yystackp, yyscan_t scanner, VALUE filename, VA
3310
3362
  YYLLOC_DEFAULT ((yys->yyloc), yyerror_range, 2);
3311
3363
  yytoken = YYTRANSLATE (yychar);
3312
3364
  yydestruct ("Error: discarding",
3313
- yytoken, &yylval, &yylloc, scanner, filename, tree);
3365
+ yytoken, &yylval, &yylloc, scanner, filename, crefs, tree);
3314
3366
  }
3315
3367
  YYDPRINTF ((stderr, "Reading a token: "));
3316
- yychar = yylex (&yylval, &yylloc, scanner);
3368
+ yychar = yylex (&yylval, &yylloc, scanner, crefs);
3317
3369
  if (yychar <= YYEOF)
3318
3370
  {
3319
3371
  yychar = yytoken = YYEOF;
@@ -3342,7 +3394,7 @@ yyrecoverSyntaxError (yyGLRStack* yystackp, yyscan_t scanner, VALUE filename, VA
3342
3394
  if (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
3343
3395
  break;
3344
3396
  if (yyk >= yystackp->yytops.yysize)
3345
- yyFail (yystackp, &yylloc, scanner, filename, tree, YY_NULLPTR);
3397
+ yyFail (yystackp, &yylloc, scanner, filename, crefs, tree, YY_NULLPTR);
3346
3398
  for (yyk += 1; yyk < yystackp->yytops.yysize; yyk += 1)
3347
3399
  yymarkStackDeleted (yystackp, yyk);
3348
3400
  yyremoveDeletes (yystackp);
@@ -3375,13 +3427,13 @@ yyrecoverSyntaxError (yyGLRStack* yystackp, yyscan_t scanner, VALUE filename, VA
3375
3427
  }
3376
3428
  yystackp->yyerror_range[1].yystate.yyloc = yys->yyloc;
3377
3429
  if (yys->yypred != YY_NULLPTR)
3378
- yydestroyGLRState ("Error: popping", yys, scanner, filename, tree);
3430
+ yydestroyGLRState ("Error: popping", yys, scanner, filename, crefs, tree);
3379
3431
  yystackp->yytops.yystates[0] = yys->yypred;
3380
3432
  yystackp->yynextFree -= 1;
3381
3433
  yystackp->yyspaceLeft += 1;
3382
3434
  }
3383
3435
  if (yystackp->yytops.yystates[0] == YY_NULLPTR)
3384
- yyFail (yystackp, &yylloc, scanner, filename, tree, YY_NULLPTR);
3436
+ yyFail (yystackp, &yylloc, scanner, filename, crefs, tree, YY_NULLPTR);
3385
3437
  }
3386
3438
 
3387
3439
  #define YYCHK1(YYE) \
@@ -3405,7 +3457,7 @@ yyrecoverSyntaxError (yyGLRStack* yystackp, yyscan_t scanner, VALUE filename, VA
3405
3457
  `----------*/
3406
3458
 
3407
3459
  int
3408
- yyparse (yyscan_t scanner, VALUE filename, VALUE *tree)
3460
+ yyparse (yyscan_t scanner, VALUE filename, VALUE crefs, VALUE *tree)
3409
3461
  {
3410
3462
  int yyresult;
3411
3463
  yyGLRStack yystack;
@@ -3452,10 +3504,10 @@ yyparse (yyscan_t scanner, VALUE filename, VALUE *tree)
3452
3504
  if (yyrule == 0)
3453
3505
  {
3454
3506
  yystack.yyerror_range[1].yystate.yyloc = yylloc;
3455
- yyreportSyntaxError (&yystack, scanner, filename, tree);
3507
+ yyreportSyntaxError (&yystack, scanner, filename, crefs, tree);
3456
3508
  goto yyuser_error;
3457
3509
  }
3458
- YYCHK1 (yyglrReduce (&yystack, 0, yyrule, yytrue, scanner, filename, tree));
3510
+ YYCHK1 (yyglrReduce (&yystack, 0, yyrule, yytrue, scanner, filename, crefs, tree));
3459
3511
  }
3460
3512
  else
3461
3513
  {
@@ -3463,7 +3515,7 @@ yyparse (yyscan_t scanner, VALUE filename, VALUE *tree)
3463
3515
  if (yychar == YYEMPTY)
3464
3516
  {
3465
3517
  YYDPRINTF ((stderr, "Reading a token: "));
3466
- yychar = yylex (&yylval, &yylloc, scanner);
3518
+ yychar = yylex (&yylval, &yylloc, scanner, crefs);
3467
3519
  }
3468
3520
 
3469
3521
  if (yychar <= YYEOF)
@@ -3492,11 +3544,11 @@ yyparse (yyscan_t scanner, VALUE filename, VALUE *tree)
3492
3544
  else if (yyisErrorAction (yyaction))
3493
3545
  {
3494
3546
  yystack.yyerror_range[1].yystate.yyloc = yylloc;
3495
- yyreportSyntaxError (&yystack, scanner, filename, tree);
3547
+ yyreportSyntaxError (&yystack, scanner, filename, crefs, tree);
3496
3548
  goto yyuser_error;
3497
3549
  }
3498
3550
  else
3499
- YYCHK1 (yyglrReduce (&yystack, 0, -yyaction, yytrue, scanner, filename, tree));
3551
+ YYCHK1 (yyglrReduce (&yystack, 0, -yyaction, yytrue, scanner, filename, crefs, tree));
3500
3552
  }
3501
3553
  }
3502
3554
 
@@ -3528,17 +3580,17 @@ yyparse (yyscan_t scanner, VALUE filename, VALUE *tree)
3528
3580
  on yylval in the event of memory exhaustion. */
3529
3581
 
3530
3582
  for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
3531
- YYCHK1 (yyprocessOneStack (&yystack, yys, yyposn, &yylloc, scanner, filename, tree));
3583
+ YYCHK1 (yyprocessOneStack (&yystack, yys, yyposn, &yylloc, scanner, filename, crefs, tree));
3532
3584
  yyremoveDeletes (&yystack);
3533
3585
  if (yystack.yytops.yysize == 0)
3534
3586
  {
3535
3587
  yyundeleteLastStack (&yystack);
3536
3588
  if (yystack.yytops.yysize == 0)
3537
- yyFail (&yystack, &yylloc, scanner, filename, tree, YY_("syntax error"));
3538
- YYCHK1 (yyresolveStack (&yystack, scanner, filename, tree));
3589
+ yyFail (&yystack, &yylloc, scanner, filename, crefs, tree, YY_("syntax error"));
3590
+ YYCHK1 (yyresolveStack (&yystack, scanner, filename, crefs, tree));
3539
3591
  YYDPRINTF ((stderr, "Returning to deterministic operation.\n"));
3540
3592
  yystack.yyerror_range[1].yystate.yyloc = yylloc;
3541
- yyreportSyntaxError (&yystack, scanner, filename, tree);
3593
+ yyreportSyntaxError (&yystack, scanner, filename, crefs, tree);
3542
3594
  goto yyuser_error;
3543
3595
  }
3544
3596
 
@@ -3569,7 +3621,7 @@ yyparse (yyscan_t scanner, VALUE filename, VALUE *tree)
3569
3621
 
3570
3622
  if (yystack.yytops.yysize == 1)
3571
3623
  {
3572
- YYCHK1 (yyresolveStack (&yystack, scanner, filename, tree));
3624
+ YYCHK1 (yyresolveStack (&yystack, scanner, filename, crefs, tree));
3573
3625
  YYDPRINTF ((stderr, "Returning to deterministic operation.\n"));
3574
3626
  yycompressStack (&yystack);
3575
3627
  break;
@@ -3577,7 +3629,7 @@ yyparse (yyscan_t scanner, VALUE filename, VALUE *tree)
3577
3629
  }
3578
3630
  continue;
3579
3631
  yyuser_error:
3580
- yyrecoverSyntaxError (&yystack, scanner, filename, tree);
3632
+ yyrecoverSyntaxError (&yystack, scanner, filename, crefs, tree);
3581
3633
  yyposn = yystack.yytops.yystates[0]->yyposn;
3582
3634
  }
3583
3635
 
@@ -3594,14 +3646,14 @@ yyparse (yyscan_t scanner, VALUE filename, VALUE *tree)
3594
3646
  goto yyreturn;
3595
3647
 
3596
3648
  yyexhaustedlab:
3597
- yyerror (&yylloc, scanner, filename, tree, YY_("memory exhausted"));
3649
+ yyerror (&yylloc, scanner, filename, crefs, tree, YY_("memory exhausted"));
3598
3650
  yyresult = 2;
3599
3651
  goto yyreturn;
3600
3652
 
3601
3653
  yyreturn:
3602
3654
  if (yychar != YYEMPTY)
3603
3655
  yydestruct ("Cleanup: discarding lookahead",
3604
- YYTRANSLATE (yychar), &yylval, &yylloc, scanner, filename, tree);
3656
+ YYTRANSLATE (yychar), &yylval, &yylloc, scanner, filename, crefs, tree);
3605
3657
 
3606
3658
  /* If the stack is well-formed, pop the stack until it is empty,
3607
3659
  destroying its entries as we go. But free the stack regardless
@@ -3621,7 +3673,7 @@ yyparse (yyscan_t scanner, VALUE filename, VALUE *tree)
3621
3673
  yyGLRState *yys = yystates[yyk];
3622
3674
  yystack.yyerror_range[1].yystate.yyloc = yys->yyloc;
3623
3675
  if (yys->yypred != YY_NULLPTR)
3624
- yydestroyGLRState ("Cleanup: popping", yys, scanner, filename, tree);
3676
+ yydestroyGLRState ("Cleanup: popping", yys, scanner, filename, crefs, tree);
3625
3677
  yystates[yyk] = yys->yypred;
3626
3678
  yystack.yynextFree -= 1;
3627
3679
  yystack.yyspaceLeft += 1;
@@ -3717,52 +3769,36 @@ yypdumpstack (yyGLRStack* yystackp)
3717
3769
 
3718
3770
 
3719
3771
 
3720
- #line 805 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:2584 */
3772
+ #line 861 "etc/slow_blink/ext_schema_parser/parser.y" /* glr.c:2584 */
3721
3773
 
3722
3774
 
3723
3775
  void Init_ext_schema_parser(void)
3724
3776
  {
3725
3777
  cSlowBlink = rb_define_module("SlowBlink");
3726
3778
  cParseError = rb_const_get(cSlowBlink, rb_intern("ParseError"));
3727
- rb_define_singleton_method(cSlowBlink, "parse_file_buffer", parseFileBuffer, -1);
3779
+ rb_define_private_method(rb_const_get(cSlowBlink, rb_intern("Schema")), "parse_file_buffer", parseFileBuffer, 2);
3728
3780
  }
3729
3781
 
3730
- void yyerror(YYLTYPE *locp, yyscan_t scanner, VALUE filename, VALUE *tree, char const *msg)
3782
+ void yyerror(YYLTYPE *locp, yyscan_t scanner, VALUE filename, VALUE crefs, VALUE *tree, char const *msg)
3731
3783
  {
3732
- VALUE message = newLocation(filename, locp);
3784
+ VALUE message = newLocation(filename, crefs, locp);
3733
3785
  rb_str_append(message, rb_str_new2(" error: "));
3734
3786
  rb_str_append(message, rb_funcall(rb_str_new2(msg), rb_intern("sub"), 2, rb_str_new2("UNKNOWN"), rb_str_new2(yyget_text(scanner))));
3735
3787
  rb_funcall(rb_stderr, rb_intern("puts"), 1, message);
3736
3788
  }
3737
3789
 
3738
- static VALUE parseFileBuffer(int argc, VALUE* argv, VALUE self)
3790
+ static VALUE parseFileBuffer(VALUE self, VALUE buffer, VALUE filename)
3739
3791
  {
3740
3792
  yyscan_t scanner;
3741
3793
  VALUE tree = Qnil;
3742
- VALUE buffer;
3743
- VALUE opts;
3744
- VALUE filename;
3794
+ VALUE crefs = rb_iv_get(self, "@crefs");
3745
3795
  int retval = 0;
3746
3796
 
3747
- rb_scan_args(argc, argv, "10:", &buffer, &opts);
3748
-
3749
- if(buffer == Qnil){
3750
- rb_raise(rb_eTypeError, "error: input must be a string");
3751
- }
3752
-
3753
- if(opts == Qnil){
3754
- opts = rb_hash_new();
3755
- }
3756
-
3757
- filename = rb_hash_aref(opts, ID2SYM(rb_intern("filename")));
3758
-
3759
- rb_gc_mark(filename);
3760
-
3761
3797
  if(yylex_init(&scanner) == 0){
3762
3798
 
3763
3799
  if(yy_scan_bytes((const char *)RSTRING_PTR(buffer), RSTRING_LEN(buffer), scanner)){
3764
3800
 
3765
- retval = yyparse(scanner, filename, &tree);
3801
+ retval = yyparse(scanner, filename, crefs, &tree);
3766
3802
  }
3767
3803
 
3768
3804
  yylex_destroy(scanner);
@@ -3783,9 +3819,10 @@ static VALUE parseFileBuffer(int argc, VALUE* argv, VALUE self)
3783
3819
  return tree;
3784
3820
  }
3785
3821
 
3786
- static VALUE newLocation(VALUE filename, const YYLTYPE *locp)
3822
+ static VALUE newLocation(VALUE filename, VALUE crefs, const YYLTYPE *locp)
3787
3823
  {
3788
3824
  VALUE retval = rb_str_new2("");
3825
+ rb_ary_push(crefs, retval);
3789
3826
 
3790
3827
  if(filename != Qnil){
3791
3828