This commit is contained in:
nub31
2025-05-17 19:23:08 +02:00
parent 1cc8d30ee3
commit 3fd004281e
7 changed files with 107 additions and 115 deletions

View File

@@ -0,0 +1,6 @@
namespace Nub.Lang.Frontend.Parsing;
public class AddressOfNode(ExpressionNode expression) : ExpressionNode
{
public ExpressionNode Expression { get; } = expression;
}

View File

@@ -0,0 +1,6 @@
namespace Nub.Lang.Frontend.Parsing;
public class DereferenceNode(ExpressionNode expression) : ExpressionNode
{
public ExpressionNode Expression { get; } = expression;
}

View File

@@ -362,7 +362,7 @@ public class Parser
case Symbol.Ampersand:
{
var expression = ParsePrimaryExpression();
return new UnaryExpressionNode(UnaryExpressionOperator.AddressOf, expression);
return new AddressOfNode(expression);
}
case Symbol.Minus:
{
@@ -408,10 +408,6 @@ public class Parser
{
var field = ExpectIdentifier();
result = new StructFieldAccessorNode(result, field.Value);
if (TryExpectSymbol(Symbol.Caret))
{
result = new UnaryExpressionNode(UnaryExpressionOperator.Dereference, result);
}
} while (TryExpectSymbol(Symbol.Period));
return result;
@@ -434,11 +430,6 @@ public class Parser
}
}
if (TryExpectSymbol(Symbol.Caret))
{
return new UnaryExpressionNode(UnaryExpressionOperator.Dereference, new IdentifierNode(identifier.Value));
}
return new IdentifierNode(identifier.Value);
}

View File

@@ -8,8 +8,6 @@ public class UnaryExpressionNode(UnaryExpressionOperator @operator, ExpressionNo
public enum UnaryExpressionOperator
{
AddressOf,
Dereference,
Negate,
Invert
}