aboutsummaryrefslogtreecommitdiff
path: root/src/parser.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2019-02-15 02:20:42 -0500
committerGitHub <noreply@github.com>2019-02-15 02:20:42 -0500
commit567c9b688effdb64e3995df09af4b45105515c2c (patch)
tree11bc01aa7484d427455a12502710b0ee286fb6aa /src/parser.cpp
parentee5e196f8832359cfe05808677f143d4f460f6bc (diff)
parent99b19adeb31469cbc4a906f036bb4d70d8730916 (diff)
downloadzig-567c9b688effdb64e3995df09af4b45105515c2c.tar.gz
zig-567c9b688effdb64e3995df09af4b45105515c2c.zip
Merge pull request #1965 from ziglang/c-pointer-type
implement C pointers
Diffstat (limited to 'src/parser.cpp')
-rw-r--r--src/parser.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/parser.cpp b/src/parser.cpp
index 1c1af87c51..3a6ce04647 100644
--- a/src/parser.cpp
+++ b/src/parser.cpp
@@ -2778,7 +2778,8 @@ static AstNode *ast_parse_array_type_start(ParseContext *pc) {
// PtrTypeStart
// <- ASTERISK
// / ASTERISK2
-// / LBRACKET ASTERISK RBRACKET
+// / PTRUNKNOWN
+// / PTRC
static AstNode *ast_parse_ptr_type_start(ParseContext *pc) {
Token *asterisk = eat_token_if(pc, TokenIdStar);
if (asterisk != nullptr) {
@@ -2804,6 +2805,13 @@ static AstNode *ast_parse_ptr_type_start(ParseContext *pc) {
return res;
}
+ Token *cptr = eat_token_if(pc, TokenIdBracketStarCBracket);
+ if (cptr != nullptr) {
+ AstNode *res = ast_create_node(pc, NodeTypePointerType, cptr);
+ res->data.pointer_type.star_token = cptr;
+ return res;
+ }
+
return nullptr;
}