ndtypes 0.2.0dev5 → 0.2.0dev6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (130) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +12 -0
  3. data/Rakefile +8 -0
  4. data/ext/ruby_ndtypes/GPATH +0 -0
  5. data/ext/ruby_ndtypes/GRTAGS +0 -0
  6. data/ext/ruby_ndtypes/GTAGS +0 -0
  7. data/ext/ruby_ndtypes/extconf.rb +1 -1
  8. data/ext/ruby_ndtypes/include/ndtypes.h +231 -122
  9. data/ext/ruby_ndtypes/include/ruby_ndtypes.h +1 -1
  10. data/ext/ruby_ndtypes/lib/libndtypes.a +0 -0
  11. data/ext/ruby_ndtypes/lib/libndtypes.so.0.2.0dev3 +0 -0
  12. data/ext/ruby_ndtypes/ndtypes/Makefile +87 -0
  13. data/ext/ruby_ndtypes/ndtypes/config.h +68 -0
  14. data/ext/ruby_ndtypes/ndtypes/config.log +477 -0
  15. data/ext/ruby_ndtypes/ndtypes/config.status +1027 -0
  16. data/ext/ruby_ndtypes/ndtypes/doc/_static/style.css +7 -0
  17. data/ext/ruby_ndtypes/ndtypes/doc/_templates/layout.html +2 -0
  18. data/ext/ruby_ndtypes/ndtypes/doc/conf.py +40 -4
  19. data/ext/ruby_ndtypes/ndtypes/doc/images/xndlogo.png +0 -0
  20. data/ext/ruby_ndtypes/ndtypes/doc/ndtypes/types.rst +1 -1
  21. data/ext/ruby_ndtypes/ndtypes/doc/requirements.txt +2 -0
  22. data/ext/ruby_ndtypes/ndtypes/libndtypes/Makefile +287 -0
  23. data/ext/ruby_ndtypes/ndtypes/libndtypes/Makefile.in +20 -4
  24. data/ext/ruby_ndtypes/ndtypes/libndtypes/Makefile.vc +22 -3
  25. data/ext/ruby_ndtypes/ndtypes/libndtypes/alloc.c +1 -1
  26. data/ext/ruby_ndtypes/ndtypes/libndtypes/alloc.o +0 -0
  27. data/ext/ruby_ndtypes/ndtypes/libndtypes/attr.o +0 -0
  28. data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/Makefile +73 -0
  29. data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/bpgrammar.c +246 -229
  30. data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/bpgrammar.h +15 -11
  31. data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/bpgrammar.o +0 -0
  32. data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/bpgrammar.y +38 -28
  33. data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/bplexer.c +91 -91
  34. data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/bplexer.h +1 -1
  35. data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/bplexer.l +4 -3
  36. data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/bplexer.o +0 -0
  37. data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/export.c +8 -7
  38. data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/export.o +0 -0
  39. data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/import.c +2 -2
  40. data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/import.o +0 -0
  41. data/ext/ruby_ndtypes/ndtypes/libndtypes/context.o +0 -0
  42. data/ext/ruby_ndtypes/ndtypes/libndtypes/copy.c +263 -182
  43. data/ext/ruby_ndtypes/ndtypes/libndtypes/copy.o +0 -0
  44. data/ext/ruby_ndtypes/ndtypes/libndtypes/encodings.o +0 -0
  45. data/ext/ruby_ndtypes/ndtypes/libndtypes/equal.c +67 -7
  46. data/ext/ruby_ndtypes/ndtypes/libndtypes/equal.o +0 -0
  47. data/ext/ruby_ndtypes/ndtypes/libndtypes/grammar.c +1112 -1000
  48. data/ext/ruby_ndtypes/ndtypes/libndtypes/grammar.h +69 -58
  49. data/ext/ruby_ndtypes/ndtypes/libndtypes/grammar.o +0 -0
  50. data/ext/ruby_ndtypes/ndtypes/libndtypes/grammar.y +150 -99
  51. data/ext/ruby_ndtypes/ndtypes/libndtypes/io.c +185 -15
  52. data/ext/ruby_ndtypes/ndtypes/libndtypes/io.o +0 -0
  53. data/ext/ruby_ndtypes/ndtypes/libndtypes/lexer.c +301 -276
  54. data/ext/ruby_ndtypes/ndtypes/libndtypes/lexer.h +1 -1
  55. data/ext/ruby_ndtypes/ndtypes/libndtypes/lexer.l +9 -4
  56. data/ext/ruby_ndtypes/ndtypes/libndtypes/lexer.o +0 -0
  57. data/ext/ruby_ndtypes/ndtypes/libndtypes/libndtypes.a +0 -0
  58. data/ext/ruby_ndtypes/ndtypes/libndtypes/libndtypes.so +1 -0
  59. data/ext/ruby_ndtypes/ndtypes/libndtypes/libndtypes.so.0 +1 -0
  60. data/ext/ruby_ndtypes/ndtypes/libndtypes/libndtypes.so.0.2.0dev3 +0 -0
  61. data/ext/ruby_ndtypes/ndtypes/libndtypes/match.c +729 -228
  62. data/ext/ruby_ndtypes/ndtypes/libndtypes/match.o +0 -0
  63. data/ext/ruby_ndtypes/ndtypes/libndtypes/ndtypes.c +768 -403
  64. data/ext/ruby_ndtypes/ndtypes/libndtypes/ndtypes.h +1002 -0
  65. data/ext/ruby_ndtypes/ndtypes/libndtypes/ndtypes.h.in +231 -122
  66. data/ext/ruby_ndtypes/ndtypes/libndtypes/ndtypes.o +0 -0
  67. data/ext/ruby_ndtypes/ndtypes/libndtypes/parsefuncs.c +176 -84
  68. data/ext/ruby_ndtypes/ndtypes/libndtypes/parsefuncs.h +26 -14
  69. data/ext/ruby_ndtypes/ndtypes/libndtypes/parsefuncs.o +0 -0
  70. data/ext/ruby_ndtypes/ndtypes/libndtypes/parser.c +57 -35
  71. data/ext/ruby_ndtypes/ndtypes/libndtypes/parser.o +0 -0
  72. data/ext/ruby_ndtypes/ndtypes/libndtypes/primitive.c +420 -0
  73. data/ext/ruby_ndtypes/ndtypes/libndtypes/primitive.o +0 -0
  74. data/ext/ruby_ndtypes/ndtypes/libndtypes/seq.c +8 -8
  75. data/ext/ruby_ndtypes/ndtypes/libndtypes/seq.h +1 -1
  76. data/ext/ruby_ndtypes/ndtypes/libndtypes/seq.o +0 -0
  77. data/ext/ruby_ndtypes/ndtypes/libndtypes/serialize/Makefile +48 -0
  78. data/ext/ruby_ndtypes/ndtypes/libndtypes/serialize/deserialize.c +200 -116
  79. data/ext/ruby_ndtypes/ndtypes/libndtypes/serialize/deserialize.o +0 -0
  80. data/ext/ruby_ndtypes/ndtypes/libndtypes/serialize/serialize.c +46 -4
  81. data/ext/ruby_ndtypes/ndtypes/libndtypes/serialize/serialize.o +0 -0
  82. data/ext/ruby_ndtypes/ndtypes/libndtypes/substitute.c +58 -27
  83. data/ext/ruby_ndtypes/ndtypes/libndtypes/substitute.h +1 -1
  84. data/ext/ruby_ndtypes/ndtypes/libndtypes/substitute.o +0 -0
  85. data/ext/ruby_ndtypes/ndtypes/libndtypes/symtable.c +3 -5
  86. data/ext/ruby_ndtypes/ndtypes/libndtypes/symtable.h +12 -4
  87. data/ext/ruby_ndtypes/ndtypes/libndtypes/symtable.o +0 -0
  88. data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/Makefile +55 -0
  89. data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/Makefile.in +8 -8
  90. data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/Makefile.vc +5 -5
  91. data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/runtest.c +274 -172
  92. data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test.h +24 -4
  93. data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_array.c +2 -2
  94. data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_buffer.c +14 -14
  95. data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_match.c +32 -30
  96. data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_parse.c +37 -0
  97. data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_parse_error.c +36 -0
  98. data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_parse_roundtrip.c +16 -0
  99. data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_record.c +5 -5
  100. data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_typecheck.c +706 -253
  101. data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_unify.c +132 -0
  102. data/ext/ruby_ndtypes/ndtypes/libndtypes/unify.c +703 -0
  103. data/ext/ruby_ndtypes/ndtypes/libndtypes/unify.o +0 -0
  104. data/ext/ruby_ndtypes/ndtypes/libndtypes/util.c +335 -127
  105. data/ext/ruby_ndtypes/ndtypes/libndtypes/util.o +0 -0
  106. data/ext/ruby_ndtypes/ndtypes/libndtypes/values.c +2 -2
  107. data/ext/ruby_ndtypes/ndtypes/libndtypes/values.o +0 -0
  108. data/ext/ruby_ndtypes/ndtypes/python/ndt_randtype.py +88 -71
  109. data/ext/ruby_ndtypes/ndtypes/python/ndt_support.py +0 -1
  110. data/ext/ruby_ndtypes/ndtypes/python/ndtypes/__init__.py +10 -13
  111. data/ext/ruby_ndtypes/ndtypes/python/ndtypes/_ndtypes.c +395 -314
  112. data/ext/ruby_ndtypes/ndtypes/python/ndtypes/libndtypes.a +0 -0
  113. data/ext/ruby_ndtypes/ndtypes/python/ndtypes/libndtypes.so +1 -0
  114. data/ext/ruby_ndtypes/ndtypes/python/ndtypes/libndtypes.so.0 +1 -0
  115. data/ext/ruby_ndtypes/ndtypes/python/ndtypes/libndtypes.so.0.2.0dev3 +0 -0
  116. data/ext/ruby_ndtypes/ndtypes/python/ndtypes/ndtypes.h +1002 -0
  117. data/ext/ruby_ndtypes/ndtypes/python/ndtypes/pyndtypes.h +15 -33
  118. data/ext/ruby_ndtypes/ndtypes/python/test_ndtypes.py +340 -132
  119. data/ext/ruby_ndtypes/ndtypes/setup.py +11 -2
  120. data/ext/ruby_ndtypes/ruby_ndtypes.c +364 -241
  121. data/ext/ruby_ndtypes/ruby_ndtypes.h +1 -1
  122. data/ext/ruby_ndtypes/ruby_ndtypes_internal.h +0 -1
  123. data/lib/ndtypes.rb +11 -0
  124. data/lib/ndtypes/version.rb +2 -2
  125. data/lib/ruby_ndtypes.so +0 -0
  126. data/ndtypes.gemspec +3 -0
  127. data/spec/ndtypes_spec.rb +6 -0
  128. metadata +98 -4
  129. data/ext/ruby_ndtypes/gc_guard.c +0 -36
  130. data/ext/ruby_ndtypes/gc_guard.h +0 -12
