cast syntax change

This commit is contained in:
nub31
2025-05-17 22:48:08 +02:00
parent 6c04e39071
commit f362105a11
2 changed files with 20 additions and 19 deletions

View File

@@ -19,5 +19,5 @@ global func main(argc: i64, argv: i64) {
parent = &parent
}
printf("%s\n", (&test)^.parent^.name^)
printf("%s\n", <string>(test.parent^.name^))
}

View File

@@ -307,9 +307,9 @@ public class Parser
private ExpressionNode ParsePrimaryExpression()
{
var token = ExpectToken();
ExpressionNode expr;
var token = ExpectToken();
switch (token)
{
case LiteralToken literal:
@@ -349,28 +349,21 @@ public class Parser
{
case Symbol.OpenParen:
{
// This is ugly
var nextToken = Peek();
if (nextToken is { Value: IdentifierToken or SymbolToken { Symbol: Symbol.Caret } })
{
var startIndex = _index;
var type = ParseType();
if (TryExpectSymbol(Symbol.CloseParen))
{
var expressionToCast = ParseExpression();
expr = new CastNode(type, expressionToCast);
break;
}
_index = startIndex;
}
var expression = ParseExpression();
ExpectSymbol(Symbol.CloseParen);
expr = expression;
break;
}
case Symbol.LessThan:
{
var type = ParseType();
ExpectSymbol(Symbol.GreaterThan);
ExpectSymbol(Symbol.OpenParen);
var expressionToCast = ParseExpression();
ExpectSymbol(Symbol.CloseParen);
expr = new CastNode(type, expressionToCast);
break;
}
case Symbol.New:
{
var type = ParseType();
@@ -438,6 +431,14 @@ public class Parser
continue;
}
// if (TryExpectSymbol(Symbol.OpenBracket))
// {
// var index = ParseExpression();
// ExpectSymbol(Symbol.CloseBracket);
// expr = new ArrayIndexNode(expr, index);
// continue;
// }
break;
}