aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/symbol.h
diff options
context:
space:
mode:
Diffstat (limited to 'symbol.h')
-rw-r--r--symbol.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/symbol.h b/symbol.h
index 9ef5a886..270ae098 100644
--- a/symbol.h
+++ b/symbol.h
@@ -78,7 +78,7 @@ enum keyword {
KW_MODIFIER = 1 << 1,
KW_QUALIFIER = 1 << 2,
KW_ATTRIBUTE = 1 << 3,
- // KW UNUSED = 1 << 4,
+ KW_BUILTIN = 1 << 4,
KW_ASM = 1 << 5,
KW_MODE = 1 << 6,
// KW UNUSED = 1 << 7,
@@ -112,11 +112,15 @@ struct decl_state {
unsigned char is_ext_visible;
};
+struct pseudo;
+struct entrypoint;
+
struct symbol_op {
enum keyword type;
int (*evaluate)(struct expression *);
int (*expand)(struct expression *, int);
int (*args)(struct expression *);
+ struct pseudo *(*linearize)(struct entrypoint *, struct expression *);
/* keywords */
struct token *(*declarator)(struct token *token, struct decl_state *ctx);
@@ -308,6 +312,7 @@ extern struct symbol *lookup_symbol(struct ident *, enum namespace);
extern struct symbol *create_symbol(int stream, const char *name, int type, int namespace);
extern void init_symbols(void);
extern void init_builtins(int stream);
+extern void init_linearized_builtins(int stream);
extern void declare_builtins(void);
extern void init_ctype(void);
extern struct symbol *alloc_symbol(struct position, int type);