parser start, no clue if i'm doing it right

This commit is contained in:
2026-04-13 08:19:17 +02:00
parent 348c0201de
commit 1b1d6e78d5
5 changed files with 148 additions and 1 deletions

35
src/parser.h Normal file
View File

@@ -0,0 +1,35 @@
#include "types.h"
#include "lexer.h"
typedef enum noomP_NodeType {
NOOMP_NODE_PROGRAM,
} noomP_NodeType;
typedef struct noomP_Node {
noomP_NodeType type;
noom_uint_t subnodec;
noom_uint_t subnode_cap;
struct noomP_Node** subnodes;
struct noomP_Node* previous_node;
} noomP_Node;
typedef struct noomP_Parser { // todo: track location in code with line/column?
const char* code;
const char* filename;
noom_uint_t lex_offset;
noomP_Node* last_node;
} noomP_Parser;
int noomP_peek(noomP_Parser* parser, noomL_Token* token);
void noomP_skip(noomP_Parser* parser, noomL_Token* token);
noomP_Node* noomP_allocNode(noomP_Parser* parser);
noomP_Node* noomP_parseStatement(noomP_Parser* parser);
int noomP_parse(const char* code, const char* filename, noomP_Node** outpointer);
int noomP_initParser(noomP_Parser* parser, const char* code, const char* filename);