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"
143143
144144GroupedExpression : "(" Expression ")"
145145
146KeywordLiteral : "true" | "false" | "null" | "break" | "continue"
146KeywordLiteral : "true" | "false" | "null" | "break" | "continue" | "undefined"
147147```
148148
149149## Operator Precedence
......@@ -216,10 +216,23 @@ A slice can be obtained with the slicing syntax: `array[start...end]`
216216
217217Example: `"aoeu"[0...2]` has type `[]u8`.
218218
219### Struct Types
219### Struct Type
220220TODO
221221
222### Pointer Types
222### Enum Type
223
224TODO
225
226### Maybe Type
227
228TODO
229
230### Error Type
231
232TODO
233
234### Pointer Type
235
223236TODO
224237
225238### Unreachable Type
doc/vim/syntax/zig.vim+1-1
......@@ -13,7 +13,7 @@ syn keyword zigStatement goto break return continue asm
1313syn keyword zigConditional if else switch
1414syn keyword zigRepeat while for
1515
16syn keyword zigConstant null
16syn keyword zigConstant null undefined
1717syn keyword zigKeyword fn import
1818syn 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) {
245245 t->cur_tok->id = TokenIdKeywordNoAlias;
246246 } else if (mem_eql_str(token_mem, token_len, "switch")) {
247247 t->cur_tok->id = TokenIdKeywordSwitch;
248 } else if (mem_eql_str(token_mem, token_len, "undefined")) {
249 t->cur_tok->id = TokenIdKeywordUndefined;
248250 }
249251
250252 t->cur_tok = nullptr;
......@@ -1043,6 +1045,7 @@ const char * token_name(TokenId id) {
10431045 case TokenIdKeywordNull: return "null";
10441046 case TokenIdKeywordNoAlias: return "noalias";
10451047 case TokenIdKeywordSwitch: return "switch";
1048 case TokenIdKeywordUndefined: return "undefined";
10461049 case TokenIdLParen: return "(";
10471050 case TokenIdRParen: return ")";
10481051 case TokenIdComma: return ",";
src/tokenizer.hpp+1
......@@ -37,6 +37,7 @@ enum TokenId {
3737 TokenIdKeywordNull,
3838 TokenIdKeywordNoAlias,
3939 TokenIdKeywordSwitch,
40 TokenIdKeywordUndefined,
4041 TokenIdLParen,
4142 TokenIdRParen,
4243 TokenIdComma,