Commit 72fa03bada

Andrew Kelley <superjoe30@gmail.com>
2016-01-23 00:05:29
add undefined reserved word
1 parent b61406b
Changed files (4)
doc/vim/syntax/zig.vim
@@ -13,7 +13,7 @@ syn keyword zigStatement goto break return continue asm
 syn keyword zigConditional if else switch
 syn keyword zigRepeat while for
 
-syn keyword zigConstant null
+syn keyword zigConstant null undefined
 syn keyword zigKeyword fn import
 syn keyword zigType bool i8 u8 i16 u16 i32 u32 i64 u64 isize usize f32 f64 f128 void unreachable type
 
doc/langref.md
@@ -143,7 +143,7 @@ GotoExpression: "goto" "Symbol"
 
 GroupedExpression : "(" Expression ")"
 
-KeywordLiteral : "true" | "false" | "null" | "break" | "continue"
+KeywordLiteral : "true" | "false" | "null" | "break" | "continue" | "undefined"
 ```
 
 ## Operator Precedence
@@ -216,10 +216,23 @@ A slice can be obtained with the slicing syntax: `array[start...end]`
 
 Example: `"aoeu"[0...2]` has type `[]u8`.
 
-### Struct Types
+### Struct Type
 TODO
 
-### Pointer Types
+### Enum Type
+
+TODO
+
+### Maybe Type
+
+TODO
+
+### Error Type
+
+TODO
+
+### Pointer Type
+
 TODO
 
 ### Unreachable Type
src/tokenizer.cpp
@@ -245,6 +245,8 @@ static void end_token(Tokenize *t) {
         t->cur_tok->id = TokenIdKeywordNoAlias;
     } else if (mem_eql_str(token_mem, token_len, "switch")) {
         t->cur_tok->id = TokenIdKeywordSwitch;
+    } else if (mem_eql_str(token_mem, token_len, "undefined")) {
+        t->cur_tok->id = TokenIdKeywordUndefined;
     }
 
     t->cur_tok = nullptr;
@@ -1043,6 +1045,7 @@ const char * token_name(TokenId id) {
         case TokenIdKeywordNull: return "null";
         case TokenIdKeywordNoAlias: return "noalias";
         case TokenIdKeywordSwitch: return "switch";
+        case TokenIdKeywordUndefined: return "undefined";
         case TokenIdLParen: return "(";
         case TokenIdRParen: return ")";
         case TokenIdComma: return ",";
src/tokenizer.hpp
@@ -37,6 +37,7 @@ enum TokenId {
     TokenIdKeywordNull,
     TokenIdKeywordNoAlias,
     TokenIdKeywordSwitch,
+    TokenIdKeywordUndefined,
     TokenIdLParen,
     TokenIdRParen,
     TokenIdComma,