expressiosn can compile

This commit is contained in:
2017-09-06 14:30:07 +02:00
parent ca0cf3baed
commit c5c228f959
9 changed files with 285 additions and 24 deletions

View File

@@ -23,7 +23,7 @@ char** tokenize(char* str) {
str++;
}else {
t = str;
while (*t && *t != ' ' && *t != '(' && *t != ')') ++t;
while (*t && *t != ' ' && *t != '\n' && *t != '\t' && *t != '(' && *t != ')') ++t;
tokens[len-1] = malloc(t-str+1);
strncpy(tokens[len-1], str, t-str);
tokens[len-1][t-str] = '\0';
@@ -91,7 +91,7 @@ parse_state* read_tokens(parse_state* state) {
state->tokens++;
int n = state->node->n_children++;
state->node->children = realloc(state->node->children, n+1);
state->node->children = realloc(state->node->children, (n+1)*sizeof(sc_ast));
if (!strncmp(token, "(", 2)) {
sc_ast* list = make_list();
@@ -104,7 +104,7 @@ parse_state* read_tokens(parse_state* state) {
}
state->node->children[n] = nstate->node;
state->tokens = nstate->tokens;
state->tokens = ++nstate->tokens;
free(nstate);
} else {
state->node->children[n] = read_token(token);
@@ -119,9 +119,9 @@ sc_ast* sc_parse(char* input) {
state->tokens = tokens;
state->node = make_pseudo();
state = read_tokens(state);
while (state->tokens[0]) state = read_tokens(state);
return state->node->children[0];
return state->node;
}
const char* tag_to_string(int x) {