- code = ps.block_init ? lparen : lbrace;
- break;
-
- case ('}'):
- unary_delim = true;
- code = ps.block_init ? rparen : rbrace;
- break;
-
- case 014: /* a form feed */
- unary_delim = ps.last_u_d;
- ps.last_nl = true; /* remember this so we can set 'ps.col_1'
- * right */
- code = form_feed;
- break;
-
- case (','):
- unary_delim = true;
- code = comma;
- break;
-
- case '.':
- unary_delim = false;
- code = period;
- break;
-
- case '-':
- case '+': /* check for -, +, --, ++ */
- code = (ps.last_u_d ? unary_op : binary_op);
- unary_delim = true;
-
- if (*buf_ptr == token[0]) {
- /* check for doubled character */
- *tok++ = *buf_ptr++;
- /* buffer overflow will be checked at end of loop */
- if (last_code == ident || last_code == rparen) {
- code = (ps.last_u_d ? unary_op : postop);
- /* check for following ++ or -- */
- unary_delim = false;
- }
- }
- else if (*buf_ptr == '=')
- /* check for operator += */
- *tok++ = *buf_ptr++;
- else if (token[0] == '-' && *buf_ptr == '>') {
- /* check for operator -> */
- *tok++ = *buf_ptr++;
- if (!pointer_as_binop) {
- code = unary_op;
- unary_delim = false;
- ps.want_blank = false;
- }
- }
- /* buffer overflow will be checked at end of switch */
-
- break;
-
- case '=':
- if (ps.in_or_st)
- ps.block_init = 1;
- if (chartype[*buf_ptr] == opchar) { /* we have two char
- * assignment */
- tok[-1] = *buf_ptr++;
- if ((tok[-1] == '<' || tok[-1] == '>') && tok[-1] == *buf_ptr)
- *tok++ = *buf_ptr++;
- *tok++ = '='; /* Flip =+ to += */
- *tok = 0;
- }
- code = binary_op;
- unary_delim = true;
- break;
- /* can drop thru!!! */
-
- case '>':
- case '<':
- case '!': /* ops like <, <<, <=, !=, etc */
- if (*buf_ptr == '>' || *buf_ptr == '<' || *buf_ptr == '=') {
- *tok++ = *buf_ptr;
- if (++buf_ptr >= buf_end)
- fill_buffer();
- }
- if (*buf_ptr == '=')
- *tok++ = *buf_ptr++;
- code = (ps.last_u_d ? unary_op : binary_op);
- unary_delim = true;
- break;
-
- default:
- if (token[0] == '/' && *buf_ptr == '*') {
- /* it is start of comment */
- *tok++ = '*';
-
- if (++buf_ptr >= buf_end)
- fill_buffer();
-
- code = comment;
- unary_delim = ps.last_u_d;
- break;
- }
- while (*(tok - 1) == *buf_ptr || *buf_ptr == '=') {
- /* handle ||, &&, etc, and also things as in int *****i */
- *tok++ = *buf_ptr;
- if (++buf_ptr >= buf_end)
- fill_buffer();
- }
- code = (ps.last_u_d ? unary_op : binary_op);
- unary_delim = true;