Lines Matching +full:p +full:- +full:state
1 /*-
2 * SPDX-License-Identifier: BSD-4-Clause
112 int typename_top = -1;
118 * O = /[0-7]/; D = /[0-9]/; NZ = /[1-9]/;
119 * H = /[a-f0-9]/i; B = /[0-1]/; HP = /0x/i;
120 * BP = /0b/i; E = /e[+\-]?/i D+; P = /p[+\-]?/i D+;
123 * D+ E FS? -> $float;
124 * D* "." D+ E? FS? -> $float;
125 * D+ "." E? FS? -> $float; HP H+ IS? -> $int;
126 * HP H+ P FS? -> $float; NZ D* IS? -> $int;
127 * HP H* "." H+ P FS? -> $float; "0" O* IS? -> $int;
128 * HP H+ "." P FS -> $float; BP B+ IS? -> $int;
137 t.01.e+008bLuxll0Ll.aa.p+0
149 ['p'] = " FFX ",
151 ['l'] = " OOf fO S P O i O f",
165 lexi(struct parser_state *state) in lexi() argument
174 state->col_1 = state->last_nl; /* tell world that this token started in lexi()
177 state->last_nl = false; in lexi()
180 state->col_1 = false; /* leading blanks imply token is not in column in lexi()
193 struct templ *p; in lexi() local
203 table[i][s - 'A'] == ' ') { in lexi()
204 s = table[0][s - 'A']; in lexi()
207 s = table[i][s - 'A']; in lexi()
244 state->keyword = 0; in lexi()
245 if (state->last_token == structure && !state->p_l_follow) { in lexi()
249 state->last_u_d = true; in lexi()
255 state->last_u_d = (state->last_token == structure); in lexi()
257 p = bsearch(s_token, in lexi()
262 if (p == NULL) { /* not a special keyword... */ in lexi()
270 state->keyword = 4; /* a type name */ in lexi()
271 state->last_u_d = true; in lexi()
275 state->keyword = p->rwcode; in lexi()
276 state->last_u_d = true; in lexi()
277 switch (p->rwcode) { in lexi()
287 if (state->p_l_follow) { in lexi()
289 state->cast_mask |= (1 << state->p_l_follow) & ~state->not_cast_mask; in lexi()
291 if (state->last_token == period || state->last_token == unary_op) { in lexi()
292 state->keyword = 0; in lexi()
295 if (p != NULL && p->rwcode == 3) in lexi()
297 if (state->p_l_follow) in lexi()
318 if (*buf_ptr == '(' && state->tos <= 1 && state->ind_level == 0 && in lexi()
319 state->in_parameter_declaration == 0 && state->block_init == 0) { in lexi()
324 strncpy(state->procname, token, sizeof state->procname - 1); in lexi()
325 if (state->in_decl) in lexi()
326 state->in_parameter_declaration = 1; in lexi()
332 * token is in fact a declaration keyword -- one that has been in lexi()
335 else if (!state->p_l_follow && !state->block_init && in lexi()
336 !state->in_stmt && in lexi()
339 (state->last_token == semicolon || state->last_token == lbrace || in lexi()
340 state->last_token == rbrace)) { in lexi()
341 state->keyword = 4; /* a type name */ in lexi()
342 state->last_u_d = true; in lexi()
345 if (state->last_token == decl) /* if this is a declared variable, in lexi()
347 state->last_u_d = true; /* will make "int a -1" work */ in lexi()
351 /* Scan a non-alphanumeric token */ in lexi()
354 *e_token++ = *buf_ptr; /* if it is only a one-character token, it is in lexi()
362 unary_delim = state->last_u_d; in lexi()
363 state->last_nl = true; /* remember that we just had a newline */ in lexi()
414 unary_delim = state->last_u_d; in lexi()
437 * if (state->in_or_st) state->block_init = 1; in lexi()
439 /* ? code = state->block_init ? lparen : lbrace; */ in lexi()
445 /* ? code = state->block_init ? rparen : rbrace; */ in lexi()
450 unary_delim = state->last_u_d; in lexi()
451 state->last_nl = true; /* remember this so we can set 'state->col_1' in lexi()
466 case '-': in lexi()
467 case '+': /* check for -, +, --, ++ */ in lexi()
468 code = (state->last_u_d ? unary_op : binary_op); in lexi()
475 if (state->last_token == ident || state->last_token == rparen) { in lexi()
476 code = (state->last_u_d ? unary_op : postop); in lexi()
477 /* check for following ++ or -- */ in lexi()
485 /* check for operator -> */ in lexi()
490 state->want_blank = false; in lexi()
497 if (state->in_or_st) in lexi()
498 state->block_init = 1; in lexi()
519 code = (state->last_u_d ? unary_op : binary_op); in lexi()
525 if (!state->last_u_d) { in lexi()
562 unary_delim = state->last_u_d; in lexi()
565 while (*(e_token - 1) == *buf_ptr || *buf_ptr == '=') { in lexi()
574 code = (state->last_u_d ? unary_op : binary_op); in lexi()
581 state->last_u_d = unary_delim; in lexi()
591 table['-'] = table['+']; in init_constant_tt()
599 table['P'] = table['p']; in init_constant_tt()
625 if (typename_top == -1) in add_typename()
634 int p; in add_typename() local
636 for (p = 0; (comparison = strcmp(key, typenames[p])) > 0; p++) in add_typename()
640 memmove(&typenames[p + 1], &typenames[p], in add_typename()
641 sizeof(typenames[0]) * (++typename_top - p)); in add_typename()
642 typenames[p] = copy = strdup(key); in add_typename()