parsing code for defer and more

* disable goto and label support see #44
 * refactor the way block contexts work
This commit is contained in:
Andrew Kelley
2016-02-05 23:20:34 -07:00
parent 4339d55562
commit 6a2ede5a6e
11 changed files with 347 additions and 329 deletions

View File

@@ -102,6 +102,7 @@ const char * zig_keywords[] = {
"pub", "export", "import", "c_import", "if", "else", "goto", "asm",
"volatile", "struct", "enum", "while", "for", "continue", "break",
"null", "noalias", "switch", "undefined", "error", "type", "inline",
"defer",
};
bool is_zig_keyword(Buf *buf) {
@@ -275,6 +276,8 @@ static void end_token(Tokenize *t) {
t->cur_tok->id = TokenIdKeywordType;
} else if (mem_eql_str(token_mem, token_len, "inline")) {
t->cur_tok->id = TokenIdKeywordInline;
} else if (mem_eql_str(token_mem, token_len, "defer")) {
t->cur_tok->id = TokenIdKeywordDefer;
}
t->cur_tok = nullptr;
@@ -1090,6 +1093,7 @@ const char * token_name(TokenId id) {
case TokenIdKeywordError: return "error";
case TokenIdKeywordType: return "type";
case TokenIdKeywordInline: return "inline";
case TokenIdKeywordDefer: return "defer";
case TokenIdLParen: return "(";
case TokenIdRParen: return ")";
case TokenIdComma: return ",";