diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2019-02-10 00:14:30 -0500 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2019-02-10 00:14:30 -0500 |
| commit | b8cbe3872e702ab8ec388e75cb711330a45825b0 (patch) | |
| tree | 3f0162c85bee328083466f1c2d164eb4035450bb /src/tokenizer.cpp | |
| parent | caf672c49586f1af5e3d41ae200aded991b8b0f7 (diff) | |
| download | zig-b8cbe3872e702ab8ec388e75cb711330a45825b0.tar.gz zig-b8cbe3872e702ab8ec388e75cb711330a45825b0.zip | |
added C pointer type and implicit int-to-ptr for this type
See #1059
Diffstat (limited to 'src/tokenizer.cpp')
| -rw-r--r-- | src/tokenizer.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/tokenizer.cpp b/src/tokenizer.cpp index 3acd605748..9ff6ed3bbe 100644 --- a/src/tokenizer.cpp +++ b/src/tokenizer.cpp @@ -221,6 +221,7 @@ enum TokenizeState { TokenizeStateError, TokenizeStateLBracket, TokenizeStateLBracketStar, + TokenizeStateLBracketStarC, }; @@ -846,7 +847,6 @@ void tokenize(Buf *buf, Tokenization *out) { switch (c) { case '*': t.state = TokenizeStateLBracketStar; - set_token_id(&t, t.cur_tok, TokenIdBracketStarBracket); break; default: // reinterpret as just an lbracket @@ -858,6 +858,21 @@ void tokenize(Buf *buf, Tokenization *out) { break; case TokenizeStateLBracketStar: switch (c) { + case 'c': + t.state = TokenizeStateLBracketStarC; + set_token_id(&t, t.cur_tok, TokenIdBracketStarCBracket); + break; + case ']': + set_token_id(&t, t.cur_tok, TokenIdBracketStarBracket); + end_token(&t); + t.state = TokenizeStateStart; + break; + default: + invalid_char_error(&t, c); + } + break; + case TokenizeStateLBracketStarC: + switch (c) { case ']': end_token(&t); t.state = TokenizeStateStart; @@ -1491,6 +1506,7 @@ void tokenize(Buf *buf, Tokenization *out) { case TokenizeStateLineStringContinue: case TokenizeStateLineStringContinueC: case TokenizeStateLBracketStar: + case TokenizeStateLBracketStarC: tokenize_error(&t, "unexpected EOF"); break; case TokenizeStateLineComment: @@ -1528,6 +1544,7 @@ const char * token_name(TokenId id) { case TokenIdBitShiftRightEq: return ">>="; case TokenIdBitXorEq: return "^="; case TokenIdBracketStarBracket: return "[*]"; + case TokenIdBracketStarCBracket: return "[*c]"; case TokenIdCharLiteral: return "CharLiteral"; case TokenIdCmpEq: return "=="; case TokenIdCmpGreaterOrEq: return ">="; |
