slow_blink 0.0.8 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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