(double x); round_num (double d, unsigned int dec_places);
/* Зберігання глобальних tokenов для функцій які не аналізують їх */
TokenRec currToken; parser_evaluate (CodeBuffer * cb)
{
/* Початок parsingа для col 0, line 1 */> curr_pos = 0;> line_num = 1; (cb-> char_backbuf, ' 0', MAX_CHAR_BACKBUF_LEN);> tok_backbuf_count = 0; _variable_add_standard_constants (cb); v1 = parser_statements (cb);
/* Необхідно звільнити v1 після використання. Виклик parser_value_free (& v1); */v1;
} parser_do_print (ParserVal * v, int arg_count) {buffer [1024]; _convert_to_numeric (v);> s = parser_format_string ("Результат:% g", v-> d); -> RichEdit1-> Lines-> Add (v-> s);;
} parser_statements (CodeBuffer * cb)
{v1; _value_init_to_numeric (& v1, 0.0); _get_token (cb, & currToken); (currToken.type! = TOK_EOF)
{= parser_assign (cb); (v1.error)
{_error (cb, v1.error, TRUE); v1;
} (v1.type)
{TOK_STRING:; TOK_NUMERIC:
break; ' n':
/* Пуста інструкція * /;
}
}
/* Необхідно звільнити V1 після використання.
parser_value_free (& v1);
*/v1;
} parser_assign (CodeBuffer * cb)
{v1; ** variables = parser_variable_create_list ();
/* Поточний token ідентифікатор а наступний token знак '=' */
while (currToken.type == TOK_IDENT && lexer_lookahead (cb, '=', TRUE/* remove it * /))
{* var = (ParserVariable *) calloc (1, sizeof (ParserVariable));> name = parser_format_string ("% s", currToken.str); _value_init_to_numeric (& var-> ; val, 0.0);
/* Додати змінну в список */_variable_add_to_list (variables, var); _get_token (cb, & currToken);
}
/* Аналіз і оцінка значення */= parser_bool1 (cb);
if (! v1.error)
{_t i; (i = 0; i
{(! variables [i]) continue; _value_copy (& v1, & variables [i] -> val); _variable_add_to_list (cb-> variable_list, variables [i]);
}
} (variables); v1;
} parser_bool1 (CodeBuffer * cb)
{oper; v1 = parser_bool2 (cb);
oper = currToken.type;
/* Логічний оператор: '&&' Логічне AND */
while (oper == TOK_AND)
{_PAR2 ("ВІДЛАДКА parser_bool1 (&&): Оператор =% c Значення v1 =% s n", oper, par...