@@ -58,6 +58,7 @@ ndt_type_keyword(const ndt_t *t)
58
58
  case FixedDim: return "fixed";
59
59
  case VarDim: return "var";
60
60
 
61
+ case Array: return "array";
61
62
  case Ref: return "ref";
62
63
 
63
64
  case ScalarKind: return "ScalarKind";
@@ -88,18 +89,20 @@ ndt_type_keyword(const ndt_t *t)
88
89
  case Uint64: return "uint64";
89
90
 
90
91
  case FloatKind: return "FloatKind";
92
+ case BFloat16: return "bfloat16";
91
93
  case Float16: return "float16";
92
94
  case Float32: return "float32";
93
95
  case Float64: return "float64";
94
96
 
95
97
  case ComplexKind: return "ComplexKind";
98
+ case BComplex32: return "bcomplex32";
96
99
  case Complex32: return "complex32";
97
100
  case Complex64: return "complex64";
98
101
  case Complex128: return "complex128";
99
102
 
100
103
  case Module: case Function:
101
- case SymbolicDim: case EllipsisDim:
102
- case Tuple: case Record:
104
+ case VarDimElem: case SymbolicDim: case EllipsisDim:
105
+ case Tuple: case Record: case Union:
103
106
  case Nominal: case Constr:
104
107
  case Typevar:
105
108
  return "not a keyword";
@@ -121,11 +124,14 @@ ndt_type_name(const ndt_t *t)
121
124
 
122
125
  case FixedDim: return "FixedDim";
123
126
  case VarDim: return "VarDim";
127
+ case VarDimElem: return "VarDimElem";
124
128
  case SymbolicDim: return "SymbolicDim";
125
129
  case EllipsisDim: return "EllipsisDim";
126
130
 
131
+ case Array: return "Array";
127
132
  case Tuple: return "Tuple";
128
133
  case Record: return "Record";
134
+ case Union: return "Union";
129
135
  case Ref: return "Ref";
130
136
  case Constr: return "Constr";
131
137
  case Nominal: return "Nominal";
@@ -158,11 +164,13 @@ ndt_type_name(const ndt_t *t)
158
164
  case Uint64: return "Uint64";
159
165
 
160
166
  case FloatKind: return "FloatKind";
167
+ case BFloat16: return "BFloat16";
161
168
  case Float16: return "Float16";
162
169
  case Float32: return "Float32";
163
170
  case Float64: return "Float64";
164
171
 
165
172
  case ComplexKind: return "ComplexKind";
173
+ case BComplex32: return "BComplex32";
166
174
  case Complex32: return "Complex32";
167
175
  case Complex64: return "Complex64";
168
176
  case Complex128: return "Complex128";
@@ -385,6 +393,39 @@ record_fields(buf_t *buf, const ndt_t *t, int d, ndt_context_t *ctx)
385
393
  return 0;
386
394
  }
387
395
 
396
+ static int
397
+ union_fields(buf_t *buf, const ndt_t *t, int d, ndt_context_t *ctx)
398
+ {
399
+ int64_t i;
400
+ int n;
401
+
402
+ assert(t->tag == Union);
403
+
404
+ for (i = 0; i < t->Union.ntags; i++) {
405
+ if (i >= 1) {
406
+ if (d >= 0) {
407
+ n = ndt_snprintf(ctx, buf, "|\n");
408
+ if (n < 0) return -1;
409
+
410
+ n = indent(ctx, buf, d);
411
+ if (n < 0) return -1;
412
+ }
413
+ else {
414
+ n = ndt_snprintf(ctx, buf, " | ");
415
+ if (n < 0) return -1;
416
+ }
417
+ }
418
+
419
+ n = ndt_snprintf(ctx, buf, "%s of ", t->Union.tags[i]);
420
+ if (n < 0) return -1;
421
+
422
+ n = datashape(buf, t->Union.types[i], d, ctx);
423
+ if (n < 0) return -1;
424
+ }
425
+
426
+ return 0;
427
+ }
428
+
388
429
  static int
389
430
  variadic_flag(buf_t *buf, enum ndt_variadic flag, ndt_context_t *ctx)
390
431
  {
@@ -440,7 +481,7 @@ value(buf_t *buf, const ndt_value_t *mem, ndt_context_t *ctx)
440
481
  }
441
482
 
442
483
  static int
443
- categorical(buf_t *buf, ndt_value_t *mem, int64_t ntypes, ndt_context_t *ctx)
484
+ categorical(buf_t *buf, const ndt_value_t *mem, int64_t ntypes, ndt_context_t *ctx)
444
485
  {
445
486
  int64_t i;
446
487
  int n;
@@ -540,6 +581,10 @@ datashape(buf_t *buf, const ndt_t *t, int d, ndt_context_t *ctx)
540
581
  return datashape(buf, t->VarDim.type, d, ctx);
541
582
  }
542
583
 
584
+ case VarDimElem: {
585
+ return datashape(buf, t->VarDimElem.type, d, ctx);
586
+ }
587
+
543
588
  case SymbolicDim: {
544
589
  n = ndt_snprintf(ctx, buf, "%s", t->SymbolicDim.tag==RequireC ? "C[" : "");
545
590
  if (n < 0) return -1;
@@ -563,8 +608,17 @@ datashape(buf_t *buf, const ndt_t *t, int d, ndt_context_t *ctx)
563
608
  n = ndt_snprintf(ctx, buf, "%s", t->EllipsisDim.tag==RequireF ? "F[" : "");
564
609
  if (n < 0) return -1;
565
610
 
566
- n = ndt_snprintf(ctx, buf, "%s... * ",
567
- t->EllipsisDim.name ? t->EllipsisDim.name : "");
611
+ if (t->EllipsisDim.name) {
612
+ if (strcmp(t->EllipsisDim.name, "array") == 0) {
613
+ n = ndt_snprintf(ctx, buf, "array... of ");
614
+ }
615
+ else {
616
+ n = ndt_snprintf(ctx, buf, "%s... * ", t->EllipsisDim.name);
617
+ }
618
+ }
619
+ else {
620
+ n = ndt_snprintf(ctx, buf, "... * ");
621
+ }
568
622
  if (n < 0) return -1;
569
623
 
570
624
  n = datashape(buf, t->EllipsisDim.type, d, ctx);
@@ -573,6 +627,13 @@ datashape(buf_t *buf, const ndt_t *t, int d, ndt_context_t *ctx)
573
627
  return ndt_snprintf(ctx, buf, "%s", t->EllipsisDim.tag==RequireNA ? "" : "]");
574
628
  }
575
629
 
630
+ case Array: {
631
+ n = ndt_snprintf(ctx, buf, "array of ");
632
+ if (n < 0) return -1;
633
+
634
+ return datashape(buf, t->Array.type, d, ctx);
635
+ }
636
+
576
637
  case Tuple: {
577
638
  n = ndt_snprintf(ctx, buf, "(");
578
639
  if (n < 0) return -1;
@@ -626,6 +687,32 @@ datashape(buf_t *buf, const ndt_t *t, int d, ndt_context_t *ctx)
626
687
  return ndt_snprintf(ctx, buf, "}");
627
688
  }
628
689
 
