diff options
Diffstat (limited to 'source/slang/slang-parser.cpp')
| -rw-r--r-- | source/slang/slang-parser.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/source/slang/slang-parser.cpp b/source/slang/slang-parser.cpp index 1302975df..e71b6162c 100644 --- a/source/slang/slang-parser.cpp +++ b/source/slang/slang-parser.cpp @@ -7026,7 +7026,6 @@ static NodeBase* parseSizeOfExpr(Parser* parser, void* /*userData*/) static NodeBase* parseAlignOfExpr(Parser* parser, void* /*userData*/) { - // We could have a type or a variable or an expression AlignOfExpr* alignOfExpr = parser->astBuilder->create<AlignOfExpr>(); parser->ReadMatchingToken(TokenType::LParent); @@ -7058,6 +7057,17 @@ static NodeBase* parseCountOfExpr(Parser* parser, void* /*userData*/) return countOfExpr; } +static NodeBase* parseAddressOfExpr(Parser* parser, void* /*userData*/) +{ + // We could have a type or a variable or an expression + AddressOfExpr* addressOfExpr = parser->astBuilder->create<AddressOfExpr>(); + + parser->ReadMatchingToken(TokenType::LParent); + addressOfExpr->arg = parser->ParseExpression(); + parser->ReadMatchingToken(TokenType::RParent); + return addressOfExpr; +} + static NodeBase* parseTryExpr(Parser* parser, void* /*userData*/) { auto tryExpr = parser->astBuilder->create<TryExpr>(); @@ -9648,6 +9658,7 @@ static const SyntaxParseInfo g_parseSyntaxEntries[] = { _makeParseExpr("sizeof", parseSizeOfExpr), _makeParseExpr("alignof", parseAlignOfExpr), _makeParseExpr("countof", parseCountOfExpr), + _makeParseExpr("__getAddress", parseAddressOfExpr), }; ConstArrayView<SyntaxParseInfo> getSyntaxParseInfos() |
