rename types
This commit is contained in:
42
parser.c
42
parser.c
@@ -1,12 +1,13 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "parser.h"
|
||||
|
||||
typedef struct {
|
||||
uint32_t len;
|
||||
astNodeIndex lhs, rhs;
|
||||
AstNodeIndex lhs, rhs;
|
||||
bool trailing;
|
||||
} members;
|
||||
} Members;
|
||||
|
||||
typedef struct {
|
||||
enum {
|
||||
@@ -17,24 +18,31 @@ typedef struct {
|
||||
union {
|
||||
uint32_t end;
|
||||
} payload;
|
||||
} field_state;
|
||||
} FieldState;
|
||||
|
||||
static astTokenIndex next_token(parser* p)
|
||||
int parseRoot(Parser* p)
|
||||
{
|
||||
return ++p->tok_i;
|
||||
p->nodes.tags[p->nodes.len++] = AST_NODE_TAG_ROOT;
|
||||
p->nodes.main_tokens[p->nodes.len] = 0;
|
||||
|
||||
// members root_members = parseContainerMembers(p);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static astTokenIndex eat_token(parser* p, tokenizerTag tag)
|
||||
static AstTokenIndex nextToken(Parser* p) { return p->tok_i++; }
|
||||
|
||||
static AstTokenIndex eatToken(Parser* p, TokenizerTag tag)
|
||||
{
|
||||
return (p->token_tags[p->tok_i] == tag) ? next_token(p) : -1;
|
||||
return (p->token_tags[p->tok_i] == tag) ? nextToken(p) : -1;
|
||||
}
|
||||
|
||||
static members parse_container_members(parser* p)
|
||||
static Members parseContainerMembers(Parser* p)
|
||||
{
|
||||
const uint32_t scratch_top = p->scratch.len;
|
||||
members res = (members) {};
|
||||
Members res = (Members) {};
|
||||
// ast_token_index last_field;
|
||||
while (eat_token(p, TOKENIZER_TAG_CONTAINER_DOC_COMMENT) != -1)
|
||||
while (eatToken(p, TOKENIZER_TAG_CONTAINER_DOC_COMMENT) != -1)
|
||||
;
|
||||
|
||||
// bool trailing = false;
|
||||
@@ -166,25 +174,15 @@ static members parse_container_members(parser* p)
|
||||
case TOKENIZER_TAG_KEYWORD_WHILE:;
|
||||
const char* str = tokenizerTagString[p->token_tags[p->tok_i]];
|
||||
fprintf(stderr, "keyword %s not implemented\n", str);
|
||||
goto cleanup;
|
||||
exit(1);
|
||||
case TOKENIZER_TAG_KEYWORD_PUB:
|
||||
p->tok_i++;
|
||||
// AstNodeIndex top_level_decl = expectTopLevelDecl(*p);
|
||||
break;
|
||||
// TODO do work
|
||||
}
|
||||
}
|
||||
|
||||
cleanup:
|
||||
p->scratch.len = scratch_top;
|
||||
return res;
|
||||
}
|
||||
|
||||
int parse_root(parser* p)
|
||||
{
|
||||
p->nodes.tags[p->nodes.len++] = AST_NODE_TAG_ROOT;
|
||||
p->nodes.main_tokens[p->nodes.len] = 0;
|
||||
|
||||
// members root_members = parse_container_members(p);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user