p align="justify"> {tok; ret = FALSE; (1)
{_get_token (cb, & tok); (tok.type == TOK_EOF) break; = (! strcmp (tok.str, _token)); (! ret && (_eat_nl && tok.type == ' n')) continue; (! ret)
{_put_token_back (cb, & tok);
}
{(! _remove) _put_token_back (cb, & tok);
};
} ret;
} lexer_put_token_back (CodeBuffer * cb, TokenRec * _tokRec)
{(cb-> tok_backbuf_count> = MAX_TOKEN_BACKBUF_LEN-1)
{_error (cb, "Буфер Tokenа переповнений. n");
}> tok_backbuf [cb-> tok_backbuf_count] = * _tokRec;> tok_backbuf_count + +;
} lexer_get_token_from_backbuf (CodeBuffer * cb, TokenRec * _tokRec)
{
/* Містить буфер дані? */(Cb-> tok_backbuf_count> 0)
{> tok_backbuf_count -;
* _tokRec = cb-> tok_backbuf [cb-> tok_backbuf_count];
/* Взяли дані з буфера */TRUE;
}
{/ * Обнулити рядок 0 */
* _tokRec-> str = ' 0';
_tokRec-> type = TOK_EOF;
}
/* Буфер був порожній */
return FALSE;
} lexer_get_token (CodeBuffer * cb, TokenRec * _tokRec)
{
/* Читаємо наступний Token з буфера */
char ch; ch2 = 0; * cPtr; char buf [MAX_TOKEN_LEN];
/* Очистити буфер tokenов */(_tokRec, sizeof (TokenRec), ' 0');
* buf = * (buf +1) = * (buf +2) = ' 0';
* (_tokRec-> str) = * (_tokRec-> str +1) = * (_tokRec-> str +2) = ' 0';
_tokRec-> type = TOK_EOF;
/* Перевірка буфера tokenов */
if (lexer_get_token_from_backbuf (cb, _tokRec))
{_tokRec-> type;
}
/* Вибираємо наступний символ, видаляємо прогалини, коментарі */
ch = lexer_get_charEx (cb);
/* Перевіряємо чи є символ оператором */
switch (ch)
{'=':
_tokRec-> type = TOK_ASSIGN;
/* == */(lexer_lookahead (cb, '=', 1))
_tokRec-> type = TOK_EQ;; '+':
/* + = */(lexer_lookahead (cb, '=', 1))
_tokRec-> type = TOK_ASPLUS;
/* + + */if (lexer_lookahead (cb, '+', 1))
_tokRec-> type = TOK_INCR;
/* + */
_tokRec-...