Commit 72fa03bada
Changed files (4)
doc
vim
syntax
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,