Initial upload
This commit is contained in:
52
token.h
Normal file
52
token.h
Normal file
@@ -0,0 +1,52 @@
|
||||
/* vim: set filetype=c: */
|
||||
|
||||
#ifndef _TOKEN_H_
|
||||
#define _TOKEN_H_
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
typedef struct Token Token;
|
||||
struct Token;
|
||||
typedef struct TokenListItem TokenListItem;
|
||||
struct TokenListItem;
|
||||
|
||||
typedef long double NumToken;
|
||||
typedef struct SepToken SepToken;
|
||||
struct SepToken {
|
||||
char sym;
|
||||
TokenListItem* matching;
|
||||
};
|
||||
typedef char OpToken;
|
||||
typedef struct ExprToken ExprToken;
|
||||
struct ExprToken {
|
||||
Token* lhs;
|
||||
Token* op;
|
||||
Token* rhs;
|
||||
};
|
||||
|
||||
typedef struct Token Token;
|
||||
struct Token {
|
||||
enum {
|
||||
TokenTypeNull, /* Invalid type */
|
||||
TokenTypeNum,
|
||||
TokenTypeSep,
|
||||
TokenTypeOp,
|
||||
TokenTypeExpr,
|
||||
} type;
|
||||
|
||||
union {
|
||||
NumToken num;
|
||||
SepToken sep;
|
||||
OpToken op;
|
||||
ExprToken expr;
|
||||
} data;
|
||||
};
|
||||
|
||||
/* Recursively frees Token of type ExprToken and its children */
|
||||
extern void ExprToken_uninit_recursive(Token* obj);
|
||||
|
||||
extern void Token_print(const Token* obj, FILE* file);
|
||||
|
||||
extern void Token_print_as_tree(const Token* obj, FILE* file);
|
||||
|
||||
#endif /* _TOKEN_H_ */
|
||||
Reference in New Issue
Block a user