token_match_pound

This commit is contained in:
Krzosa Karol
2022-06-12 12:14:15 +02:00
parent cd3098da45
commit 526967abbd
7 changed files with 23 additions and 11 deletions

View File

@@ -139,7 +139,6 @@ lex_parse_ident(Intern_Table *table, Lex_Stream *s, Token *t){
while(lex_is_alphanumeric(lexc(s)) || lexc(s) == '_')
lex_advance(s);
lex_set_len(s,t);
t->intern_val = intern_string(table, t->string);
}
#define CASE2(op, OpName, Assign) \
@@ -353,11 +352,12 @@ lex__stream(Lexer *lexer){
CASE3('|', TK_BitOr, TK_OrAssign, TK_Or);
case '#': {
t.kind = TK_Pound;
lex_parse_ident(table, s, &t);
if(t.intern_val.str == intern_foreign.str){
t.kind = TK_FOREIGN;
}
else token_error(&t, "Unrecognized #note"_s);
t.str += 1;
t.len -= 1;
t.intern_val = intern_string(table, t.string);
if(t.len == 0) token_error(&t, "Macro token without content"_s);
}break;
case '.': {
@@ -509,6 +509,7 @@ lex__stream(Lexer *lexer){
case 'x':case 'Z':case 'z':case 'Y':case 'y':case '_': {
t.kind = TK_Identifier;
lex_parse_ident(table, s, &t);
t.intern_val = intern_string(table, t.string);
if(lex_is_keyword(table, t.intern_val)){
t.kind = TK_Keyword;
}
@@ -625,7 +626,6 @@ name(Token_Kind kind){
case TK_Float: return "Float";
case TK_Integer: return "int";
case TK_Keyword: return "Keyword";
case TK_FOREIGN: return "#foreign";
case CLOSE_SCOPE: return "Close_Scope";
case OPEN_SCOPE: return "Open_Scope";
case SAME_SCOPE: return "Same_Scope";