mirror of
https://github.com/odin-lang/Odin.git
synced 2026-01-03 11:42:28 +00:00
Make tags use #+ syntax instead of //+ syntax so it no longer looks like a comment. Old style still works but is deprecated with a warning. Using unknown tags is now an error instead of a warning. There is a new token for #+ which consumes the whole line (or until it hits a comment). The tags are parsed like before. There are errors to tell you if you use something invalid in the pre-package-line block.
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
TOKEN_KIND(Token_Invalid, "Invalid"), \
|
||||
TOKEN_KIND(Token_EOF, "EOF"), \
|
||||
TOKEN_KIND(Token_Comment, "Comment"), \
|
||||
TOKEN_KIND(Token_FileTag, "FileTag"), \
|
||||
\
|
||||
TOKEN_KIND(Token__LiteralBegin, ""), \
|
||||
TOKEN_KIND(Token_Ident, "identifier"), \
|
||||
@@ -939,6 +940,20 @@ gb_internal void tokenizer_get_token(Tokenizer *t, Token *token, int repeat=0) {
|
||||
if (t->curr_rune == '!') {
|
||||
token->kind = Token_Comment;
|
||||
tokenizer_skip_line(t);
|
||||
} else if (t->curr_rune == '+') {
|
||||
token->kind = Token_FileTag;
|
||||
|
||||
// Skip the line or until it ends or until we hit was is probably a comment.
|
||||
// The parsing of tags happens in `parse_file`.
|
||||
while (t->curr_rune != GB_RUNE_EOF) {
|
||||
if (t->curr_rune == '\n') {
|
||||
break;
|
||||
}
|
||||
if (t->curr_rune == '/') {
|
||||
break;
|
||||
}
|
||||
advance_to_next_rune(t);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case '/':
|
||||
|
||||
Reference in New Issue
Block a user