690
+ case Union: {
691
+ assert(t->Union.ntags > 0);
692
+
693
+ n = ndt_snprintf(ctx, buf, "[");
694
+ if (n < 0) return -1;
695
+
696
+ if (d >= 0) {
697
+ n = ndt_snprintf(ctx, buf, "\n");
698
+ if (n < 0) return -1;
699
+ n = indent(ctx, buf, d+2);
700
+ if (n < 0) return -1;
701
+ }
702
+
703
+ n = union_fields(buf, t, d+2, ctx);
704
+ if (n < 0) return -1;
705
+
706
+ if (d >= 0) {
707
+ n = ndt_snprintf(ctx, buf, "\n");
708
+ if (n < 0) return -1;
709
+ n = indent(ctx, buf, d);
710
+ if (n < 0) return -1;
711
+ }
712
+
713
+ return ndt_snprintf(ctx, buf, "]");
714
+ }
715
+
629
716
  case Ref: {
630
717
  n = ndt_snprintf(ctx, buf, "ref(");
631
718
  if (n < 0) return -1;
@@ -709,9 +796,9 @@ datashape(buf_t *buf, const ndt_t *t, int d, ndt_context_t *ctx)
709
796
  case UnsignedKind:
710
797
  case Uint8: case Uint16: case Uint32: case Uint64:
711
798
  case FloatKind:
712
- case Float16: case Float32: case Float64:
799
+ case BFloat16: case Float16: case Float32: case Float64:
713
800
  case ComplexKind:
714
- case Complex32: case Complex64: case Complex128:
801
+ case BComplex32: case Complex32: case Complex64: case Complex128:
715
802
  case FixedStringKind:
716
803
  case FixedBytesKind:
717
804
  case String:
@@ -938,6 +1025,42 @@ ast_record_fields(buf_t *buf, const ndt_t *t, int d, ndt_context_t *ctx)
938
1025
  return 0;
939
1026
  }
940
1027
 
1028
+ static int
1029
+ ast_union_fields(buf_t *buf, const ndt_t *t, int d, ndt_context_t *ctx)
1030
+ {
1031
+ int64_t i;
1032
+ int n;
1033
+
1034
+ assert(t->tag == Union);
1035
+
1036
+ for (i = 0; i < t->Union.ntags; i++) {
1037
+ if (i >= 1) {
1038
+ n = ndt_snprintf(ctx, buf, ",\n");
1039
+ if (n < 0) return -1;
1040
+ }
1041
+
1042
+ n = ndt_snprintf_d(ctx, buf, d, "UnionMember(\n");
1043
+ if (n < 0) return -1;
1044
+
1045
+ n = ndt_snprintf_d(ctx, buf, d+2, "tag='%s',\n", t->Union.tags[i]);
1046
+ if (n < 0) return -1;
1047
+
1048
+ n = ndt_snprintf_d(ctx, buf, d+2, "type=");
1049
+ if (n < 0) return -1;
1050
+
1051
+ n = ast_datashape(buf, t->Union.types[i], d+5+2, 1, ctx);
1052
+ if (n < 0) return -1;
1053
+
1054
+ n = ndt_snprintf(ctx, buf, "%s\n", ndt_is_concrete(t) ? "," : "");
1055
+ if (n < 0) return -1;
1056
+
1057
+ n = ndt_snprintf_d(ctx, buf, d, ")");
1058
+ if (n < 0) return -1;
1059
+ }
1060
+
1061
+ return 0;
1062
+ }
1063
+
941
1064
  static int
942
1065
  ast_variadic_flag(buf_t *buf, enum ndt_variadic flag, int d, ndt_context_t *ctx)
943
1066
  {
@@ -983,7 +1106,7 @@ ast_value(buf_t *buf, const ndt_value_t *mem, ndt_context_t *ctx)
983
1106
  }
984
1107
 
985
1108
  static int
986
- ast_categorical(buf_t *buf, ndt_value_t *mem, int64_t ntypes, ndt_context_t *ctx)
1109
+ ast_categorical(buf_t *buf, const ndt_value_t *mem, int64_t ntypes, ndt_context_t *ctx)
987
1110
  {
988
1111
  int64_t i;
989
1112
  int n;
@@ -1066,10 +1189,11 @@ ast_datashape(buf_t *buf, const ndt_t *t, int d, int cont, ndt_context_t *ctx)
1066
1189
  return ndt_snprintf_d(ctx, buf, d, ")");
1067
1190
  }
1068
1191
 
