wip: working on variables
This commit is contained in:
@@ -59,16 +59,30 @@ fzl_token_t *parse_name(fzl_reader_t *reader)
|
||||
lpos++;
|
||||
size++;
|
||||
} while ((reader->source[lpos] >= 'A' && reader->source[lpos] <= 'Z') ||
|
||||
(reader->source[lpos] >= 'a' && reader->source[lpos] <= 'z'));
|
||||
(reader->source[lpos] >= 'a' && reader->source[lpos] <= 'z') ||
|
||||
(reader->source[lpos] >= '0' && reader->source[lpos] <= '9') ||
|
||||
(reader->source[lpos] == '_'));
|
||||
|
||||
char *value = malloc(size);
|
||||
char *value = malloc(size + 1);
|
||||
memcpy(value, reader->source + reader->position, size);
|
||||
value[size] = '\0';
|
||||
|
||||
size_t start = reader->position;
|
||||
move(reader, size);
|
||||
|
||||
fzl_token_t *tok = fzl_mktoken(FZL_TOKTYPE_NAME, reader->line_n,
|
||||
start - reader->line_start, value, size);
|
||||
fzl_token_t *tok;
|
||||
size_t line = reader->line_n;
|
||||
size_t pos = start - reader->line_start;
|
||||
|
||||
if (strcmp(value, "str") == 0 || strcmp(value, "char") == 0 ||
|
||||
strcmp(value, "uint") == 0 || strcmp(value, "int") == 0 ||
|
||||
strcmp(value, "i8") == 0 || strcmp(value, "i16") == 0 ||
|
||||
strcmp(value, "i32") == 0 || strcmp(value, "i64") == 0 ||
|
||||
strcmp(value, "u8") == 0 || strcmp(value, "u16") == 0 ||
|
||||
strcmp(value, "u32") == 0 || strcmp(value, "u64") == 0)
|
||||
tok = fzl_mktoken(FZL_TOKTYPE_TYPE, line, pos, value, size);
|
||||
else
|
||||
tok = fzl_mktoken(FZL_TOKTYPE_NAME, line, pos, value, size);
|
||||
free(value);
|
||||
|
||||
return tok;
|
||||
@@ -198,7 +212,10 @@ int fzl_read(fzl_reader_t *reader)
|
||||
token = add_single(reader, FZL_TOKTYPE_CARET);
|
||||
else if (curr == '%')
|
||||
token = add_single(reader, FZL_TOKTYPE_PERCENT);
|
||||
else if (curr >= 'A' && curr <= 'Z' || curr >= 'a' && curr <= 'z')
|
||||
else if (curr == '=')
|
||||
token = add_single(reader, FZL_TOKTYPE_EQ);
|
||||
else if (curr >= 'A' && curr <= 'Z' || curr >= 'a' && curr <= 'z' ||
|
||||
curr == '_')
|
||||
token = parse_name(reader);
|
||||
else if (curr >= '0' && curr <= '9')
|
||||
token = parse_number(reader);
|
||||
|
||||
Reference in New Issue
Block a user