55 lines
662 B
C
55 lines
662 B
C
#pragma once
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
|
|
/**
|
|
* Token Definitions
|
|
*/
|
|
typedef enum {
|
|
LBRACK,
|
|
RBRACK,
|
|
LCURLY,
|
|
RCURLY,
|
|
LPAREN,
|
|
RPAREN,
|
|
|
|
SEMI,
|
|
COMMA,
|
|
ARROW,
|
|
STAR,
|
|
ANDREF,
|
|
DOLLAR,
|
|
|
|
COMMENT,
|
|
ID,
|
|
NUM,
|
|
STRING_LITERAL,
|
|
|
|
VAL,
|
|
RETURN,
|
|
IF,
|
|
ELSE,
|
|
|
|
EOF_TOKEN,
|
|
ERROR
|
|
} TokenType;
|
|
|
|
typedef struct {
|
|
size_t len;
|
|
char *string;
|
|
} TokenString;
|
|
|
|
typedef struct {
|
|
TokenType type;
|
|
uint32_t line;
|
|
TokenString data;
|
|
} Token;
|
|
|
|
/**
|
|
* AST Node Definitions
|
|
*/
|
|
typedef struct ASTNode {
|
|
Token token;
|
|
struct ASTNode **children;
|
|
size_t child_count;
|
|
} ASTNode; |