1069
- case VarDim: {
1192
+ case VarDim: case VarDimElem: {
1070
1193
  int i;
1071
1194
 
1072
- n = ndt_snprintf_d(ctx, buf, cont ? 0 : d, "VarDim(\n");
1195
+ n = ndt_snprintf_d(ctx, buf, cont ? 0 : d, "%s(\n",
1196
+ ndt_type_name(t));
1073
1197
  if (n < 0) return -1;
1074
1198
 
1075
1199
  n = ast_datashape(buf, t->VarDim.type, d+2, 0, ctx);
@@ -1079,13 +1203,19 @@ ast_datashape(buf_t *buf, const ndt_t *t, int d, int cont, ndt_context_t *ctx)
1079
1203
  if (n < 0) return -1;
1080
1204
 
1081
1205
  if (ndt_is_concrete(t)) {
1206
+ if (t->tag == VarDimElem) {
1207
+ n = ndt_snprintf_d(ctx, buf, d+2, "index=%" PRIi64 ",\n",
1208
+ t->VarDimElem.index);
1209
+ if (n < 0) return -1;
1210
+ }
1211
+
1082
1212
  n = ndt_snprintf_d(ctx, buf, d+2, "offsets=[");
1083
1213
  if (n < 0) return -1;
1084
1214
 
1085
- for (i = 0; i < t->Concrete.VarDim.noffsets; i++) {
1215
+ for (i = 0; i < t->Concrete.VarDim.offsets->n; i++) {
1086
1216
  n = ndt_snprintf(ctx, buf, "%" PRIi32 "%s",
1087
- t->Concrete.VarDim.offsets[i],
1088
- i==t->Concrete.VarDim.noffsets-1 ? "" : ", ");
1217
+ t->Concrete.VarDim.offsets->v[i],
1218
+ i==t->Concrete.VarDim.offsets->n-1 ? "" : ", ");
1089
1219
  if (n < 0) return -1;
1090
1220
  }
1091
1221
 
@@ -1155,6 +1285,28 @@ ast_datashape(buf_t *buf, const ndt_t *t, int d, int cont, ndt_context_t *ctx)
1155
1285
  return ndt_snprintf_d(ctx, buf, d, ")");
1156
1286
  }
1157
1287
 
1288
+ case Array: {
1289
+ n = ndt_snprintf_d(ctx, buf, cont ? 0 : d, "Array(\n");
1290
+ if (n < 0) return -1;
1291
+
1292
+ n = ndt_snprintf_d(ctx, buf, d+2, "itemsize=%" PRIi64 ",\n",
1293
+ t->Array.itemsize);
1294
+
1295
+ n = ndt_snprintf_d(ctx, buf, d+2, "type=");
1296
+ if (n < 0) return -1;
1297
+
1298
+ n = ast_datashape(buf, t->Array.type, d+5+2, 1, ctx);
1299
+ if (n < 0) return -1;
1300
+
1301
+ n = ndt_snprintf(ctx, buf, ",\n");
1302
+ if (n < 0) return -1;
1303
+
1304
+ n = ast_common_attributes_with_newline(buf, t, d+2, ctx);
1305
+ if (n < 0) return -1;
1306
+
1307
+ return ndt_snprintf_d(ctx, buf, d, ")");
1308
+ }
1309
+
1158
1310
  case Tuple: {
1159
1311
  n = ndt_snprintf_d(ctx, buf, cont ? 0 : d, "Tuple(\n");
1160
1312
  if (n < 0) return -1;
@@ -1205,6 +1357,24 @@ ast_datashape(buf_t *buf, const ndt_t *t, int d, int cont, ndt_context_t *ctx)
1205
1357
  return ndt_snprintf_d(ctx, buf, d, ")");
1206
1358
  }
1207
1359
 
1360
+ case Union: {
1361
+ assert(t->Union.ntags > 0);
1362
+
1363
+ n = ndt_snprintf_d(ctx, buf, cont ? 0 : d, "Union(\n");
1364
+ if (n < 0) return -1;
1365
+
1366
+ n = ast_union_fields(buf, t, d+2, ctx);
1367
+ if (n < 0) return -1;
1368
+
1369
+ n = ndt_snprintf(ctx, buf, ",\n");
1370
+ if (n < 0) return -1;
1371
+
1372
+ n = ast_common_attributes_with_newline(buf, t, d+2, ctx);
1373
+ if (n < 0) return -1;
1374
+
1375
+ return ndt_snprintf_d(ctx, buf, d, ")");
1376
+ }
1377
+
1208
1378
  case Ref: {
1209
1379
  n = ndt_snprintf_d(ctx, buf, cont ? 0 : d, "Ref(\n");
1210
1380
  if (n < 0) return -1;
@@ -1362,9 +1532,9 @@ ast_datashape(buf_t *buf, const ndt_t *t, int d, int cont, ndt_context_t *ctx)
1362
1532
  case UnsignedKind:
1363
1533
  case Uint8: case Uint16: case Uint32: case Uint64:
1364
1534
  case FloatKind:
1365
- case Float16: case Float32: case Float64:
1535
+ case BFloat16: case Float16: case Float32: case Float64:
1366
1536
  case ComplexKind:
1367
- case Complex32: case Complex64: case Complex128:
1537
+ case BComplex32: case Complex32: case Complex64: case Complex128:
1368
1538
  case FixedStringKind: case FixedBytesKind:
1369
1539
  case String:
1370
1540
  n = ndt_snprintf_d(ctx, buf, cont ? 0 : d, "%s(", ndt_type_name(t));
@@ -592,8 +592,8 @@ static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner );
592
592
  yyg->yy_hold_char = *yy_cp; \
593
593
  *yy_cp = '\0'; \
594
594
  yyg->yy_c_buf_p = yy_cp;
595
- #define YY_NUM_RULES 67
596
- #define YY_END_OF_BUFFER 68
595
+ #define YY_NUM_RULES 71
596
+ #define YY_END_OF_BUFFER 72
597
597
  /* This struct is not used in this scanner,
598
598
  but its presence is necessary. */
599
599
  struct yy_trans_info
@@ -601,33 +601,34 @@ struct yy_trans_info
601
601
  flex_int32_t yy_verify;
602
602
  flex_int32_t yy_nxt;
603
603
  };
604
- static const flex_int16_t yy_accept[227] =
604
+ static const flex_int16_t yy_accept[237] =
605
605
  { 0,
606
- 0, 0, 68, 66, 64, 63, 63, 52, 66, 65,
607
- 66, 53, 66, 43, 44, 49, 41, 66, 66, 61,
608
- 61, 42, 55, 50, 56, 51, 58, 58, 58, 58,
609
- 58, 58, 58, 47, 48, 59, 57, 57, 57, 57,
610
- 57, 57, 57, 57, 57, 45, 54, 46, 0, 60,
611
- 0, 65, 0, 0, 0, 0, 61, 61, 40, 0,
612
- 62, 62, 61, 0, 0, 0, 0, 61, 58, 58,
613
- 58, 58, 58, 35, 58, 58, 58, 59, 57, 57,
614
- 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
615
- 57, 57, 57, 0, 39, 0, 62, 61, 61, 2,
616
-
617
- 58, 58, 58, 58, 58, 58, 57, 57, 57, 57,
618
- 57, 57, 57, 57, 36, 57, 57, 57, 38, 57,
619
- 0, 58, 58, 58, 58, 58, 58, 5, 57, 57,
620
- 27, 57, 57, 57, 57, 57, 57, 7, 57, 57,
621
- 57, 57, 4, 1, 58, 58, 16, 58, 58, 58,
622
- 29, 57, 57, 37, 57, 8, 9, 10, 57, 57,
623
- 57, 57, 57, 57, 12, 57, 58, 58, 58, 3,
624
- 6, 58, 57, 57, 57, 57, 57, 57, 24, 26,
625
- 28, 13, 14, 15, 57, 20, 58, 58, 58, 57,
626
- 57, 57, 57, 17, 18, 19, 25, 58, 58, 11,
627
-
628
- 57, 57, 57, 57, 57, 57, 58, 58, 57, 57,
629
- 21, 22, 57, 57, 32, 58, 57, 23, 57, 57,
630
- 30, 34, 33, 57, 31, 0
606
+ 0, 0, 72, 70, 68, 67, 67, 56, 70, 69,
607
+ 70, 57, 70, 47, 48, 53, 45, 70, 70, 65,
608
+ 65, 46, 59, 54, 60, 55, 62, 62, 62, 62,
609
+ 62, 51, 52, 63, 61, 61, 61, 61, 61, 61,
610
+ 61, 61, 61, 61, 61, 49, 58, 50, 0, 64,
611
+ 0, 69, 0, 0, 0, 0, 65, 65, 44, 0,
612
+ 66, 66, 65, 0, 0, 0, 0, 65, 62, 62,
613
+ 62, 37, 62, 63, 61, 61, 61, 61, 61, 61,
614
+ 61, 61, 61, 61, 61, 61, 42, 61, 61, 61,
615
+ 61, 61, 61, 61, 0, 43, 0, 66, 65, 65,
616
+
617
+ 2, 62, 62, 61, 61, 61, 61, 61, 61, 61,
618
+ 61, 61, 61, 61, 38, 61, 61, 61, 61, 61,
619
+ 40, 61, 0, 62, 62, 61, 61, 61, 5, 61,
620
+ 61, 29, 61, 61, 61, 61, 61, 61, 7, 61,
621
+ 61, 61, 61, 61, 61, 4, 1, 62, 62, 41,
622
+ 61, 61, 31, 61, 61, 39, 16, 8, 9, 10,
623
+ 61, 61, 61, 61, 61, 61, 61, 12, 61, 61,
624
+ 62, 62, 3, 61, 61, 61, 61, 61, 61, 61,
625
+ 61, 26, 6, 28, 30, 13, 14, 15, 61, 61,
626
+ 62, 62, 61, 61, 61, 21, 61, 61, 18, 19,
627
+
628
+ 20, 27, 61, 62, 62, 61, 17, 61, 61, 61,
629
+ 61, 61, 61, 11, 62, 62, 61, 61, 61, 23,
630
+ 24, 61, 61, 34, 62, 22, 61, 25, 61, 61,
631
+ 32, 36, 35, 61, 33, 0
631
632
  } ;
632
633
 
633
634
  static const YY_CHAR yy_ec[256] =
@@ -638,14 +639,14 @@ static const YY_CHAR yy_ec[256] =
638
639
  1, 2, 5, 6, 7, 1, 8, 9, 10, 11,
639
640
  12, 13, 14, 15, 16, 17, 1, 18, 19, 20,
640
641
  21, 22, 23, 24, 23, 25, 26, 27, 1, 28,
641
- 29, 30, 31, 1, 32, 33, 34, 35, 36, 37,
642
- 38, 38, 38, 38, 38, 38, 38, 39, 40, 38,
643
- 38, 38, 41, 38, 42, 38, 38, 43, 38, 38,
644
- 44, 45, 46, 1, 47, 1, 48, 49, 50, 51,
645
-
646
- 52, 53, 54, 55, 56, 57, 57, 58, 59, 60,
647
- 61, 62, 57, 63, 64, 65, 66, 67, 57, 68,
648
- 69, 70, 71, 72, 73, 1, 1, 1, 1, 1,
642
+ 29, 30, 31, 1, 32, 33, 34, 34, 35, 36,
643
+ 37, 37, 37, 37, 37, 37, 37, 38, 39, 37,
644
+ 37, 37, 40, 37, 37, 37, 37, 41, 37, 37,
645
+ 42, 43, 44, 1, 45, 1, 46, 47, 48, 49,
646
+
647
+ 50, 51, 52, 53, 54, 55, 55, 56, 57, 58,
648
+ 59, 60, 55, 61, 62, 63, 64, 65, 55, 66,
649
+ 67, 68, 69, 70, 71, 1, 1, 1, 1, 1,
649
650
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
650
651
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
651
652
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -662,132 +663,135 @@ static const YY_CHAR yy_ec[256] =
662
663
  1, 1, 1, 1, 1
663
664
  } ;
664
665
 
665
- static const YY_CHAR yy_meta[74] =
666
+ static const YY_CHAR yy_meta[72] =
666
667
  { 0,
667
668
  1, 1, 2, 3, 1, 1, 1, 1, 1, 1,
668
669
  1, 1, 1, 4, 1, 4, 5, 6, 6, 6,
669
670
  6, 6, 6, 6, 6, 6, 1, 1, 1, 7,
670
- 1, 8, 8, 8, 8, 9, 8, 10, 10, 10,
671
- 10, 10, 10, 1, 1, 1, 10, 8, 8, 8,
672
- 8, 9, 8, 10, 10, 10, 10, 10, 10, 10,
673
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
674
- 1, 1, 1
671
+ 1, 8, 8, 8, 9, 8, 10, 10, 10, 10,
672
+ 10, 1, 1, 1, 10, 8, 8, 8, 8, 9,
673
+ 8, 10, 10, 10, 10, 10, 10, 10, 10, 10,
674
+ 10, 10, 10, 10, 10, 10, 10, 10, 1, 1,
675
+ 1
675
676
  } ;
676
677
 
