MCPcopy Create free account
hub / github.com/ArduPilot/ardupilot / read_string

Function read_string

libraries/AP_Scripting/lua/src/llex.c:368–428  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

366
367
368static void read_string (LexState *ls, int del, SemInfo *seminfo) {
369 save_and_next(ls); /* keep delimiter (for error messages) */
370 while (ls->current != del) {
371 switch (ls->current) {
372 case EOZ:
373 lexerror(ls, "unfinished string", TK_EOS);
374 break; /* to avoid warnings */
375 case '\n':
376 case '\r':
377 lexerror(ls, "unfinished string", TK_STRING);
378 break; /* to avoid warnings */
379 case '\\': { /* escape sequences */
380 int c; /* final character to be saved */
381 save_and_next(ls); /* keep '\\' for error messages */
382 switch (ls->current) {
383 case 'a': c = '\a'; goto read_save;
384 case 'b': c = '\b'; goto read_save;
385 case 'f': c = '\f'; goto read_save;
386 case 'n': c = '\n'; goto read_save;
387 case 'r': c = '\r'; goto read_save;
388 case 't': c = '\t'; goto read_save;
389 case 'v': c = '\v'; goto read_save;
390 case 'x': c = readhexaesc(ls); goto read_save;
391 case 'u': utf8esc(ls); goto no_save;
392 case '\n': case '\r':
393 inclinenumber(ls); c = '\n'; goto only_save;
394 case '\\': case '\"': case '\'':
395 c = ls->current; goto read_save;
396 case EOZ: goto no_save; /* will raise an error next loop */
397 case 'z': { /* zap following span of spaces */
398 luaZ_buffremove(ls->buff, 1); /* remove '\\' */
399 next(ls); /* skip the 'z' */
400 while (lisspace(ls->current)) {
401 if (currIsNewline(ls)) inclinenumber(ls);
402 else next(ls);
403 }
404 goto no_save;
405 }
406 default: {
407 esccheck(ls, lisdigit(ls->current), "invalid escape sequence");
408 c = readdecesc(ls); /* digital escape '\ddd' */
409 goto only_save;
410 }
411 }
412 read_save:
413 next(ls);
414 /* go through */
415 only_save:
416 luaZ_buffremove(ls->buff, 1); /* remove '\\' */
417 save(ls, c);
418 /* go through */
419 no_save: break;
420 }
421 default:
422 save_and_next(ls);
423 }
424 }
425 save_and_next(ls); /* skip delimiter */

Callers 1

llexFunction · 0.85

Calls 8

lexerrorFunction · 0.85
readhexaescFunction · 0.85
utf8escFunction · 0.85
inclinenumberFunction · 0.85
esccheckFunction · 0.85
readdecescFunction · 0.85
saveFunction · 0.85
luaX_newstringFunction · 0.85

Tested by

no test coverage detected