...
This commit is contained in:
6
src/compiler/Nub.Lang/Frontend/Parsing/AddressOfNode.cs
Normal file
6
src/compiler/Nub.Lang/Frontend/Parsing/AddressOfNode.cs
Normal file
@@ -0,0 +1,6 @@
|
||||
namespace Nub.Lang.Frontend.Parsing;
|
||||
|
||||
public class AddressOfNode(ExpressionNode expression) : ExpressionNode
|
||||
{
|
||||
public ExpressionNode Expression { get; } = expression;
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
namespace Nub.Lang.Frontend.Parsing;
|
||||
|
||||
public class DereferenceNode(ExpressionNode expression) : ExpressionNode
|
||||
{
|
||||
public ExpressionNode Expression { get; } = expression;
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -8,8 +8,6 @@ public class UnaryExpressionNode(UnaryExpressionOperator @operator, ExpressionNo
|
||||
|
||||
public enum UnaryExpressionOperator
|
||||
{
|
||||
AddressOf,
|
||||
Dereference,
|
||||
Negate,
|
||||
Invert
|
||||
}
|
||||
Reference in New Issue
Block a user