feat: implement math in compiler

This commit is contained in:
samsonium
2026-10-11 02:10:54 +03:00
parent 981603105b
commit b9c43c6ad2
8 changed files with 506 additions and 83 deletions
+34
View File
@@ -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;
+16 -5
View File
@@ -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