authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2016-01-22 16:05:29-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2016-01-22 16:05:29-07:00
log72fa03badad2e5837f639359a63a75abaa99a479
tree81659e3c9f4e2b22e5d39df221ebebc5553a1285
parentb61406b60738555cd267542f446a5f4cdf50e0b2

add undefined reserved word


4 files changed, 21 insertions(+), 4 deletions(-)

doc/langref.md+16-3
...@@ -143,7 +143,7 @@ GotoExpression: "goto" "Symbol"...@@ -143,7 +143,7 @@ GotoExpression: "goto" "Symbol"
143143
144GroupedExpression : "(" Expression ")"144GroupedExpression : "(" Expression ")"
145145
146KeywordLiteral : "true" | "false" | "null" | "break" | "continue"146KeywordLiteral : "true" | "false" | "null" | "break" | "continue" | "undefined"
147```147```
148148
149## Operator Precedence149## Operator Precedence
...@@ -216,10 +216,23 @@ A slice can be obtained with the slicing syntax: `array[start...end]`...@@ -216,10 +216,23 @@ A slice can be obtained with the slicing syntax: `array[start...end]`
216216
217Example: `"aoeu"[0...2]` has type `[]u8`.217Example: `"aoeu"[0...2]` has type `[]u8`.
218218
219### Struct Types219### Struct Type
220TODO220TODO
221221
222### Pointer Types222### Enum Type
223
224TODO
225
226### Maybe Type
227
228TODO
229
230### Error Type
231
232TODO
233
234### Pointer Type
235
223TODO236TODO
224237
225### Unreachable Type238### Unreachable Type
doc/vim/syntax/zig.vim+1-1
...@@ -13,7 +13,7 @@ syn keyword zigStatement goto break return continue asm...@@ -13,7 +13,7 @@ syn keyword zigStatement goto break return continue asm
13syn keyword zigConditional if else switch13syn keyword zigConditional if else switch
14syn keyword zigRepeat while for14syn keyword zigRepeat while for
1515
16syn keyword zigConstant null16syn keyword zigConstant null undefined
17syn keyword zigKeyword fn import17syn keyword zigKeyword fn import
18syn keyword zigType bool i8 u8 i16 u16 i32 u32 i64 u64 isize usize f32 f64 f128 void unreachable type18syn keyword zigType bool i8 u8 i16 u16 i32 u32 i64 u64 isize usize f32 f64 f128 void unreachable type
1919
src/tokenizer.cpp+3
...@@ -245,6 +245,8 @@ static void end_token(Tokenize *t) {...@@ -245,6 +245,8 @@ static void end_token(Tokenize *t) {
245 t->cur_tok->id = TokenIdKeywordNoAlias;245 t->cur_tok->id = TokenIdKeywordNoAlias;
246 } else if (mem_eql_str(token_mem, token_len, "switch")) {246 } else if (mem_eql_str(token_mem, token_len, "switch")) {
247 t->cur_tok->id = TokenIdKeywordSwitch;247 t->cur_tok->id = TokenIdKeywordSwitch;
248 } else if (mem_eql_str(token_mem, token_len, "undefined")) {
249 t->cur_tok->id = TokenIdKeywordUndefined;
248 }250 }
249251
250 t->cur_tok = nullptr;252 t->cur_tok = nullptr;
...@@ -1043,6 +1045,7 @@ const char * token_name(TokenId id) {...@@ -1043,6 +1045,7 @@ const char * token_name(TokenId id) {
1043 case TokenIdKeywordNull: return "null";1045 case TokenIdKeywordNull: return "null";
1044 case TokenIdKeywordNoAlias: return "noalias";1046 case TokenIdKeywordNoAlias: return "noalias";
1045 case TokenIdKeywordSwitch: return "switch";1047 case TokenIdKeywordSwitch: return "switch";
1048 case TokenIdKeywordUndefined: return "undefined";
1046 case TokenIdLParen: return "(";1049 case TokenIdLParen: return "(";
1047 case TokenIdRParen: return ")";1050 case TokenIdRParen: return ")";
1048 case TokenIdComma: return ",";1051 case TokenIdComma: return ",";
src/tokenizer.hpp+1
...@@ -37,6 +37,7 @@ enum TokenId {...@@ -37,6 +37,7 @@ enum TokenId {
37 TokenIdKeywordNull,37 TokenIdKeywordNull,
38 TokenIdKeywordNoAlias,38 TokenIdKeywordNoAlias,
39 TokenIdKeywordSwitch,39 TokenIdKeywordSwitch,
40 TokenIdKeywordUndefined,
40 TokenIdLParen,41 TokenIdLParen,
41 TokenIdRParen,42 TokenIdRParen,
42 TokenIdComma,43 TokenIdComma,