677
- static const flex_int16_t yy_base[238] =
678
+ static const flex_int16_t yy_base[248] =
678
679
  { 0,
679
- 0, 0, 371, 372, 372, 372, 372, 372, 68, 0,
680
- 320, 372, 65, 372, 372, 372, 372, 59, 61, 97,
681
- 73, 372, 372, 372, 372, 372, 309, 0, 307, 35,
682
- 335, 38, 306, 372, 372, 0, 0, 31, 47, 40,
683
- 305, 312, 41, 307, 51, 372, 372, 372, 97, 372,
684
- 0, 0, 301, 91, 0, 148, 0, 94, 372, 344,
685
- 91, 92, 86, 342, 91, 157, 0, 0, 0, 290,
686
- 299, 289, 295, 0, 307, 300, 289, 0, 0, 291,
687
- 286, 285, 301, 289, 279, 285, 280, 291, 273, 279,
688
- 281, 277, 283, 287, 372, 164, 173, 182, 0, 0,
689
-
690
- 275, 284, 287, 276, 273, 276, 273, 278, 277, 265,
691
- 265, 274, 277, 188, 0, 272, 267, 257, 0, 268,
692
- 264, 255, 261, 242, 254, 245, 240, 0, 229, 225,
693
- 0, 212, 218, 194, 232, 235, 232, 0, 188, 205,
694
- 191, 195, 0, 372, 197, 91, 0, 185, 196, 186,
695
- 0, 184, 192, 196, 129, 0, 0, 0, 179, 176,
696
- 186, 215, 218, 215, 0, 171, 167, 165, 168, 0,
697
- 0, 180, 168, 162, 92, 205, 208, 205, 0, 0,
698
- 0, 0, 0, 0, 163, 0, 160, 161, 172, 166,
699
- 136, 152, 153, 0, 0, 0, 0, 165, 159, 0,
700
-
701
- 161, 190, 188, 142, 98, 99, 97, 99, 104, 126,
702
- 0, 0, 93, 83, 0, 84, 77, 0, 70, 71,
703
- 0, 0, 0, 50, 0, 372, 257, 267, 277, 283,
680
+ 0, 0, 379, 380, 380, 380, 380, 380, 66, 0,
681
+ 330, 380, 63, 380, 380, 380, 380, 57, 59, 93,
682
+ 72, 380, 380, 380, 380, 380, 319, 0, 322, 343,
683
+ 326, 380, 380, 0, 312, 72, 40, 0, 34, 314,
684
+ 320, 320, 37, 38, 49, 380, 380, 380, 92, 380,
685
+ 0, 0, 310, 84, 0, 142, 0, 86, 380, 351,
686
+ 90, 91, 110, 349, 88, 159, 0, 0, 0, 299,
687
+ 299, 0, 318, 0, 0, 302, 303, 305, 301, 296,
688
+ 295, 311, 299, 289, 295, 290, 0, 301, 77, 290,
689
+ 292, 287, 287, 293, 297, 380, 166, 175, 184, 0,
690
+
691
+ 0, 295, 288, 297, 285, 282, 284, 289, 288, 276,
692
+ 276, 285, 288, 190, 0, 275, 282, 277, 267, 275,
693
+ 0, 279, 277, 277, 279, 257, 263, 276, 0, 257,
694
+ 264, 0, 257, 263, 244, 278, 277, 272, 0, 230,
695
+ 229, 225, 211, 197, 207, 0, 380, 97, 195, 0,
696
+ 199, 191, 0, 194, 202, 206, 123, 0, 0, 0,
697
+ 188, 199, 184, 194, 221, 224, 221, 0, 179, 183,
698
+ 173, 176, 0, 188, 218, 175, 169, 86, 210, 213,
699
+ 210, 0, 0, 0, 0, 0, 0, 0, 170, 180,
700
+ 166, 167, 161, 202, 171, 134, 157, 160, 0, 0,
701
+
702
+ 0, 0, 171, 169, 163, 192, 0, 164, 190, 155,
703
+ 152, 110, 111, 0, 109, 112, 137, 110, 129, 0,
704
+ 0, 100, 92, 0, 86, 0, 68, 0, 43, 43,
705
+ 0, 0, 0, 45, 0, 380, 257, 267, 277, 283,
704
706
  286, 290, 295, 300, 305, 311, 312
705
707
  } ;
706
708
 
707
- static const flex_int16_t yy_def[238] =
709
+ static const flex_int16_t yy_def[248] =
708
710
  { 0,
709
- 226, 1, 226, 226, 226, 226, 226, 226, 227, 228,
710
- 226, 226, 229, 226, 226, 226, 226, 230, 226, 226,
711
- 231, 226, 226, 226, 226, 226, 232, 232, 232, 232,
712
- 232, 232, 232, 226, 226, 233, 234, 234, 234, 234,
713
- 234, 234, 234, 234, 234, 226, 226, 226, 227, 226,
714
- 227, 228, 226, 229, 229, 226, 20, 231, 226, 226,
715
- 235, 235, 20, 63, 236, 226, 237, 58, 232, 232,
716
- 232, 232, 232, 232, 232, 232, 232, 233, 234, 234,
717
- 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
718
- 234, 234, 234, 226, 226, 226, 226, 226, 237, 232,
719
-
720
- 232, 232, 232, 232, 232, 232, 234, 234, 234, 234,
721
- 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
722
- 226, 232, 232, 232, 232, 232, 232, 234, 234, 234,
723
- 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
724
- 234, 234, 234, 226, 232, 232, 232, 232, 232, 232,
725
- 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
726
- 234, 234, 234, 234, 234, 234, 232, 232, 232, 232,
727
- 232, 232, 234, 234, 234, 234, 234, 234, 234, 234,
728
- 234, 234, 234, 234, 234, 232, 232, 232, 232, 234,
729
- 234, 234, 234, 234, 234, 234, 234, 232, 232, 232,
730
-
731
- 234, 234, 234, 234, 234, 234, 232, 232, 234, 234,
732
- 234, 234, 234, 234, 232, 232, 234, 234, 234, 234,
733
- 232, 234, 234, 234, 234, 0, 226, 226, 226, 226,
734
- 226, 226, 226, 226, 226, 226, 226
711
+ 236, 1, 236, 236, 236, 236, 236, 236, 237, 238,
712
+ 236, 236, 239, 236, 236, 236, 236, 240, 236, 236,
713
+ 241, 236, 236, 236, 236, 236, 242, 242, 242, 242,
714
+ 242, 236, 236, 243, 244, 244, 244, 244, 244, 244,
715
+ 244, 244, 244, 244, 244, 236, 236, 236, 237, 236,
716
+ 237, 238, 236, 239, 239, 236, 20, 241, 236, 236,
717
+ 245, 245, 20, 63, 246, 236, 247, 58, 242, 242,
718
+ 242, 242, 242, 243, 244, 244, 244, 244, 244, 244,
719
+ 244, 244, 244, 244, 244, 244, 244, 244, 244, 244,
720
+ 244, 244, 244, 244, 236, 236, 236, 236, 236, 247,
721
+
722
+ 242, 242, 242, 244, 244, 244, 244, 244, 244, 244,
723
+ 244, 244, 244, 244, 244, 244, 244, 244, 244, 244,
724
+ 244, 244, 236, 242, 242, 244, 244, 244, 244, 244,
725
+ 244, 244, 244, 244, 244, 244, 244, 244, 244, 244,
726
+ 244, 244, 244, 244, 244, 244, 236, 242, 242, 244,
727
+ 244, 244, 244, 244, 244, 244, 244, 244, 244, 244,
728
+ 244, 244, 244, 244, 244, 244, 244, 244, 244, 244,
729
+ 242, 242, 242, 244, 244, 244, 244, 244, 244, 244,
730
+ 244, 244, 244, 244, 244, 244, 244, 244, 244, 244,
731
+ 242, 242, 244, 244, 244, 244, 244, 244, 244, 244,
732
+
733
+ 244, 244, 244, 242, 242, 244, 244, 244, 244, 244,
734
+ 244, 244, 244, 244, 242, 242, 244, 244, 244, 244,
735
+ 244, 244, 244, 242, 242, 244, 244, 244, 244, 244,
736
+ 242, 244, 244, 244, 244, 0, 236, 236, 236, 236,
737
+ 236, 236, 236, 236, 236, 236, 236
735
738
  } ;
736
739
 
