first commit

This commit is contained in:
cozis
2021-10-31 04:17:57 +00:00
commit 7a5d0d1dcb
55 changed files with 5204 additions and 0 deletions
+73
View File
@@ -0,0 +1,73 @@
#ifndef ASTi_H
#define ASTi_H
#include "../utils/source.h"
#include "AST.h"
typedef enum {
NODE_EXPR,
} NodeKind;
typedef enum {
EXPR_POS,
EXPR_NEG,
EXPR_ADD,
EXPR_SUB,
EXPR_MUL,
EXPR_DIV,
EXPR_INT,
EXPR_FLOAT,
EXPR_STRING,
EXPR_IDENT,
} ExprKind;
typedef struct Node Node;
struct xAST {
Source *src;
Node *root;
};
struct Node {
NodeKind kind;
Node *next;
int offset,
length;
char body[];
};
typedef struct {
Node base;
ExprKind kind;
char body[];
} ExprNode;
typedef struct {
ExprNode base;
long long int val;
} IntExprNode;
typedef struct {
ExprNode base;
double val;
} FloatExprNode;
typedef struct {
ExprNode base;
char *val;
int len;
} StringExprNode;
typedef struct {
ExprNode base;
char *val;
int len;
} IdentExprNode;
typedef struct {
ExprNode base;
Node *head;
int count;
} OperExprNode;
#endif