#ifndef _STMT_H_
#define _STMT_H_
#ifdef __cplusplus
extern "C" {
#endif
enum statement_type
{
STMT_ERR = 0, STMT_SET, STMT_PARAM, STMT_VAR, STMT_MIN, STMT_MAX,
STMT_CONS, STMT_DEF, STMT_DO, STMT_SOS
};
typedef enum statement_type StmtType;
typedef struct statement Stmt;
extern Stmt* stmt_new(StmtType type, char const* filename, int lineno,
char const* text) expects_NONNULL returns_NONNULL;
extern void stmt_free(Stmt* stmt) expects_NONNULL;
extern bool stmt_is_valid(Stmt const* stmt) is_PURE;
extern char const* stmt_get_filename(Stmt const* stmt) expects_NONNULL returns_NONNULL is_PURE;
extern int stmt_get_lineno(Stmt const* stmt) expects_NONNULL is_PURE;
extern char const* stmt_get_text(Stmt const* stmt) expects_NONNULL returns_NONNULL is_PURE;
extern void stmt_parse(Stmt* stmt) expects_NONNULL;
extern void stmt_execute(Stmt const* stmt) expects_NONNULL;
extern void stmt_print(FILE* fp, Stmt const* stmt) expects_NONNULL;
extern bool stmt_trigger_warning(int no);
extern int yyparse(void);
extern void parse_stmt(Stmt const* stmt) expects_NONNULL;
extern Stmt const* scan_get_stmt(void) returns_NONNULL is_PURE;
extern int scan_get_column(void) is_PURE;
#ifdef __cplusplus
}
#endif
#endif