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