Blame gfs2/libgfs2/lang.h

Packit Service 360c39
#ifndef LANG_H
Packit Service 360c39
#define LANG_H
Packit Service 360c39
#include <stdint.h>
Packit Service 360c39
#include "libgfs2.h"
Packit Service 360c39
Packit Service 360c39
struct lgfs2_lang_state {
Packit Service 360c39
	int ls_colnum;
Packit Service 360c39
	int ls_linenum;
Packit Service 360c39
	int ls_errnum;
Packit Service 360c39
	struct ast_node *ls_ast_root;
Packit Service 360c39
	struct ast_node *ls_ast_tail;
Packit Service 360c39
	struct ast_node *ls_interp_curr;
Packit Service 360c39
};
Packit Service 360c39
Packit Service 360c39
typedef enum {
Packit Service 360c39
	AST_NONE,
Packit Service 360c39
	// Statements
Packit Service 360c39
	AST_ST_SET,
Packit Service 360c39
	AST_ST_GET,
Packit Service 360c39
Packit Service 360c39
	_AST_EX_START,
Packit Service 360c39
	// Expressions
Packit Service 360c39
	AST_EX_ID,
Packit Service 360c39
	AST_EX_NUMBER,
Packit Service 360c39
	AST_EX_STRING,
Packit Service 360c39
	AST_EX_ADDRESS,
Packit Service 360c39
	AST_EX_PATH,
Packit Service 360c39
	AST_EX_SUBSCRIPT,
Packit Service 360c39
	AST_EX_OFFSET,
Packit Service 360c39
	AST_EX_BLOCKSPEC,
Packit Service 360c39
	AST_EX_STRUCTSPEC,
Packit Service 360c39
	AST_EX_FIELDSPEC,
Packit Service 360c39
	AST_EX_TYPESPEC,
Packit Service 360c39
Packit Service 360c39
	// Keywords
Packit Service 360c39
	AST_KW_STATE,
Packit Service 360c39
} ast_node_t;
Packit Service 360c39
Packit Service 360c39
enum {
Packit Service 360c39
	AST_INTERP_SUCCESS	= 0, // Success
Packit Service 360c39
	AST_INTERP_FAIL		= 1, // Failure
Packit Service 360c39
	AST_INTERP_INVAL	= 2, // Invalid field/type mismatch
Packit Service 360c39
	AST_INTERP_ERR		= 3, // Something went wrong, see errno
Packit Service 360c39
};
Packit Service 360c39
Packit Service 360c39
extern const char* ast_type_string[];
Packit Service 360c39
Packit Service 360c39
struct ast_node {
Packit Service 360c39
	ast_node_t ast_type;
Packit Service 360c39
	struct ast_node *ast_left;
Packit Service 360c39
	struct ast_node *ast_right;
Packit Service 360c39
	char *ast_text;
Packit Service 360c39
	char *ast_str;
Packit Service 360c39
	uint64_t ast_num;
Packit Service 360c39
};
Packit Service 360c39
Packit Service 360c39
extern struct ast_node *ast_new(ast_node_t type, const char *text);
Packit Service 360c39
extern void ast_destroy(struct ast_node **val);
Packit Service 360c39
Packit Service 360c39
#define YYSTYPE struct ast_node *
Packit Service 360c39
Packit Service 360c39
#endif /* LANG_H */