diff options
| author | Nakidai <nakidai@disroot.org> | 2025-03-24 21:01:37 +0300 |
|---|---|---|
| committer | Nakidai <nakidai@disroot.org> | 2025-03-24 21:01:37 +0300 |
| commit | f312b357ab2ec3cf83a67945f3641b964a59e8d2 (patch) | |
| tree | 425f3371eee770f64e268e9964dba29ad17bd410 /cccl.h | |
| parent | ad9d6a199db7c28f8b20f131dfb55a26e0e251de (diff) | |
| download | 3cl-f312b357ab2ec3cf83a67945f3641b964a59e8d2.tar.gz 3cl-f312b357ab2ec3cf83a67945f3641b964a59e8d2.zip | |
Add code
Diffstat (limited to 'cccl.h')
| -rw-r--r-- | cccl.h | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/cccl.h b/cccl.h new file mode 100644 index 0000000..7e5cc01 --- /dev/null +++ b/cccl.h @@ -0,0 +1,69 @@ +#ifndef __CCCL_H__ +#define __CCCL_H__ + +#include <stddef.h> + + +#define TOKENS_LIMIT 16384 + +struct cccl_File +{ + char *buffer; + size_t size; +}; + +enum cccl_TokenType +{ + cccl_Token_IDENTIFIER, + cccl_Token_COMMAND, + cccl_Token_COMMANDWITHARG, + cccl_Token_BLOCKSTART, + cccl_Token_BLOCKEND, +}; + +struct cccl_Token +{ + enum cccl_TokenType type; + char value; +}; + +enum cccl_NodeType +{ + cccl_Node_CODE, + + cccl_Node_PUSHZERO, + cccl_Node_INCREMENT, + cccl_Node_DECREMENT, + cccl_Node_ADD, + cccl_Node_SUBTRACT, + cccl_Node_REVERSE, + cccl_Node_ASSIGN, + cccl_Node_DELETE, + cccl_Node_PUSHVAR, + cccl_Node_ASSIGNLOCAL, + cccl_Node_OUTPUT, + cccl_Node_INPUT, + cccl_Node_CALL, + cccl_Node_END, + cccl_Node_CONTINUE, + + cccl_Node_PROCEDURE, + cccl_Node_INFINITE, + cccl_Node_REPEAT, + cccl_Node_CONDITIONAL, +}; + +struct cccl_Node +{ + enum cccl_NodeType type; + struct cccl_Node **in; + size_t in_length; + char value; +}; + +int cccl_allocfile(const char *path, struct cccl_File *file); + +void cccl(struct cccl_File file); +size_t tokenize(const char *code, size_t size, struct cccl_Token tokens[], size_t tokens_length); + +#endif /* __CCCL_H__ */ |