2018-02-10 22:17:08 -08:00
|
|
|
#ifndef LIBABACUS_PARSER_H
|
|
|
|
#define LIBABACUS_PARSER_H
|
|
|
|
|
|
|
|
#include "table.h"
|
|
|
|
#include "ll.h"
|
|
|
|
#include "tree.h"
|
2018-03-06 16:47:11 -08:00
|
|
|
#include "parsetype.h"
|
2018-02-10 22:17:08 -08:00
|
|
|
|
2018-02-11 22:23:02 -08:00
|
|
|
/**
|
|
|
|
* The parser that is used by libabacus
|
|
|
|
* to store information for converting
|
|
|
|
* tokens into trees.
|
|
|
|
*/
|
|
|
|
struct libab_parser_s {
|
|
|
|
libab_table* base_table;
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct libab_parser_s libab_parser;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Initializes the parser.
|
|
|
|
* @param parser the parser to intialize.
|
|
|
|
* @param table the table of "reserved" entries like operators.
|
|
|
|
*/
|
|
|
|
void libab_parser_init(libab_parser* parser, libab_table* table);
|
2018-02-10 22:17:08 -08:00
|
|
|
/**
|
|
|
|
* Parses the given list of tokens into the given tree pointer.
|
2018-02-11 22:23:02 -08:00
|
|
|
* @param parser the parser to use for parsing text.
|
2018-02-10 22:17:08 -08:00
|
|
|
* @param tokens the tokens to use for parsing.
|
|
|
|
* @param string the string to use for determining token values.
|
|
|
|
* @param store_into tree pointer to store the new data into.
|
|
|
|
*/
|
2018-02-11 22:23:02 -08:00
|
|
|
libab_result libab_parser_parse(libab_parser* parser, ll* tokens,
|
|
|
|
const char* string, libab_tree** store_into);
|
2018-03-06 16:47:11 -08:00
|
|
|
libab_result libab_parser_parse_type(libab_parser* parser, ll* tokens,
|
|
|
|
const char* string, libab_parsetype** store_into);
|
2018-02-11 22:23:02 -08:00
|
|
|
/**
|
|
|
|
* Releases the resources allocated by the parser.
|
|
|
|
* @param parser the parser to release.
|
|
|
|
*/
|
|
|
|
void libab_parser_free(libab_parser* parser);
|
2018-02-10 22:17:08 -08:00
|
|
|
|
|
|
|
#endif
|