feat: implement math in compiler
This commit is contained in:
@@ -11,6 +11,17 @@ typedef enum
|
||||
FZL_NODETYPE_BLOCK,
|
||||
FZL_NODETYPE_CALL,
|
||||
FZL_NODETYPE_LITERAL,
|
||||
FZL_NODETYPE_IDENTIFIER,
|
||||
|
||||
FZL_NODETYPE_ADD,
|
||||
FZL_NODETYPE_SUB,
|
||||
FZL_NODETYPE_MUL,
|
||||
FZL_NODETYPE_DIV,
|
||||
FZL_NODETYPE_POW,
|
||||
FZL_NODETYPE_MOD,
|
||||
|
||||
FZL_NODETYPE_UNARY_PLUS,
|
||||
FZL_NODETYPE_UNARY_MINUS
|
||||
} fzl_nodetype_t;
|
||||
|
||||
// AST node descriptor
|
||||
@@ -23,11 +34,34 @@ typedef struct fzl_node
|
||||
|
||||
union
|
||||
{
|
||||
// Array of nested nodes (for blocks, etc)
|
||||
struct
|
||||
{
|
||||
struct fzl_node **entries;
|
||||
size_t entry_count;
|
||||
} list;
|
||||
|
||||
// Call data
|
||||
struct
|
||||
{
|
||||
struct fzl_node *callee;
|
||||
|
||||
struct fzl_node **args;
|
||||
size_t args_count;
|
||||
} call;
|
||||
|
||||
// Binary operations
|
||||
struct
|
||||
{
|
||||
struct fzl_node *left;
|
||||
struct fzl_node *right;
|
||||
} binary_op;
|
||||
|
||||
// Unary operations
|
||||
struct
|
||||
{
|
||||
struct fzl_node *operand;
|
||||
} unary_op;
|
||||
};
|
||||
} fzl_node_t;
|
||||
|
||||
|
||||
@@ -8,11 +8,22 @@
|
||||
// Token type
|
||||
typedef enum
|
||||
{
|
||||
FZL_TOKTYPE_NAME,
|
||||
FZL_TOKTYPE_LPAIR,
|
||||
FZL_TOKTYPE_RPAIR,
|
||||
FZL_TOKTYPE_COMMA,
|
||||
FZL_TOKTYPE_STR_LITERAL
|
||||
FZL_TOKTYPE_NAME, // abc
|
||||
|
||||
FZL_TOKTYPE_LPAREN, // (
|
||||
FZL_TOKTYPE_RPAREN, // )
|
||||
|
||||
FZL_TOKTYPE_COMMA, // ,
|
||||
|
||||
FZL_TOKTYPE_STR_LITERAL, // ""
|
||||
FZL_TOKTYPE_NUM_LITERAL, // 123
|
||||
|
||||
FZL_TOKTYPE_STAR, // *
|
||||
FZL_TOKTYPE_SLASH, // /
|
||||
FZL_TOKTYPE_PLUS, // +
|
||||
FZL_TOKTYPE_MINUS, // -
|
||||
FZL_TOKTYPE_CARET, // ^
|
||||
FZL_TOKTYPE_PERCENT, // %
|
||||
} fzl_toktype_t;
|
||||
|
||||
// Token descriptor
|
||||
|
||||
Reference in New Issue
Block a user