...
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
using Nub.Lang.Syntax.Parsing.Expressions;
|
||||
using Nub.Lang.Syntax.Tokenization;
|
||||
|
||||
namespace Nub.Lang.Syntax.Parsing.Statements;
|
||||
|
||||
public class ArrayIndexAssignmentNode(IReadOnlyList<Token> tokens, ArrayIndexAccessNode arrayIndexAccess, ExpressionNode value) : StatementNode(tokens)
|
||||
{
|
||||
public ArrayIndexAccessNode ArrayIndexAccess { get; } = arrayIndexAccess;
|
||||
public ExpressionNode Value { get; } = value;
|
||||
}
|
||||
8
src/Nub.Lang.Syntax/Parsing/Statements/BlockNode.cs
Normal file
8
src/Nub.Lang.Syntax/Parsing/Statements/BlockNode.cs
Normal file
@@ -0,0 +1,8 @@
|
||||
using Nub.Lang.Syntax.Tokenization;
|
||||
|
||||
namespace Nub.Lang.Syntax.Parsing.Statements;
|
||||
|
||||
public class BlockNode(IReadOnlyList<Token> tokens, List<StatementNode> statements) : Node(tokens)
|
||||
{
|
||||
public List<StatementNode> Statements { get; } = statements;
|
||||
}
|
||||
5
src/Nub.Lang.Syntax/Parsing/Statements/BreakNode.cs
Normal file
5
src/Nub.Lang.Syntax/Parsing/Statements/BreakNode.cs
Normal file
@@ -0,0 +1,5 @@
|
||||
using Nub.Lang.Syntax.Tokenization;
|
||||
|
||||
namespace Nub.Lang.Syntax.Parsing.Statements;
|
||||
|
||||
public class BreakNode(IReadOnlyList<Token> tokens) : StatementNode(tokens);
|
||||
5
src/Nub.Lang.Syntax/Parsing/Statements/ContinueNode.cs
Normal file
5
src/Nub.Lang.Syntax/Parsing/Statements/ContinueNode.cs
Normal file
@@ -0,0 +1,5 @@
|
||||
using Nub.Lang.Syntax.Tokenization;
|
||||
|
||||
namespace Nub.Lang.Syntax.Parsing.Statements;
|
||||
|
||||
public class ContinueNode(IReadOnlyList<Token> tokens) : StatementNode(tokens);
|
||||
@@ -0,0 +1,10 @@
|
||||
using Nub.Lang.Syntax.Parsing.Expressions;
|
||||
using Nub.Lang.Syntax.Tokenization;
|
||||
|
||||
namespace Nub.Lang.Syntax.Parsing.Statements;
|
||||
|
||||
public class DereferenceAssignmentNode(IReadOnlyList<Token> tokens, DereferenceNode dereference, ExpressionNode value) : StatementNode(tokens)
|
||||
{
|
||||
public DereferenceNode Dereference { get; } = dereference;
|
||||
public ExpressionNode Value { get; } = value;
|
||||
}
|
||||
12
src/Nub.Lang.Syntax/Parsing/Statements/IfNode.cs
Normal file
12
src/Nub.Lang.Syntax/Parsing/Statements/IfNode.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
using Nub.Lang.Common;
|
||||
using Nub.Lang.Syntax.Parsing.Expressions;
|
||||
using Nub.Lang.Syntax.Tokenization;
|
||||
|
||||
namespace Nub.Lang.Syntax.Parsing.Statements;
|
||||
|
||||
public class IfNode(IReadOnlyList<Token> tokens, ExpressionNode condition, BlockNode body, Optional<Variant<IfNode, BlockNode>> @else) : StatementNode(tokens)
|
||||
{
|
||||
public ExpressionNode Condition { get; } = condition;
|
||||
public BlockNode Body { get; } = body;
|
||||
public Optional<Variant<IfNode, BlockNode>> Else { get; } = @else;
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
using Nub.Lang.Syntax.Parsing.Expressions;
|
||||
using Nub.Lang.Syntax.Tokenization;
|
||||
|
||||
namespace Nub.Lang.Syntax.Parsing.Statements;
|
||||
|
||||
public class MemberAssignmentNode(IReadOnlyList<Token> tokens, MemberAccessNode expression, ExpressionNode value) : StatementNode(tokens)
|
||||
{
|
||||
public MemberAccessNode MemberAccess { get; } = expression;
|
||||
public ExpressionNode Value { get; } = value;
|
||||
}
|
||||
10
src/Nub.Lang.Syntax/Parsing/Statements/ReturnNode.cs
Normal file
10
src/Nub.Lang.Syntax/Parsing/Statements/ReturnNode.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
using Nub.Lang.Common;
|
||||
using Nub.Lang.Syntax.Parsing.Expressions;
|
||||
using Nub.Lang.Syntax.Tokenization;
|
||||
|
||||
namespace Nub.Lang.Syntax.Parsing.Statements;
|
||||
|
||||
public class ReturnNode(IReadOnlyList<Token> tokens, Optional<ExpressionNode> value) : StatementNode(tokens)
|
||||
{
|
||||
public Optional<ExpressionNode> Value { get; } = value;
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
using Nub.Lang.Syntax.Parsing.Expressions;
|
||||
using Nub.Lang.Syntax.Tokenization;
|
||||
|
||||
namespace Nub.Lang.Syntax.Parsing.Statements;
|
||||
|
||||
public class StatementExpressionNode(IReadOnlyList<Token> tokens, ExpressionNode expression) : StatementNode(tokens)
|
||||
{
|
||||
public ExpressionNode Expression { get; } = expression;
|
||||
}
|
||||
5
src/Nub.Lang.Syntax/Parsing/Statements/StatementNode.cs
Normal file
5
src/Nub.Lang.Syntax/Parsing/Statements/StatementNode.cs
Normal file
@@ -0,0 +1,5 @@
|
||||
using Nub.Lang.Syntax.Tokenization;
|
||||
|
||||
namespace Nub.Lang.Syntax.Parsing.Statements;
|
||||
|
||||
public abstract class StatementNode(IReadOnlyList<Token> tokens) : Node(tokens);
|
||||
@@ -0,0 +1,10 @@
|
||||
using Nub.Lang.Syntax.Parsing.Expressions;
|
||||
using Nub.Lang.Syntax.Tokenization;
|
||||
|
||||
namespace Nub.Lang.Syntax.Parsing.Statements;
|
||||
|
||||
public class VariableAssignmentNode(IReadOnlyList<Token> tokens, IdentifierNode identifier, ExpressionNode value) : StatementNode(tokens)
|
||||
{
|
||||
public IdentifierNode Identifier { get; } = identifier;
|
||||
public ExpressionNode Value { get; } = value;
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
using Nub.Lang.Common;
|
||||
using Nub.Lang.Syntax.Parsing.Expressions;
|
||||
using Nub.Lang.Syntax.Tokenization;
|
||||
using Nub.Lang.Syntax.Typing;
|
||||
|
||||
namespace Nub.Lang.Syntax.Parsing.Statements;
|
||||
|
||||
public class VariableDeclarationNode(IReadOnlyList<Token> tokens, string name, Optional<NubType> explicitType, Optional<ExpressionNode> value) : StatementNode(tokens)
|
||||
{
|
||||
public string Name { get; } = name;
|
||||
public Optional<NubType> ExplicitType { get; } = explicitType;
|
||||
public Optional<ExpressionNode> Value { get; } = value;
|
||||
}
|
||||
10
src/Nub.Lang.Syntax/Parsing/Statements/WhileNode.cs
Normal file
10
src/Nub.Lang.Syntax/Parsing/Statements/WhileNode.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
using Nub.Lang.Syntax.Parsing.Expressions;
|
||||
using Nub.Lang.Syntax.Tokenization;
|
||||
|
||||
namespace Nub.Lang.Syntax.Parsing.Statements;
|
||||
|
||||
public class WhileNode(IReadOnlyList<Token> tokens, ExpressionNode condition, BlockNode body) : StatementNode(tokens)
|
||||
{
|
||||
public ExpressionNode Condition { get; } = condition;
|
||||
public BlockNode Body { get; } = body;
|
||||
}
|
||||
Reference in New Issue
Block a user