libabacus/include/interpreter.h

44 lines
1.1 KiB
C
Raw Normal View History

#ifndef LIBABACUS_INTERPRETER_H
#define LIBABACUS_INTERPRETER_H
#include "impl.h"
2018-05-11 20:36:27 -07:00
#include "libabacus.h"
2018-05-17 14:53:48 -07:00
#include "table.h"
#include "tree.h"
2018-05-11 20:36:27 -07:00
struct libab_s;
2018-05-17 15:33:38 -07:00
/**
* The interpreter struct used to encapsulate
* any interpreter-specific data.
*/
struct libab_interpreter_s {
2018-05-11 20:36:27 -07:00
struct libab_s* ab;
};
typedef struct libab_interpreter_s libab_interpreter;
2018-05-17 15:33:38 -07:00
/**
* Initializes an interpreter instance.
* @param intr the interpreter to initialize.
* @param ab the libabacus instance this interpreter belongs to.
*/
2018-05-11 20:36:27 -07:00
void libab_interpreter_init(libab_interpreter* intr, struct libab_s* ab);
2018-05-17 15:33:38 -07:00
/**
* Uses the interpreter to run the given parse tree.
* @param intr the interpreter to use to run the code.
* @param tree the tree to run.
2018-05-26 21:55:30 -07:00
* @param into the reference into which the result of the execution will be
* stored.
2018-05-17 15:33:38 -07:00
* @return the result of the execution.
*/
2018-05-17 14:53:48 -07:00
libab_result libab_interpreter_run(libab_interpreter* intr, libab_tree* tree,
libab_ref* into);
2018-05-17 15:33:38 -07:00
/**
* Frees the given interpreter.
* @param intr the interpreter to free.
*/
void libab_interpreter_free(libab_interpreter* intr);
#endif