#ifndef PARSER_H #define PARSER_H #include "tree.h" #include "lex.h" /** * @brief Syntaktický analyzátor (parser) */ struct parser { struct lexer lexer; struct error_buffer eb; }; /** * @brief Zpracuje n výrazů ze vstupního řetězce * * @param parser Parser * @param str Vstupní řetězec * @param variable_name Název proměnné * @param out_nodes Adresa na pole, kam budou adresy kořenových uzlů výrazů uloženy * @param n Počet výrazů * * @return 1 při úspěchu, 0 při chybě */ int parser_parse_n(struct parser *parser, const char *str, const char *variable_name, struct expr_node **out_nodes, size_t n); /** * @brief Zpracuje jeden výraz ze vstupního řetězce * * @param parser Parser * @param str Vstupní řetězec * @param variable_name Název proměnné * @return Adresa kořenového uzlu výrazu */ struct expr_node *parser_parse(struct parser *parser, const char *str, const char *variable_name); /** * @brief Vrátí kód chyby nastalé během syntaktické analýzy * * @param parser Parser * @return Chybový kód */ enum error_code parser_get_error(const struct parser *parser); /** * @brief Vrátí textovou reprezentaci chyby nastalé během syntaktické analýzy * * @param parser Parser * @return Řetězec obsahující text chyby */ const char *parser_get_error_text(const struct parser *parser); #endif /* PARSER_H */