tify"> {_get_token (cb, & currToken); ("parser_level3: Оператор =% c Значення v1 =% s n", TOK_EXP, parser_value_show_as_string (& v1)); _PAR2 (" ВІДЛАДКА parser_level3: Оператор =% c Значення v1 =% s n ", TOK_EXP, parser_value_show_as_string (& v1)); v2 = parser_level3 (cb)/* Recursively */_power (& v1, & v2);
/* Free v2 */_value_free (& v2);
} v1;
} parser_level4 (CodeBuffer * cb)
{
int oper;
oper = 0;
/* Унарний +/- приклад. (+3) + -3. */(CurrToken.type == '-' | | currToken.type == '+')
{= currToken.type; _get_token (cb, & currToken);
} v1 = parser_level5 (cb); (oper! = 0)
{_PAR2 ("ВІДЛАДКА parser_level4 (унарний +/-): Оператор =% c Значення v1 =% s n", oper, parser_value_show_as_string (& v1)); _unary (oper, & ; v1);
} v1;
} parser_level5 (CodeBuffer * cb)
{val; v1;// = {. type = TOK_NUMERIC, {. d = 0.0},. error = NULL};. type = TOK_NUMERIC;. d = 0.0;
v1.error = NULL;
/* Збереження поточного типу tokenа */
val = currToken; (currToken.type)
{
/* '(' Вираз ')'.
Приклад. "((2 + 5) * 6)"
*/TOK_PAROPEN: _get_token (cb, & currToken);
v1 = parser_bool1 (cb);
/* З правого дужкою ')'? */(CurrToken.type! = TOK_PARCLOSE)
{
/* Відсутність права дужка ')' */
v1.error = parser_format_string ("Відсутня права дужка ')'.");
} _get_token (cb, & currToken);; TOK_NUMERIC:. type = TOK_NUMERIC;. d = currToken.val.d; _get_token (cb, & currToken);
break; TOK_IDENT:
{
/* Це вбудована функція? */* Func = lookup_builtin_function (currToken.str);
if (func)
{
/* Перевірка відкриття '(' */
if (! lexer_lookahead (cb, '(', TRUE/* remove it * /))
{
/* Відсутність '(' * /. error = parser_format_string ("Відсутня ліва дужка '(' у функції% s. n", func-> name); l_end_ident;
} _get_token (cb, & currToken); = execute_builtin_function (cb, func);
/* Із закриттям ')'? */(CurrToken.type! = TOK_PARCLOSE)
{
/* Відсутність ')' * /. error = parser_format_string ("Відсутня права дужка ')'. отриманий знак '% s'. ", currToken.s...