MCPcopy Create free account
hub / github.com/Moddable-OpenSource/moddable / fxGetNextKeyword

Function fxGetNextKeyword

xs/sources/xsLexical.c:270–311  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

268}
269
270void fxGetNextKeyword(txParser* parser)
271{
272 int low, high, anIndex, aDelta;
273
274 parser->states[2].symbol = fxNewParserSymbol(parser, parser->buffer);
275 parser->states[2].token = XS_TOKEN_IDENTIFIER;
276 if ((parser->states[0].token == XS_TOKEN_DOT) || (parser->states[0].token == XS_TOKEN_CHAIN))
277 return;
278 for (low = 0, high = XS_KEYWORD_COUNT; high > low;
279 (aDelta < 0) ? (low = anIndex + 1) : (high = anIndex)) {
280 anIndex = low + ((high - low) / 2);
281 aDelta = c_strcmp(gxKeywords[anIndex].text, parser->buffer);
282 if (aDelta == 0) {
283 parser->states[2].token = gxKeywords[anIndex].token;
284 return;
285 }
286 }
287 if ((parser->flags & mxStrictFlag)) {
288 for (low = 0, high = XS_STRICT_KEYWORD_COUNT; high > low;
289 (aDelta < 0) ? (low = anIndex + 1) : (high = anIndex)) {
290 anIndex = low + ((high - low) / 2);
291 aDelta = c_strcmp(gxStrictKeywords[anIndex].text, parser->buffer);
292 if (aDelta == 0) {
293 parser->states[2].token = gxStrictKeywords[anIndex].token;
294 return;
295 }
296 }
297 }
298 if (c_strcmp("await", parser->buffer) == 0) {
299 if (parser->flags & mxAsyncFlag) {
300 parser->states[2].token = XS_TOKEN_AWAIT;
301 return;
302 }
303 }
304 if (c_strcmp("yield", parser->buffer) == 0) {
305 if ((parser->flags & mxGeneratorFlag)){
306 parser->states[2].token = XS_TOKEN_YIELD;
307 return;
308 }
309 }
310 return;
311}
312
313txBoolean fxGetNextIdentiferX(txParser* parser, txU4* value)
314{

Callers 1

fxGetNextTokenAuxFunction · 0.85

Calls 1

fxNewParserSymbolFunction · 0.85

Tested by

no test coverage detected