PC_graph/parser.h
2025-01-04 22:24:52 +01:00

54 lines
1.4 KiB
C

#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 */