737
- static const flex_int16_t yy_nxt[446] =
740
+ static const flex_int16_t yy_nxt[452] =
738
741
  { 0,
739
742
  4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
740
743
  14, 15, 16, 4, 17, 18, 19, 20, 21, 21,
741
744
  21, 21, 21, 21, 21, 21, 22, 23, 24, 25,
742
- 26, 27, 28, 29, 28, 28, 30, 28, 31, 28,
743
- 32, 33, 28, 34, 4, 35, 36, 37, 38, 39,
744
- 37, 37, 40, 37, 37, 41, 37, 37, 37, 37,
745
- 37, 37, 42, 43, 37, 44, 45, 37, 37, 37,
746
- 46, 47, 48, 50, 50, 56, 57, 60, 61, 61,
747
- 61, 61, 61, 61, 61, 61, 61, 75, 59, 62,
748
- 72, 80, 73, 76, 82, 85, 89, 86, 92, 81,
749
-
750
- 50, 83, 50, 225, 96, 90, 96, 84, 65, 55,
751
- 62, 93, 51, 62, 63, 64, 64, 64, 64, 64,
752
- 64, 64, 64, 168, 65, 226, 65, 65, 226, 65,
753
- 224, 169, 65, 223, 222, 55, 66, 221, 220, 67,
754
- 192, 51, 65, 65, 219, 65, 226, 176, 65, 177,
755
- 218, 217, 178, 226, 202, 193, 203, 66, 216, 204,
756
- 215, 214, 213, 212, 67, 61, 61, 61, 61, 61,
757
- 61, 61, 61, 61, 98, 98, 98, 98, 98, 98,
758
- 98, 97, 97, 97, 97, 97, 97, 97, 97, 97,
759
- 97, 97, 97, 97, 97, 97, 97, 97, 97, 98,
760
-
761
- 98, 98, 98, 98, 98, 98, 135, 211, 136, 210,
762
- 209, 137, 138, 162, 208, 163, 207, 206, 164, 165,
763
- 205, 201, 200, 199, 198, 197, 196, 195, 194, 191,
764
- 190, 189, 188, 187, 186, 185, 184, 183, 182, 181,
765
- 180, 179, 175, 174, 173, 172, 171, 170, 167, 139,
766
- 161, 160, 159, 158, 157, 156, 166, 49, 155, 49,
767
- 49, 49, 49, 49, 49, 49, 49, 52, 154, 153,
768
- 52, 52, 52, 52, 52, 52, 52, 54, 152, 54,
745
+ 26, 27, 28, 28, 28, 29, 28, 30, 28, 31,
746
+ 28, 32, 4, 33, 34, 35, 36, 37, 38, 38,
747
+ 39, 38, 38, 40, 38, 38, 38, 38, 41, 38,
748
+ 42, 43, 38, 44, 45, 38, 38, 38, 46, 47,
749
+ 48, 50, 50, 56, 57, 60, 61, 61, 61, 61,
750
+ 61, 61, 61, 61, 61, 81, 59, 84, 62, 85,
751
+ 89, 91, 82, 50, 93, 92, 235, 50, 83, 90,
752
+
753
+ 234, 97, 62, 97, 233, 55, 65, 94, 51, 62,
754
+ 63, 64, 64, 64, 64, 64, 64, 64, 64, 77,
755
+ 65, 65, 78, 232, 65, 65, 55, 65, 116, 171,
756
+ 79, 66, 197, 67, 51, 65, 172, 231, 80, 65,
757
+ 65, 179, 65, 180, 117, 230, 181, 198, 236, 229,
758
+ 236, 66, 209, 228, 210, 227, 226, 211, 67, 61,
759
+ 61, 61, 61, 61, 61, 61, 61, 61, 236, 225,
760
+ 224, 223, 222, 221, 220, 236, 99, 99, 99, 99,
761
+ 99, 99, 99, 98, 98, 98, 98, 98, 98, 98,
762
+ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
763
+
764
+ 98, 99, 99, 99, 99, 99, 99, 99, 136, 219,
765
+ 137, 218, 217, 138, 139, 165, 216, 166, 215, 214,
766
+ 167, 168, 213, 212, 208, 207, 206, 205, 204, 203,
767
+ 202, 201, 200, 199, 196, 195, 194, 193, 192, 191,
768
+ 190, 189, 188, 187, 186, 185, 184, 183, 182, 140,
769
+ 178, 177, 176, 175, 174, 173, 169, 49, 170, 49,
770
+ 49, 49, 49, 49, 49, 49, 49, 52, 164, 163,
771
+ 52, 52, 52, 52, 52, 52, 52, 54, 162, 54,
769
772
  54, 54, 54, 54, 54, 54, 54, 58, 58, 58,
770
- 68, 68, 151, 150, 68, 69, 149, 69, 69, 69,
773
+ 68, 68, 161, 160, 68, 69, 159, 69, 69, 69,
771
774
 
772
- 78, 148, 78, 78, 78, 79, 147, 79, 79, 79,
773
- 61, 146, 145, 61, 97, 144, 97, 99, 143, 99,
774
- 99, 142, 141, 140, 134, 133, 132, 131, 130, 129,
775
+ 74, 158, 74, 74, 74, 75, 157, 75, 75, 75,
776
+ 61, 156, 155, 61, 98, 154, 98, 100, 153, 100,
777
+ 100, 152, 151, 150, 149, 148, 147, 146, 145, 144,
778
+ 143, 142, 141, 135, 134, 133, 132, 131, 130, 129,
775
779
  128, 127, 126, 125, 124, 123, 122, 121, 120, 119,
776
- 118, 117, 116, 115, 114, 113, 112, 111, 110, 109,
777
- 108, 107, 106, 105, 104, 103, 102, 101, 100, 64,
778
- 95, 94, 91, 88, 87, 77, 74, 71, 70, 53,
779
- 226, 3, 226, 226, 226, 226, 226, 226, 226, 226,
780
- 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
781
- 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
782
-
783
- 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
784
- 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
785
- 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
786
- 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
787
- 226, 226, 226, 226, 226
780
+ 118, 115, 114, 113, 112, 111, 110, 109, 108, 107,
781
+ 106, 105, 104, 103, 102, 101, 64, 96, 95, 88,
782
+ 87, 86, 76, 73, 72, 71, 70, 53, 236, 3,
783
+ 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
784
+ 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
785
+
786
+ 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
787
+ 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
788
+ 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
789
+ 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
790
+ 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
791
+ 236
788
792
  } ;
789
793
 
790
- static const flex_int16_t yy_chk[446] =
794
+ static const flex_int16_t yy_chk[452] =
791
795
  { 0,
792
796
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
793
797
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -796,57 +800,58 @@ static const flex_int16_t yy_chk[446] =
796
800
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
797
801
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
798
802
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
799
- 1, 1, 1, 9, 13, 18, 18, 19, 19, 19,
800
- 19, 19, 19, 19, 19, 19, 19, 32, 18, 21,
801
- 30, 38, 30, 32, 39, 40, 43, 40, 45, 38,
802
-
803
- 54, 39, 49, 224, 65, 43, 65, 39, 21, 13,
804
- 58, 45, 9, 20, 20, 20, 20, 20, 20, 20,
805
- 20, 20, 20, 146, 21, 63, 61, 62, 63, 58,
806
- 220, 146, 20, 219, 217, 54, 20, 216, 214, 20,
807
- 175, 49, 61, 62, 213, 58, 63, 155, 20, 155,
808
- 210, 209, 155, 63, 191, 175, 191, 20, 208, 191,
809
- 207, 206, 205, 204, 20, 56, 56, 56, 56, 56,
810
- 56, 56, 56, 56, 66, 66, 66, 66, 66, 66,
811
- 66, 96, 96, 96, 96, 96, 96, 96, 96, 96,
812
- 97, 97, 97, 97, 97, 97, 97, 97, 97, 98,
813
-
814
- 98, 98, 98, 98, 98, 98, 114, 203, 114, 202,
815
- 201, 114, 114, 142, 199, 142, 198, 193, 142, 142,
816
- 192, 190, 189, 188, 187, 185, 178, 177, 176, 174,
817
- 173, 172, 169, 168, 167, 166, 164, 163, 162, 161,
818
- 160, 159, 154, 153, 152, 150, 149, 148, 145, 114,
819
- 141, 140, 139, 137, 136, 135, 142, 227, 134, 227,
820
- 227, 227, 227, 227, 227, 227, 227, 228, 133, 132,
821
- 228, 228, 228, 228, 228, 228, 228, 229, 130, 229,
822
- 229, 229, 229, 229, 229, 229, 229, 230, 230, 230,
823
- 231, 231, 129, 127, 231, 232, 126, 232, 232, 232,
824
-
825
- 233, 125, 233, 233, 233, 234, 124, 234, 234, 234,
826
- 235, 123, 122, 235, 236, 121, 236, 237, 120, 237,
827
- 237, 118, 117, 116, 113, 112, 111, 110, 109, 108,
828
- 107, 106, 105, 104, 103, 102, 101, 94, 93, 92,
829
- 91, 90, 89, 88, 87, 86, 85, 84, 83, 82,
830
- 81, 80, 77, 76, 75, 73, 72, 71, 70, 64,
831
- 60, 53, 44, 42, 41, 33, 31, 29, 27, 11,
832
- 3, 226, 226, 226, 226, 226, 226, 226, 226, 226,
833
- 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
834
- 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
835
-
836
- 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
837
- 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
838
- 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
839
- 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
840
- 226, 226, 226, 226, 226
803
+ 1, 9, 13, 18, 18, 19, 19, 19, 19, 19,
804
+ 19, 19, 19, 19, 19, 37, 18, 39, 21, 39,
805
+ 43, 44, 37, 54, 45, 44, 234, 49, 37, 43,
806
+
807
+ 230, 65, 58, 65, 229, 13, 21, 45, 9, 20,
808
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 36,
809
+ 58, 21, 36, 227, 61, 62, 54, 20, 89, 148,
810
+ 36, 20, 178, 20, 49, 58, 148, 225, 36, 61,
811
+ 62, 157, 20, 157, 89, 223, 157, 178, 63, 222,
812
+ 63, 20, 196, 219, 196, 218, 217, 196, 20, 56,
813
+ 56, 56, 56, 56, 56, 56, 56, 56, 63, 216,
814
+ 215, 213, 212, 211, 210, 63, 66, 66, 66, 66,
815
+ 66, 66, 66, 97, 97, 97, 97, 97, 97, 97,
816
+ 97, 97, 98, 98, 98, 98, 98, 98, 98, 98,
817
+
818
+ 98, 99, 99, 99, 99, 99, 99, 99, 114, 209,
819
+ 114, 208, 206, 114, 114, 144, 205, 144, 204, 203,
820
+ 144, 144, 198, 197, 195, 194, 193, 192, 191, 190,
821
+ 189, 181, 180, 179, 177, 176, 175, 174, 172, 171,
822
+ 170, 169, 167, 166, 165, 164, 163, 162, 161, 114,
823
+ 156, 155, 154, 152, 151, 149, 144, 237, 145, 237,
824
+ 237, 237, 237, 237, 237, 237, 237, 238, 143, 142,
825
+ 238, 238, 238, 238, 238, 238, 238, 239, 141, 239,
826
+ 239, 239, 239, 239, 239, 239, 239, 240, 240, 240,
827
+ 241, 241, 140, 138, 241, 242, 137, 242, 242, 242,
828
+
829
+ 243, 136, 243, 243, 243, 244, 135, 244, 244, 244,
830
+ 245, 134, 133, 245, 246, 131, 246, 247, 130, 247,
831
+ 247, 128, 127, 126, 125, 124, 123, 122, 120, 119,
832
+ 118, 117, 116, 113, 112, 111, 110, 109, 108, 107,
833
+ 106, 105, 104, 103, 102, 95, 94, 93, 92, 91,
834
+ 90, 88, 86, 85, 84, 83, 82, 81, 80, 79,
835
+ 78, 77, 76, 73, 71, 70, 64, 60, 53, 42,
836
+ 41, 40, 35, 31, 30, 29, 27, 11, 3, 236,
837
+ 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
838
+ 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
839
+
840
+ 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
841
+ 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
842
+ 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
843
+ 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
844
+ 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
845
+ 236
841
846
  } ;
842
847
 
843
848
  /* Table of booleans, true if rule could match eol. */
