Lines Matching +full:use +full:- +full:case
4 * SPDX-License-Identifier: BSD-2-Clause
6 * Copyright (c) 2018-2025 Gavin D. Howard and contributors.
8 * Redistribution and use in source and binary forms, with or without
24 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
54 const char* buf = l->buf + l->i - 1; in bc_lex_identifier()
63 if (!strncmp(buf, kw->name, n) && !isalnum(buf[n]) && buf[n] != '_') in bc_lex_identifier()
67 // and use it as a name. This depends on the argument parser to in bc_lex_identifier()
68 // ensure that only non-POSIX keywords get redefined. in bc_lex_identifier()
69 if (!vm->no_redefine && vm->redefined_kws[i]) break; in bc_lex_identifier()
71 l->t = BC_LEX_KW_AUTO + (BcLexType) i; in bc_lex_identifier()
75 if (!BC_LEX_KW_POSIX(kw)) bc_lex_verr(l, BC_ERR_POSIX_KW, kw->name); in bc_lex_identifier()
78 l->i += n - 1; in bc_lex_identifier()
90 if (BC_ERR(l->str.len - 1 > 1)) in bc_lex_identifier()
92 bc_lex_verr(l, BC_ERR_POSIX_NAME_LEN, l->str.v); in bc_lex_identifier()
110 l->t = BC_LEX_STR; in bc_lex_string()
115 buf = l->buf; in bc_lex_string()
119 assert(vm->mode != BC_MODE_STDIN || buf == vm->buffer.v); in bc_lex_string()
124 for (i = l->i; (c = buf[i]) && c != '"'; ++i) in bc_lex_string()
129 if (BC_ERR(c == '\0') && !vm->eof && l->mode != BC_MODE_FILE) in bc_lex_string()
139 l->i = i; in bc_lex_string()
144 len = i - l->i; in bc_lex_string()
145 bc_vec_string(&l->str, len, l->buf + l->i); in bc_lex_string()
147 l->i = i + 1; in bc_lex_string()
148 l->line += nlines; in bc_lex_string()
161 if (l->buf[l->i] == '=') in bc_lex_assign()
163 l->i += 1; in bc_lex_assign()
164 l->t = with; in bc_lex_assign()
166 else l->t = without; in bc_lex_assign()
175 char c = l->buf[l->i++], c2; in bc_lex_token()
182 case '\0': in bc_lex_token()
183 case '\n': in bc_lex_token()
184 case '\t': in bc_lex_token()
185 case '\v': in bc_lex_token()
186 case '\f': in bc_lex_token()
187 case '\r': in bc_lex_token()
188 case ' ': in bc_lex_token()
194 case '!': in bc_lex_token()
196 // Even though it's not an assignment, we can use this. in bc_lex_token()
200 if (l->t == BC_LEX_OP_BOOL_NOT) in bc_lex_token()
208 case '"': in bc_lex_token()
214 case '#': in bc_lex_token()
222 case '%': in bc_lex_token()
228 case '&': in bc_lex_token()
230 c2 = l->buf[l->i]; in bc_lex_token()
238 l->i += 1; in bc_lex_token()
239 l->t = BC_LEX_OP_BOOL_AND; in bc_lex_token()
246 case '$': in bc_lex_token()
248 l->t = BC_LEX_OP_TRUNC; in bc_lex_token()
252 case '@': in bc_lex_token()
258 case '(': in bc_lex_token()
259 case ')': in bc_lex_token()
261 l->t = (BcLexType) (c - '(' + BC_LEX_LPAREN); in bc_lex_token()
265 case '*': in bc_lex_token()
271 case '+': in bc_lex_token()
273 c2 = l->buf[l->i]; in bc_lex_token()
278 l->i += 1; in bc_lex_token()
279 l->t = BC_LEX_OP_INC; in bc_lex_token()
285 case ',': in bc_lex_token()
287 l->t = BC_LEX_COMMA; in bc_lex_token()
291 case '-': in bc_lex_token()
293 c2 = l->buf[l->i]; in bc_lex_token()
296 if (c2 == '-') in bc_lex_token()
298 l->i += 1; in bc_lex_token()
299 l->t = BC_LEX_OP_DEC; in bc_lex_token()
305 case '.': in bc_lex_token()
307 c2 = l->buf[l->i]; in bc_lex_token()
313 l->t = BC_LEX_KW_LAST; in bc_lex_token()
320 case '/': in bc_lex_token()
322 c2 = l->buf[l->i]; in bc_lex_token()
328 case '0': in bc_lex_token()
329 case '1': in bc_lex_token()
330 case '2': in bc_lex_token()
331 case '3': in bc_lex_token()
332 case '4': in bc_lex_token()
333 case '5': in bc_lex_token()
334 case '6': in bc_lex_token()
335 case '7': in bc_lex_token()
336 case '8': in bc_lex_token()
337 case '9': in bc_lex_token()
338 case 'A': in bc_lex_token()
339 case 'B': in bc_lex_token()
340 case 'C': in bc_lex_token()
341 case 'D': in bc_lex_token()
342 case 'E': in bc_lex_token()
343 case 'F': in bc_lex_token()
346 // multi-digit, any letter above the input base is automatically set to in bc_lex_token()
348 case 'G': in bc_lex_token()
349 case 'H': in bc_lex_token()
350 case 'I': in bc_lex_token()
351 case 'J': in bc_lex_token()
352 case 'K': in bc_lex_token()
353 case 'L': in bc_lex_token()
354 case 'M': in bc_lex_token()
355 case 'N': in bc_lex_token()
356 case 'O': in bc_lex_token()
357 case 'P': in bc_lex_token()
358 case 'Q': in bc_lex_token()
359 case 'R': in bc_lex_token()
360 case 'S': in bc_lex_token()
361 case 'T': in bc_lex_token()
362 case 'U': in bc_lex_token()
363 case 'V': in bc_lex_token()
364 case 'W': in bc_lex_token()
365 case 'X': in bc_lex_token()
366 case 'Y': in bc_lex_token()
367 case 'Z': in bc_lex_token()
373 case ';': in bc_lex_token()
375 l->t = BC_LEX_SCOLON; in bc_lex_token()
379 case '<': in bc_lex_token()
382 c2 = l->buf[l->i]; in bc_lex_token()
387 l->i += 1; in bc_lex_token()
396 case '=': in bc_lex_token()
402 case '>': in bc_lex_token()
405 c2 = l->buf[l->i]; in bc_lex_token()
410 l->i += 1; in bc_lex_token()
419 case '[': in bc_lex_token()
420 case ']': in bc_lex_token()
422 l->t = (BcLexType) (c - '[' + BC_LEX_LBRACKET); in bc_lex_token()
426 case '\\': in bc_lex_token()
429 if (BC_NO_ERR(l->buf[l->i] == '\n')) in bc_lex_token()
431 l->i += 1; in bc_lex_token()
432 l->t = BC_LEX_WHITESPACE; in bc_lex_token()
438 case '^': in bc_lex_token()
444 case 'a': in bc_lex_token()
445 case 'b': in bc_lex_token()
446 case 'c': in bc_lex_token()
447 case 'd': in bc_lex_token()
448 case 'e': in bc_lex_token()
449 case 'f': in bc_lex_token()
450 case 'g': in bc_lex_token()
451 case 'h': in bc_lex_token()
452 case 'i': in bc_lex_token()
453 case 'j': in bc_lex_token()
454 case 'k': in bc_lex_token()
455 case 'l': in bc_lex_token()
456 case 'm': in bc_lex_token()
457 case 'n': in bc_lex_token()
458 case 'o': in bc_lex_token()
459 case 'p': in bc_lex_token()
460 case 'q': in bc_lex_token()
461 case 'r': in bc_lex_token()
462 case 's': in bc_lex_token()
463 case 't': in bc_lex_token()
464 case 'u': in bc_lex_token()
465 case 'v': in bc_lex_token()
466 case 'w': in bc_lex_token()
467 case 'x': in bc_lex_token()
468 case 'y': in bc_lex_token()
469 case 'z': in bc_lex_token()
475 case '{': in bc_lex_token()
476 case '}': in bc_lex_token()
478 l->t = (BcLexType) (c - '{' + BC_LEX_LBRACE); in bc_lex_token()
482 case '|': in bc_lex_token()
484 c2 = l->buf[l->i]; in bc_lex_token()
491 l->i += 1; in bc_lex_token()
492 l->t = BC_LEX_OP_BOOL_OR; in bc_lex_token()