інних переповнений. n", FALSE); -1;
} parser_variable_find (ParserVariable * variables [], char * name)
{i; (i = 0; i
{(! variables [i]) break; (! strcmp (name, variables [i] -> name)) return i;
} -1;
} parser_variable_print_all (ParserVariable * variables [])
{(! variables) return; _t i; (i = 0; i
{(! variables [i]) continue; * var = variables [i]; (var-> val.type)
{TOK_NUMERIC: ("% s =% s (numeric). n", var-> name, parser_value_show_as_string (& var-> val));; TOK_STRING: (" ;% s =% s (string). n ", var-> name, var-> val.s);;: ("% s Невідомий тип змінної% d. n ", var-> name, var-> val.type);;
}
}
} * parser_variable_get_debug_text (ParserVariable * variables [])
{
/* Return a long string (text) with variable names and values.for inspection and debugging.
*/(! variables) return NULL; * text = parser_format_string ("Змінні: n"); _t i; (i = 0; i
{(! variables [i]) continue; * var = variables [i]; * tmp; = NULL; (var-> val.type)
{TOK_NUMERIC: = parser_format_string ("% s =% s (numeric). n", var-> name, parser_value_show_as_string (& var-> val));; TOK_STRING: = parser_format_string ("% s =% s (string). n", var-> name, var-> val.s);;: = parser_format_string ("% s Невідомий тип змінної% d. n" ;, var-> name, var-> val.type);;
} (tmp)
{* tmp2 = parser_format_string ("% s% s", text, tmp); (text); = tmp2;
} (tmp);
} text;
} parser_variable_delete (ParserVariable * var)
{(! var) return; _value_delete (& var-> val); (var-> name);> name = NULL;
} parser_variable_delete_all (ParserVariable * variables [])
{(! variables) return; _t i; (i = 0; i
{_variable_delete (variables [i]);
} (variables); = NULL;
} str_icmp (char * s1, char * s2)
{strcmp (s1, s2);
}
Lexer.cpp
# include
# include
# include
# include
# include "lexer.h"
# include "parser.h" lexer_lookahead_token (CodeBuffer * cb, char * _token, int _remove/* Видалити якщо знайшли? * /, int _eat_nl/* Шукати переклади рядки? ' n'? * /)
<...