krz/orgstar

A native macOS editor for org-mode files. editor org-mode swift

Sources/TreeSitterScanners/yaml/schema.core.c

15f6b0709d88971fb62ed432c3e5b8032643670a
orgstar/Sources/TreeSitterScanners/yaml/schema.core.c history · blame · raw

204 lines · 6630 bytes

  1#include <stdint.h>
  2
  3#include <stdlib.h>
  4
  5#define SCH_STT_FRZ -1
  6
  7#define HAS_TIMESTAMP 0
  8
  9typedef enum {
 10  RS_STR,
 11  RS_INT,
 12  RS_NULL,
 13  RS_BOOL,
 14  RS_FLOAT,
 15} ResultSchema;
 16
 17static int8_t adv_sch_stt(int8_t sch_stt, int32_t cur_chr, ResultSchema *rlt_sch) {
 18  switch (sch_stt) {
 19    case SCH_STT_FRZ:
 20      break;
 21    case 0:
 22        if (cur_chr == '.') {*rlt_sch = RS_STR; return 6;}
 23        if (cur_chr == '0') {*rlt_sch = RS_INT; return 37;}
 24        if (cur_chr == 'F') {*rlt_sch = RS_STR; return 2;}
 25        if (cur_chr == 'N') {*rlt_sch = RS_STR; return 16;}
 26        if (cur_chr == 'T') {*rlt_sch = RS_STR; return 13;}
 27        if (cur_chr == 'f') {*rlt_sch = RS_STR; return 17;}
 28        if (cur_chr == 'n') {*rlt_sch = RS_STR; return 29;}
 29        if (cur_chr == 't') {*rlt_sch = RS_STR; return 26;}
 30        if (cur_chr == '~') {*rlt_sch = RS_NULL; return 35;}
 31        if (cur_chr == '+') {*rlt_sch = RS_STR; return 1;}
 32        if (cur_chr == '-') {*rlt_sch = RS_STR; return 1;}
 33        if (('1' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_INT; return 38;}
 34      break;
 35    case 1:
 36      if (cur_chr == '.') {*rlt_sch = RS_STR; return 7;}
 37      if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_INT; return 38;}
 38      break;
 39    case 2:
 40      if (cur_chr == 'A') {*rlt_sch = RS_STR; return 9;}
 41      if (cur_chr == 'a') {*rlt_sch = RS_STR; return 22;}
 42      break;
 43    case 3:
 44      if (cur_chr == 'A') {*rlt_sch = RS_STR; return 12;}
 45      if (cur_chr == 'a') {*rlt_sch = RS_STR; return 12;}
 46      break;
 47    case 4:
 48      if (cur_chr == 'E') {*rlt_sch = RS_BOOL; return 36;}
 49      break;
 50    case 5:
 51      if (cur_chr == 'F') {*rlt_sch = RS_FLOAT; return 41;}
 52      break;
 53    case 6:
 54      if (cur_chr == 'I') {*rlt_sch = RS_STR; return 11;}
 55      if (cur_chr == 'N') {*rlt_sch = RS_STR; return 3;}
 56      if (cur_chr == 'i') {*rlt_sch = RS_STR; return 24;}
 57      if (cur_chr == 'n') {*rlt_sch = RS_STR; return 18;}
 58      if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_FLOAT; return 42;}
 59      break;
 60    case 7:
 61      if (cur_chr == 'I') {*rlt_sch = RS_STR; return 11;}
 62      if (cur_chr == 'i') {*rlt_sch = RS_STR; return 24;}
 63      if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_FLOAT; return 42;}
 64      break;
 65    case 8:
 66      if (cur_chr == 'L') {*rlt_sch = RS_NULL; return 35;}
 67      break;
 68    case 9:
 69      if (cur_chr == 'L') {*rlt_sch = RS_STR; return 14;}
 70      break;
 71    case 10:
 72      if (cur_chr == 'L') {*rlt_sch = RS_STR; return 8;}
 73      break;
 74    case 11:
 75      if (cur_chr == 'N') {*rlt_sch = RS_STR; return 5;}
 76      if (cur_chr == 'n') {*rlt_sch = RS_STR; return 20;}
 77      break;
 78    case 12:
 79      if (cur_chr == 'N') {*rlt_sch = RS_FLOAT; return 41;}
 80      break;
 81    case 13:
 82      if (cur_chr == 'R') {*rlt_sch = RS_STR; return 15;}
 83      if (cur_chr == 'r') {*rlt_sch = RS_STR; return 28;}
 84      break;
 85    case 14:
 86      if (cur_chr == 'S') {*rlt_sch = RS_STR; return 4;}
 87      break;
 88    case 15:
 89      if (cur_chr == 'U') {*rlt_sch = RS_STR; return 4;}
 90      break;
 91    case 16:
 92      if (cur_chr == 'U') {*rlt_sch = RS_STR; return 10;}
 93      if (cur_chr == 'u') {*rlt_sch = RS_STR; return 23;}
 94      break;
 95    case 17:
 96      if (cur_chr == 'a') {*rlt_sch = RS_STR; return 22;}
 97      break;
 98    case 18:
 99      if (cur_chr == 'a') {*rlt_sch = RS_STR; return 25;}