844
- static const flex_int32_t yy_rule_can_match_eol[68] =
849
+ static const flex_int32_t yy_rule_can_match_eol[72] =
845
850
  { 0,
846
851
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
847
852
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
848
853
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
849
- 0, 0, 0, 1, 0, 0, 0, 0, };
854
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, };
850
855
 
851
856
  /* The intent behind this definition is that it'll catch
852
857
  * any uses of REJECT which flex missed.
@@ -938,9 +943,9 @@ yyfree(void *ptr, yyscan_t yyscanner)
938
943
  ndt_free(ptr);
939
944
  }
940
945
 
941
- #line 941 "lexer.c"
946
+ #line 946 "lexer.c"
942
947
  #define YY_NO_INPUT 1
943
- #line 943 "lexer.c"
948
+ #line 948 "lexer.c"
944
949
 
945
950
  #define INITIAL 0
946
951
 
@@ -1223,7 +1228,7 @@ YY_DECL
1223
1228
  #line 127 "lexer.l"
1224
1229
 
1225
1230
 
1226
- #line 1226 "lexer.c"
1231
+ #line 1231 "lexer.c"
1227
1232
 
1228
1233
  while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
1229
1234
  {
@@ -1250,13 +1255,13 @@ yy_match:
1250
1255
  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1251
1256
  {
1252
1257
  yy_current_state = (int) yy_def[yy_current_state];
1253
- if ( yy_current_state >= 227 )
1258
+ if ( yy_current_state >= 237 )
1254
1259
  yy_c = yy_meta[yy_c];
1255
1260
  }
1256
1261
  yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
1257
1262
  ++yy_cp;
1258
1263
  }
1259
- while ( yy_current_state != 226 );
1264
+ while ( yy_current_state != 236 );
1260
1265
  yy_cp = yyg->yy_last_accepting_cpos;
1261
1266
  yy_current_state = yyg->yy_last_accepting_state;
1262
1267
 
@@ -1381,260 +1386,280 @@ YY_RULE_SETUP
1381
1386
  case 17:
1382
1387
  YY_RULE_SETUP
1383
1388
  #line 160 "lexer.l"
1384
- { return FLOAT16; }
1389
+ { return BFLOAT16; }
1385
1390
  YY_BREAK
1386
1391
  case 18:
1387
1392
  YY_RULE_SETUP
1388
1393
  #line 161 "lexer.l"
1389
- { return FLOAT32; }
1394
+ { return FLOAT16; }
1390
1395
  YY_BREAK
1391
1396
  case 19:
1392
1397
  YY_RULE_SETUP
1393
1398
  #line 162 "lexer.l"
1394
- { return FLOAT64; }
1399
+ { return FLOAT32; }
1395
1400
  YY_BREAK
1396
1401
  case 20:
1397
1402
  YY_RULE_SETUP
1398
- #line 164 "lexer.l"
1399
- { return COMPLEX_KIND; }
1403
+ #line 163 "lexer.l"
1404
+ { return FLOAT64; }
1400
1405
  YY_BREAK
1401
1406
  case 21:
1402
1407
  YY_RULE_SETUP
1403
1408
  #line 165 "lexer.l"
1404
- { return COMPLEX32; }
1409
+ { return COMPLEX_KIND; }
1405
1410
  YY_BREAK
1406
1411
  case 22:
1407
1412
  YY_RULE_SETUP
1408
1413
  #line 166 "lexer.l"
1409
- { return COMPLEX64; }
1414
+ { return BCOMPLEX32; }
1410
1415
  YY_BREAK
1411
1416
  case 23:
1412
1417
  YY_RULE_SETUP
1413
1418
  #line 167 "lexer.l"
1414
- { return COMPLEX128; }
1419
+ { return COMPLEX32; }
1415
1420
  YY_BREAK
1416
1421
  case 24:
1417
1422
  YY_RULE_SETUP
1418
- #line 169 "lexer.l"
1419
- { return INTPTR; }
1423
+ #line 168 "lexer.l"
1424
+ { return COMPLEX64; }
1420
1425
  YY_BREAK
1421
1426
  case 25:
1422
1427
  YY_RULE_SETUP
1423
- #line 170 "lexer.l"
1424
- { return UINTPTR; }
1428
+ #line 169 "lexer.l"
1429
+ { return COMPLEX128; }
1425
1430
  YY_BREAK
1426
1431
  case 26:
1427
1432
  YY_RULE_SETUP
1428
1433
  #line 171 "lexer.l"
1429
- { return SIZE; }
1434
+ { return INTPTR; }
1430
1435
  YY_BREAK
1431
1436
  case 27:
1432
1437
  YY_RULE_SETUP
1433
1438
  #line 172 "lexer.l"
1434
- { return CHAR; }
1439
+ { return UINTPTR; }
1435
1440
  YY_BREAK
1436
1441
  case 28:
1437
1442
  YY_RULE_SETUP
1438
1443
  #line 173 "lexer.l"
1439
- { return STRING; }
1444
+ { return SIZE; }
1440
1445
  YY_BREAK
1441
1446
  case 29:
1442
1447
  YY_RULE_SETUP
1443
1448
  #line 174 "lexer.l"
1444
- { return BYTES; }
1449
+ { return CHAR; }
1445
1450
  YY_BREAK
1446
1451
  case 30:
1447
1452
  YY_RULE_SETUP
1448
- #line 176 "lexer.l"
1449
- { return FIXED_STRING_KIND; }
1453
+ #line 175 "lexer.l"
1454
+ { return STRING; }
1450
1455
  YY_BREAK
1451
1456
  case 31:
1452
1457
  YY_RULE_SETUP
1453
- #line 177 "lexer.l"
1454
- { return FIXED_STRING; }
1458
+ #line 176 "lexer.l"
1459
+ { return BYTES; }
1455
1460
  YY_BREAK
1456
1461
  case 32:
1457
1462
  YY_RULE_SETUP
1458
- #line 179 "lexer.l"
1459
- { return FIXED_BYTES_KIND; }
1463
+ #line 178 "lexer.l"
1464
+ { return FIXED_STRING_KIND; }
1460
1465
  YY_BREAK
1461
1466
  case 33:
1462
1467
  YY_RULE_SETUP
1463
- #line 180 "lexer.l"
1464
- { return FIXED_BYTES; }
1468
+ #line 179 "lexer.l"
1469
+ { return FIXED_STRING; }
1465
1470
  YY_BREAK
1466
1471
  case 34:
1467
1472
  YY_RULE_SETUP
1468
- #line 182 "lexer.l"
1469
- { return CATEGORICAL; }
1473
+ #line 181 "lexer.l"
1474
+ { return FIXED_BYTES_KIND; }
1470
1475
  YY_BREAK
1471
1476
  case 35:
1472
1477
  YY_RULE_SETUP
1473
- #line 183 "lexer.l"
1474
- { return NA; }
1478
+ #line 182 "lexer.l"
1479
+ { return FIXED_BYTES; }
1475
1480
  YY_BREAK
1476
1481
  case 36:
1477
1482
  YY_RULE_SETUP
1478
- #line 185 "lexer.l"
1479
- { return REF; }
1483
+ #line 184 "lexer.l"
1484
+ { return CATEGORICAL; }
1480
1485
  YY_BREAK
1481
1486
  case 37:
1482
1487
  YY_RULE_SETUP
1483
- #line 187 "lexer.l"
1484
- { return FIXED; }
1488
+ #line 185 "lexer.l"
1489
+ { return NA; }
1485
1490
  YY_BREAK
1486
1491
  case 38:
1487
1492
  YY_RULE_SETUP
1488
- #line 188 "lexer.l"
1489
- { return VAR; }
1493
+ #line 187 "lexer.l"
1494
+ { return REF; }
1490
1495
  YY_BREAK
1491
1496
  case 39:
1492
1497
  YY_RULE_SETUP
1493
- #line 190 "lexer.l"
1494
- { return ELLIPSIS; }
1498
+ #line 189 "lexer.l"
1499
+ { return FIXED; }
1495
1500
  YY_BREAK
1496
1501
  case 40:
1497
1502
  YY_RULE_SETUP
1498
- #line 191 "lexer.l"
1499
- { return RARROW; }
1503
+ #line 190 "lexer.l"
1504
+ { return VAR; }
1500
1505
  YY_BREAK
1501
1506
  case 41:
1502
1507
  YY_RULE_SETUP
1503
- #line 192 "lexer.l"
1504
- { return COMMA; }
1508
+ #line 191 "lexer.l"
1509
+ { return ARRAY; }
1505
1510
  YY_BREAK
1506
1511
  case 42:
1507
1512
  YY_RULE_SETUP
1508
1513
  #line 193 "lexer.l"
1509
- { return COLON; }
1514
+ { return OF; }
1510
1515
  YY_BREAK
1511
1516
  case 43:
1512
1517
  YY_RULE_SETUP
1513
- #line 194 "lexer.l"
1514
- { return LPAREN; }
1518
+ #line 195 "lexer.l"
1519
+ { return ELLIPSIS; }
1515
1520
  YY_BREAK
1516
1521
  case 44:
1517
1522
  YY_RULE_SETUP
1518
- #line 195 "lexer.l"
1519
- { return RPAREN; }
1523
+ #line 196 "lexer.l"
1524
+ { return RARROW; }
1520
1525
  YY_BREAK
1521
1526
  case 45:
1522
1527
  YY_RULE_SETUP
1523
- #line 196 "lexer.l"
1524
- { return LBRACE; }
1528
+ #line 197 "lexer.l"
1529
+ { return COMMA; }
1525
1530
  YY_BREAK
1526
1531
  case 46:
1527
1532
  YY_RULE_SETUP
1528
- #line 197 "lexer.l"
1529
- { return RBRACE; }
1533
+ #line 198 "lexer.l"
1534
+ { return COLON; }
1530
1535
  YY_BREAK
1531
1536
  case 47:
1532
1537
  YY_RULE_SETUP
1533
- #line 198 "lexer.l"
1534
- { return LBRACK; }
1538
+ #line 199 "lexer.l"
1539
+ { return LPAREN; }
1535
1540
  YY_BREAK
1536
1541
  case 48:
1537
1542
  YY_RULE_SETUP
1538
- #line 199 "lexer.l"
1539
- { return RBRACK; }
1543
+ #line 200 "lexer.l"
1544
+ { return RPAREN; }
1540
1545
  YY_BREAK
1541
1546
  case 49:
1542
1547
  YY_RULE_SETUP
1543
- #line 200 "lexer.l"
1544
- { return STAR; }
1548
+ #line 201 "lexer.l"
1549
+ { return LBRACE; }
1545
1550
  YY_BREAK
1546
1551
  case 50:
1547
1552
  YY_RULE_SETUP
1548
- #line 201 "lexer.l"
1549
- { return EQUAL; }
1553
+ #line 202 "lexer.l"
1554
+ { return RBRACE; }
1550
1555
  YY_BREAK
1551
1556
  case 51:
1552
1557
  YY_RULE_SETUP
1553
- #line 202 "lexer.l"
1554
- { return QUESTIONMARK; }
1558
+ #line 203 "lexer.l"
1559
+ { return LBRACK; }
1555
1560
  YY_BREAK
1556
1561
  case 52:
1557
1562
  YY_RULE_SETUP
1558
- #line 203 "lexer.l"
1559
- { return BANG; }
1563
+ #line 204 "lexer.l"
1564
+ { return RBRACK; }
1560
1565
  YY_BREAK
1561
1566
  case 53:
1562
1567
  YY_RULE_SETUP
1563
- #line 204 "lexer.l"
1564
- { return AMPERSAND; }
1568
+ #line 205 "lexer.l"
1569
+ { return STAR; }
1565
1570
  YY_BREAK
1566
1571
  case 54:
1567
1572
  YY_RULE_SETUP
1568
- #line 205 "lexer.l"
1569
- { return BAR; }
1573
+ #line 206 "lexer.l"
1574
+ { return EQUAL; }
1570
1575
  YY_BREAK
1571
1576
  case 55:
1572
1577
  YY_RULE_SETUP
1573
- #line 206 "lexer.l"
1574
- { return LESS; }
1578
+ #line 207 "lexer.l"
1579
+ { return QUESTIONMARK; }
1575
1580
  YY_BREAK
1576
1581
  case 56:
1577
1582
  YY_RULE_SETUP
1578
- #line 207 "lexer.l"
1579
- { return GREATER; }
1583
+ #line 208 "lexer.l"
1584
+ { return BANG; }
1580
1585
  YY_BREAK
1581
1586
  case 57:
1582
1587
  YY_RULE_SETUP
1583
1588
  #line 209 "lexer.l"
1584
- { yylval->string = ndt_strdup(yytext, ctx); if (yylval->string == NULL) return ERRTOKEN; return NAME_LOWER; }
1589
+ { return AMPERSAND; }
1585
1590
  YY_BREAK
1586
1591
  case 58:
1587
1592
  YY_RULE_SETUP
1588
1593
  #line 210 "lexer.l"
1589
- { yylval->string = ndt_strdup(yytext, ctx); if (yylval->string == NULL) return ERRTOKEN; return NAME_UPPER; }
1594
+ { return BAR; }
1590
1595
  YY_BREAK
1591
1596
  case 59:
1592
1597
  YY_RULE_SETUP
1593
1598
  #line 211 "lexer.l"
1594
- { yylval->string = ndt_strdup(yytext, ctx); if (yylval->string == NULL) return ERRTOKEN; return NAME_OTHER; }
1599
+ { return LESS; }
1595
1600
  YY_BREAK
1596
1601
  case 60:
1597
1602
  YY_RULE_SETUP
1598
- #line 213 "lexer.l"
1599
- { yylval->string = mk_stringlit(yytext, ctx); if (yylval->string == NULL) return ERRTOKEN; return STRINGLIT; }
1603
+ #line 212 "lexer.l"
1604
+ { return GREATER; }
1600
1605
  YY_BREAK
1601
1606
  case 61:
1602
1607
  YY_RULE_SETUP
1603
1608
  #line 214 "lexer.l"
1604
- { yylval->string = ndt_strdup(yytext, ctx); if (yylval->string == NULL) return ERRTOKEN; return INTEGER; }
1609
+ { yylval->string = ndt_strdup(yytext, ctx); if (yylval->string == NULL) return ERRTOKEN; return NAME_LOWER; }
1605
1610
  YY_BREAK
1606
1611
  case 62:
1607
1612
  YY_RULE_SETUP
1608
1613
  #line 215 "lexer.l"
1609
- { yylval->string = ndt_strdup(yytext, ctx); if (yylval->string == NULL) return ERRTOKEN; return FLOATNUMBER; }
1614
+ { yylval->string = ndt_strdup(yytext, ctx); if (yylval->string == NULL) return ERRTOKEN; return NAME_UPPER; }
1610
1615
  YY_BREAK
1611
1616
  case 63:
1612
- /* rule 63 can match eol */
1613
1617
  YY_RULE_SETUP
