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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user