100      break;
101    case 19:
102      if (cur_chr == 'e') {*rlt_sch = RS_BOOL; return 36;}
103      break;
104    case 20:
105      if (cur_chr == 'f') {*rlt_sch = RS_FLOAT; return 41;}
106      break;
107    case 21:
108      if (cur_chr == 'l') {*rlt_sch = RS_NULL; return 35;}
109      break;
110    case 22:
111      if (cur_chr == 'l') {*rlt_sch = RS_STR; return 27;}
112      break;
113    case 23:
114      if (cur_chr == 'l') {*rlt_sch = RS_STR; return 21;}
115      break;
116    case 24:
117      if (cur_chr == 'n') {*rlt_sch = RS_STR; return 20;}
118      break;
119    case 25:
120      if (cur_chr == 'n') {*rlt_sch = RS_FLOAT; return 41;}
121      break;
122    case 26:
123      if (cur_chr == 'r') {*rlt_sch = RS_STR; return 28;}
124      break;
125    case 27:
126      if (cur_chr == 's') {*rlt_sch = RS_STR; return 19;}
127      break;
128    case 28:
129      if (cur_chr == 'u') {*rlt_sch = RS_STR; return 19;}
130      break;
131    case 29:
132      if (cur_chr == 'u') {*rlt_sch = RS_STR; return 23;}
133      break;
134    case 30:
135      if (cur_chr == '+' ||
136          cur_chr == '-') {*rlt_sch = RS_STR; return 32;}
137      if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_FLOAT; return 43;}
138      break;
139    case 31:
140      if (('0' <= cur_chr && cur_chr <= '7')) {*rlt_sch = RS_INT; return 39;}
141      break;
142    case 32:
143      if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_FLOAT; return 43;}
144      break;
145    case 33:
146      if (('0' <= cur_chr && cur_chr <= '9') ||
147          ('A' <= cur_chr && cur_chr <= 'F') ||
148          ('a' <= cur_chr && cur_chr <= 'f')) {*rlt_sch = RS_INT; return 40;}
149      break;
150    case 34:
151      abort();
152      break;
153    case 35:
154      *rlt_sch = RS_NULL;
155      break;
156    case 36:
157      *rlt_sch = RS_BOOL;
158      break;
159    case 37:
160      *rlt_sch = RS_INT;
161      if (cur_chr == '.') {*rlt_sch = RS_FLOAT; return 42;}
162      if (cur_chr == 'o') {*rlt_sch = RS_STR; return 31;}
163      if (cur_chr == 'x') {*rlt_sch = RS_STR; return 33;}
164      if (cur_chr == 'E' ||
165          cur_chr == 'e') {*rlt_sch = RS_STR; return 30;}
166      if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_INT; return 38;}
167      break;
168    case 38:
169      *rlt_sch = RS_INT;
170      if (cur_chr == '.') {*rlt_sch = RS_FLOAT; return 42;}
171      if (cur_chr == 'E' ||
172          cur_chr == 'e') {*rlt_sch = RS_STR; return 30;}
173      if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_INT; return 38;}
174      break;
175    case 39:
176      *rlt_sch = RS_INT;
177      if (('0' <= cur_chr && cur_chr <= '7')) {*rlt_sch = RS_INT; return 39;}
178      break;
179    case 40:
180      *rlt_sch = RS_INT;
181      if (('0' <= cur_chr && cur_chr <= '9') ||
182          ('A' <= cur_chr && cur_chr <= 'F') ||
183          ('a' <= cur_chr && cur_chr <= 'f')) {*rlt_sch = RS_INT; return 40;}
184      break;
185    case 41:
186      *rlt_sch = RS_FLOAT;
187      break;
188    case 42:
189      *rlt_sch = RS_FLOAT;
190      if (cur_chr == 'E' ||
191          cur_chr == 'e') {*rlt_sch = RS_STR; return 30;}
192      if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_FLOAT; return 42;}
193      break;
194    case 43:
195      *rlt_sch = RS_FLOAT;
196      if (('0' <= cur_chr && cur_chr <= '9')) {*rlt_sch = RS_FLOAT; return 43;}
197      break;
198    default:
199      *rlt_sch = RS_STR;
200      return SCH_STT_FRZ;
201  }
202  if (cur_chr != '\r' && cur_chr != '\n' && cur_chr != ' ' && cur_chr != 0) *rlt_sch = RS_STR;
203  return SCH_STT_FRZ;
204}