1614
- #line 217 "lexer.l"
1615
- { yycolumn = 1; }
1618
+ #line 216 "lexer.l"
1619
+ { yylval->string = ndt_strdup(yytext, ctx); if (yylval->string == NULL) return ERRTOKEN; return NAME_OTHER; }
1616
1620
  YY_BREAK
1617
1621
  case 64:
1618
1622
  YY_RULE_SETUP
1619
1623
  #line 218 "lexer.l"
1620
- {} /* ignore */
1624
+ { yylval->string = mk_stringlit(yytext, ctx); if (yylval->string == NULL) return ERRTOKEN; return STRINGLIT; }
1621
1625
  YY_BREAK
1622
1626
  case 65:
1623
1627
  YY_RULE_SETUP
1624
1628
  #line 219 "lexer.l"
1625
- {} /* ignore */
1629
+ { yylval->string = ndt_strdup(yytext, ctx); if (yylval->string == NULL) return ERRTOKEN; return INTEGER; }
1626
1630
  YY_BREAK
1627
1631
  case 66:
1628
1632
  YY_RULE_SETUP
1629
1633
  #line 220 "lexer.l"
1630
- { return ERRTOKEN; }
1634
+ { yylval->string = ndt_strdup(yytext, ctx); if (yylval->string == NULL) return ERRTOKEN; return FLOATNUMBER; }
1631
1635
  YY_BREAK
1632
1636
  case 67:
1637
+ /* rule 67 can match eol */
1633
1638
  YY_RULE_SETUP
1634
1639
  #line 222 "lexer.l"
1640
+ { yycolumn = 1; }
1641
+ YY_BREAK
1642
+ case 68:
1643
+ YY_RULE_SETUP
1644
+ #line 223 "lexer.l"
1645
+ {} /* ignore */
1646
+ YY_BREAK
1647
+ case 69:
1648
+ YY_RULE_SETUP
1649
+ #line 224 "lexer.l"
1650
+ {} /* ignore */
1651
+ YY_BREAK
1652
+ case 70:
1653
+ YY_RULE_SETUP
1654
+ #line 225 "lexer.l"
1655
+ { return ERRTOKEN; }
1656
+ YY_BREAK
1657
+ case 71:
1658
+ YY_RULE_SETUP
1659
+ #line 227 "lexer.l"
1635
1660
  YY_FATAL_ERROR( "flex scanner jammed" );
1636
1661
  YY_BREAK
1637
- #line 1637 "lexer.c"
1662
+ #line 1662 "lexer.c"
1638
1663
  case YY_STATE_EOF(INITIAL):
1639
1664
  yyterminate();
1640
1665
 
@@ -1934,7 +1959,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
1934
1959
  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1935
1960
  {
1936
1961
  yy_current_state = (int) yy_def[yy_current_state];
1937
- if ( yy_current_state >= 227 )
1962
+ if ( yy_current_state >= 237 )
1938
1963
  yy_c = yy_meta[yy_c];
1939
1964
  }
1940
1965
  yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -1963,11 +1988,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
1963
1988
  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1964
1989
  {
1965
1990
  yy_current_state = (int) yy_def[yy_current_state];
1966
- if ( yy_current_state >= 227 )
1991
+ if ( yy_current_state >= 237 )
1967
1992
  yy_c = yy_meta[yy_c];
1968
1993
  }
1969
1994
  yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
1970
- yy_is_jam = (yy_current_state == 226);
1995
+ yy_is_jam = (yy_current_state == 236);
1971
1996
 
1972
1997
  (void)yyg;
1973
1998
  return yy_is_jam ? 0 : yy_current_state;
@@ -2768,6 +2793,6 @@ static int yy_flex_strlen (const char * s , yyscan_t yyscanner)
2768
2793
 
2769
2794
  #define YYTABLES_NAME "yytables"
2770
2795
 
2771
- #line 222 "lexer.l"
2796
+ #line 227 "lexer.l"
2772
2797
 
2773
2798