diff --git a/src/Generation/QBE/QBEGenerator.cs b/src/Generation/QBE/QBEGenerator.cs index 54bc836..b02856b 100644 --- a/src/Generation/QBE/QBEGenerator.cs +++ b/src/Generation/QBE/QBEGenerator.cs @@ -3,9 +3,7 @@ using System.Globalization; using System.Text; using Syntax; using Syntax.Parsing; -using Syntax.Parsing.Definitions; -using Syntax.Parsing.Expressions; -using Syntax.Parsing.Statements; +using Syntax.Parsing.Node; using Syntax.Tokenization; using Syntax.Typing; diff --git a/src/Syntax/DefinitionTable.cs b/src/Syntax/DefinitionTable.cs index 235d10a..5d19fd5 100644 --- a/src/Syntax/DefinitionTable.cs +++ b/src/Syntax/DefinitionTable.cs @@ -1,6 +1,6 @@ using Common; using Syntax.Parsing; -using Syntax.Parsing.Definitions; +using Syntax.Parsing.Node; namespace Syntax; diff --git a/src/Syntax/Diagnostics/Diagnostic.cs b/src/Syntax/Diagnostics/Diagnostic.cs index fd94dad..4ba1ee3 100644 --- a/src/Syntax/Diagnostics/Diagnostic.cs +++ b/src/Syntax/Diagnostics/Diagnostic.cs @@ -1,5 +1,6 @@ using System.Text; using Syntax.Parsing; +using Syntax.Parsing.Node; using Syntax.Tokenization; namespace Syntax.Diagnostics; diff --git a/src/Syntax/Parsing/CompilationUnit.cs b/src/Syntax/Parsing/CompilationUnit.cs index 68e723d..4b994cf 100644 --- a/src/Syntax/Parsing/CompilationUnit.cs +++ b/src/Syntax/Parsing/CompilationUnit.cs @@ -1,4 +1,4 @@ -using Syntax.Parsing.Definitions; +using Syntax.Parsing.Node; namespace Syntax.Parsing; diff --git a/src/Syntax/Parsing/Definitions/DefinitionNode.cs b/src/Syntax/Parsing/Definitions/DefinitionNode.cs deleted file mode 100644 index 3e856f9..0000000 --- a/src/Syntax/Parsing/Definitions/DefinitionNode.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Common; -using Syntax.Tokenization; - -namespace Syntax.Parsing.Definitions; - -public abstract class DefinitionNode(IEnumerable tokens, Optional documentation, string @namespace) : Node(tokens) -{ - public Optional Documentation { get; } = documentation; - public string Namespace { get; set; } = @namespace; -} diff --git a/src/Syntax/Parsing/Definitions/FuncDefinitionNode.cs b/src/Syntax/Parsing/Definitions/FuncDefinitionNode.cs deleted file mode 100644 index 7e04296..0000000 --- a/src/Syntax/Parsing/Definitions/FuncDefinitionNode.cs +++ /dev/null @@ -1,44 +0,0 @@ -using Common; -using Syntax.Parsing.Statements; -using Syntax.Tokenization; -using Syntax.Typing; - -namespace Syntax.Parsing.Definitions; - -public class FuncParameter(string name, NubType type) -{ - public string Name { get; } = name; - public NubType Type { get; } = type; - - public override string ToString() => $"{Name}: {Type}"; -} - -public interface IFuncSignature -{ - public string Name { get; } - public List Parameters { get; } - public NubType ReturnType { get; } - - public string ToString() => $"{Name}({string.Join(", ", Parameters.Select(p => p.ToString()))}){": " + ReturnType}"; -} - -public class LocalFuncDefinitionNode(IEnumerable tokens, Optional documentation, string @namespace, string name, List parameters, BlockNode body, NubType returnType, bool exported) : DefinitionNode(tokens, documentation, @namespace), IFuncSignature -{ - public string Name { get; } = name; - public List Parameters { get; } = parameters; - public BlockNode Body { get; } = body; - public NubType ReturnType { get; } = returnType; - public bool Exported { get; } = exported; - - public override string ToString() => $"{Name}({string.Join(", ", Parameters.Select(p => p.ToString()))}){": " + ReturnType}"; -} - -public class ExternFuncDefinitionNode(IEnumerable tokens, Optional documentation, string @namespace, string name, string callName, List parameters, NubType returnType) : DefinitionNode(tokens, documentation, @namespace), IFuncSignature -{ - public string Name { get; } = name; - public string CallName { get; } = callName; - public List Parameters { get; } = parameters; - public NubType ReturnType { get; } = returnType; - - public override string ToString() => $"{Name}({string.Join(", ", Parameters.Select(p => p.ToString()))}){": " + ReturnType}"; -} \ No newline at end of file diff --git a/src/Syntax/Parsing/Definitions/StructDefinitionNode.cs b/src/Syntax/Parsing/Definitions/StructDefinitionNode.cs deleted file mode 100644 index 98604f9..0000000 --- a/src/Syntax/Parsing/Definitions/StructDefinitionNode.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Common; -using Syntax.Parsing.Expressions; -using Syntax.Tokenization; -using Syntax.Typing; - -namespace Syntax.Parsing.Definitions; - -public class StructField(string name, NubType type, Optional value) -{ - public string Name { get; } = name; - public NubType Type { get; } = type; - public Optional Value { get; } = value; -} - -public class StructDefinitionNode(IEnumerable tokens, Optional documentation, string @namespace, string name, List fields) : DefinitionNode(tokens, documentation, @namespace) -{ - public string Name { get; } = name; - public List Fields { get; } = fields; -} \ No newline at end of file diff --git a/src/Syntax/Parsing/Expressions/AddressOfNode.cs b/src/Syntax/Parsing/Expressions/AddressOfNode.cs deleted file mode 100644 index 8807061..0000000 --- a/src/Syntax/Parsing/Expressions/AddressOfNode.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Syntax.Tokenization; - -namespace Syntax.Parsing.Expressions; - -public class AddressOfNode(IEnumerable tokens, LValueNode expression) : ExpressionNode(tokens) -{ - public LValueNode Expression { get; } = expression; -} \ No newline at end of file diff --git a/src/Syntax/Parsing/Expressions/AnonymousFuncNode.cs b/src/Syntax/Parsing/Expressions/AnonymousFuncNode.cs deleted file mode 100644 index f53798f..0000000 --- a/src/Syntax/Parsing/Expressions/AnonymousFuncNode.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Syntax.Parsing.Definitions; -using Syntax.Parsing.Statements; -using Syntax.Tokenization; -using Syntax.Typing; - -namespace Syntax.Parsing.Expressions; - -public class AnonymousFuncNode(IEnumerable tokens, List parameters, BlockNode body, NubType returnType) : ExpressionNode(tokens) -{ - public List Parameters { get; } = parameters; - public BlockNode Body { get; } = body; - public NubType ReturnType { get; } = returnType; -} \ No newline at end of file diff --git a/src/Syntax/Parsing/Expressions/ArrayIndexAccessNode.cs b/src/Syntax/Parsing/Expressions/ArrayIndexAccessNode.cs deleted file mode 100644 index 5795e9e..0000000 --- a/src/Syntax/Parsing/Expressions/ArrayIndexAccessNode.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Syntax.Tokenization; - -namespace Syntax.Parsing.Expressions; - -public class ArrayIndexAccessNode(IEnumerable tokens, ExpressionNode array, ExpressionNode index) : LValueNode(tokens) -{ - public ExpressionNode Array { get; } = array; - public ExpressionNode Index { get; } = index; -} \ No newline at end of file diff --git a/src/Syntax/Parsing/Expressions/ArrayInitializerNode.cs b/src/Syntax/Parsing/Expressions/ArrayInitializerNode.cs deleted file mode 100644 index ce1b00f..0000000 --- a/src/Syntax/Parsing/Expressions/ArrayInitializerNode.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Syntax.Tokenization; -using Syntax.Typing; - -namespace Syntax.Parsing.Expressions; - -public class ArrayInitializerNode(IEnumerable tokens, ExpressionNode capacity, NubType elementType) : ExpressionNode(tokens) -{ - public ExpressionNode Capacity { get; } = capacity; - public NubType ElementType { get; } = elementType; -} \ No newline at end of file diff --git a/src/Syntax/Parsing/Expressions/BinaryExpressionNode.cs b/src/Syntax/Parsing/Expressions/BinaryExpressionNode.cs deleted file mode 100644 index b33b8b3..0000000 --- a/src/Syntax/Parsing/Expressions/BinaryExpressionNode.cs +++ /dev/null @@ -1,24 +0,0 @@ -using Syntax.Tokenization; - -namespace Syntax.Parsing.Expressions; - -public class BinaryExpressionNode(IEnumerable tokens, ExpressionNode left, BinaryExpressionOperator @operator, ExpressionNode right) : ExpressionNode(tokens) -{ - public ExpressionNode Left { get; } = left; - public BinaryExpressionOperator Operator { get; } = @operator; - public ExpressionNode Right { get; } = right; -} - -public enum BinaryExpressionOperator -{ - Equal, - NotEqual, - GreaterThan, - GreaterThanOrEqual, - LessThan, - LessThanOrEqual, - Plus, - Minus, - Multiply, - Divide -} \ No newline at end of file diff --git a/src/Syntax/Parsing/Expressions/DereferenceNode.cs b/src/Syntax/Parsing/Expressions/DereferenceNode.cs deleted file mode 100644 index 0108106..0000000 --- a/src/Syntax/Parsing/Expressions/DereferenceNode.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Syntax.Tokenization; - -namespace Syntax.Parsing.Expressions; - -public class DereferenceNode(IEnumerable tokens, ExpressionNode expression) : LValueNode(tokens) -{ - public ExpressionNode Expression { get; } = expression; -} \ No newline at end of file diff --git a/src/Syntax/Parsing/Expressions/ExpressionNode.cs b/src/Syntax/Parsing/Expressions/ExpressionNode.cs deleted file mode 100644 index 4b5290b..0000000 --- a/src/Syntax/Parsing/Expressions/ExpressionNode.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Syntax.Tokenization; -using Syntax.Typing; - -namespace Syntax.Parsing.Expressions; - -public abstract class ExpressionNode(IEnumerable tokens) : Node(tokens) -{ - private NubType? _type; - public NubType Type - { - get => _type ?? throw new Exception("Tried to access expression type before type was populated"); - set => _type = value; - } -} - -public abstract class LValueNode(IEnumerable tokens) : ExpressionNode(tokens); diff --git a/src/Syntax/Parsing/Expressions/FixedArrayInitializerNode.cs b/src/Syntax/Parsing/Expressions/FixedArrayInitializerNode.cs deleted file mode 100644 index 525b6bd..0000000 --- a/src/Syntax/Parsing/Expressions/FixedArrayInitializerNode.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Syntax.Tokenization; -using Syntax.Typing; - -namespace Syntax.Parsing.Expressions; - -public class FixedArrayInitializerNode(IEnumerable tokens, NubType elementType, int capacity) : ExpressionNode(tokens) -{ - public NubType ElementType { get; } = elementType; - public int Capacity { get; } = capacity; -} \ No newline at end of file diff --git a/src/Syntax/Parsing/Expressions/FuncCallNode.cs b/src/Syntax/Parsing/Expressions/FuncCallNode.cs deleted file mode 100644 index b5f083d..0000000 --- a/src/Syntax/Parsing/Expressions/FuncCallNode.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Syntax.Tokenization; - -namespace Syntax.Parsing.Expressions; - -public class FuncCallNode(IEnumerable tokens, ExpressionNode expression, List parameters) : ExpressionNode(tokens) -{ - public ExpressionNode Expression = expression; - public List Parameters { get; } = parameters; - - public override string ToString() => $"{Expression}({string.Join(", ", Parameters)})"; -} \ No newline at end of file diff --git a/src/Syntax/Parsing/Expressions/IdentifierNode.cs b/src/Syntax/Parsing/Expressions/IdentifierNode.cs deleted file mode 100644 index 5870ae6..0000000 --- a/src/Syntax/Parsing/Expressions/IdentifierNode.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Common; -using Syntax.Tokenization; - -namespace Syntax.Parsing.Expressions; - -public class IdentifierNode(IEnumerable tokens, Optional @namespace, string name) : LValueNode(tokens) -{ - public Optional Namespace { get; } = @namespace; - public string Name { get; } = name; - - public override string ToString() => Namespace.HasValue ? $"{Namespace.Value}::{Name}" : Name; -} \ No newline at end of file diff --git a/src/Syntax/Parsing/Expressions/LiteralNode.cs b/src/Syntax/Parsing/Expressions/LiteralNode.cs deleted file mode 100644 index b2fcd46..0000000 --- a/src/Syntax/Parsing/Expressions/LiteralNode.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Syntax.Tokenization; - -namespace Syntax.Parsing.Expressions; - -public class LiteralNode(IEnumerable tokens, string literal, LiteralKind kind) : ExpressionNode(tokens) -{ - public string Literal { get; } = literal; - public LiteralKind Kind { get; } = kind; -} \ No newline at end of file diff --git a/src/Syntax/Parsing/Expressions/MemberAccessNode.cs b/src/Syntax/Parsing/Expressions/MemberAccessNode.cs deleted file mode 100644 index dbd09c3..0000000 --- a/src/Syntax/Parsing/Expressions/MemberAccessNode.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Syntax.Tokenization; - -namespace Syntax.Parsing.Expressions; - -public class MemberAccessNode(IEnumerable tokens, ExpressionNode expression, string member) : LValueNode(tokens) -{ - public ExpressionNode Expression { get; } = expression; - public string Member { get; } = member; -} \ No newline at end of file diff --git a/src/Syntax/Parsing/Expressions/StructInitializerNode.cs b/src/Syntax/Parsing/Expressions/StructInitializerNode.cs deleted file mode 100644 index 66ecf56..0000000 --- a/src/Syntax/Parsing/Expressions/StructInitializerNode.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Syntax.Tokenization; -using Syntax.Typing; - -namespace Syntax.Parsing.Expressions; - -public class StructInitializerNode(IEnumerable tokens, NubStructType structType, Dictionary initializers) : ExpressionNode(tokens) -{ - public NubStructType StructType { get; } = structType; - public Dictionary Initializers { get; } = initializers; -} \ No newline at end of file diff --git a/src/Syntax/Parsing/Expressions/UnaryExpressionNode.cs b/src/Syntax/Parsing/Expressions/UnaryExpressionNode.cs deleted file mode 100644 index b7e238b..0000000 --- a/src/Syntax/Parsing/Expressions/UnaryExpressionNode.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Syntax.Tokenization; - -namespace Syntax.Parsing.Expressions; - -public class UnaryExpressionNode(IEnumerable tokens, UnaryExpressionOperator @operator, ExpressionNode operand) : ExpressionNode(tokens) -{ - public UnaryExpressionOperator Operator { get; } = @operator; - public ExpressionNode Operand { get; } = operand; -} - -public enum UnaryExpressionOperator -{ - Negate, - Invert -} \ No newline at end of file diff --git a/src/Syntax/Parsing/Node.cs b/src/Syntax/Parsing/Node.cs deleted file mode 100644 index f2fcddc..0000000 --- a/src/Syntax/Parsing/Node.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Syntax.Tokenization; - -namespace Syntax.Parsing; - -public abstract class Node(IEnumerable tokens) -{ - public IEnumerable Tokens { get; set; } = tokens; -} \ No newline at end of file diff --git a/src/Syntax/Parsing/Node/DefinitionNode.cs b/src/Syntax/Parsing/Node/DefinitionNode.cs new file mode 100644 index 0000000..d9741d5 --- /dev/null +++ b/src/Syntax/Parsing/Node/DefinitionNode.cs @@ -0,0 +1,34 @@ +using Common; +using Syntax.Tokenization; +using Syntax.Typing; + +namespace Syntax.Parsing.Node; + +public abstract record DefinitionNode(IEnumerable Tokens, Optional Documentation, string Namespace) : Node(Tokens); + +public record FuncParameter(string Name, NubType Type) +{ + public override string ToString() => $"{Name}: {Type}"; +} + +public interface IFuncSignature +{ + public string Name { get; } + public List Parameters { get; } + public NubType ReturnType { get; } + + public string ToString() => $"{Name}({string.Join(", ", Parameters.Select(p => p.ToString()))}){": " + ReturnType}"; +} + +public record LocalFuncDefinitionNode(IEnumerable Tokens, Optional Documentation, string Namespace, string Name, List Parameters, BlockNode Body, NubType ReturnType, bool Exported) : DefinitionNode(Tokens, Documentation, Namespace), IFuncSignature +{ + public override string ToString() => $"{Name}({string.Join(", ", Parameters.Select(p => p.ToString()))}){": " + ReturnType}"; +} + +public record ExternFuncDefinitionNode(IEnumerable Tokens, Optional Documentation, string Namespace, string Name, string CallName, List Parameters, NubType ReturnType) : DefinitionNode(Tokens, Documentation, Namespace), IFuncSignature +{ + public override string ToString() => $"{Name}({string.Join(", ", Parameters.Select(p => p.ToString()))}){": " + ReturnType}"; +} + +public record StructField(string Name, NubType Type, Optional Value); +public record StructDefinitionNode(IEnumerable Tokens, Optional Documentation, string Namespace, string Name, List Fields) : DefinitionNode(Tokens, Documentation, Namespace); diff --git a/src/Syntax/Parsing/Node/ExpressionNode.cs b/src/Syntax/Parsing/Node/ExpressionNode.cs new file mode 100644 index 0000000..09c7a89 --- /dev/null +++ b/src/Syntax/Parsing/Node/ExpressionNode.cs @@ -0,0 +1,54 @@ +using Common; +using Syntax.Tokenization; +using Syntax.Typing; + +namespace Syntax.Parsing.Node; + +public abstract record ExpressionNode(IEnumerable Tokens) : Node(Tokens) +{ + private NubType? _type; + public NubType Type + { + get => _type ?? throw new Exception("Tried to access expression type before type was populated"); + set => _type = value; + } +} + +public abstract record LValueNode(IEnumerable Tokens) : ExpressionNode(Tokens); + +public record DereferenceNode(IEnumerable Tokens, ExpressionNode Expression) : LValueNode(Tokens); + +public record BinaryExpressionNode(IEnumerable Tokens, ExpressionNode Left, BinaryExpressionOperator Operator, ExpressionNode Right) : ExpressionNode(Tokens); + +public enum BinaryExpressionOperator +{ + Equal, + NotEqual, + GreaterThan, + GreaterThanOrEqual, + LessThan, + LessThanOrEqual, + Plus, + Minus, + Multiply, + Divide +} + +public record UnaryExpressionNode(IEnumerable Tokens, UnaryExpressionOperator Operator, ExpressionNode Operand) : ExpressionNode(Tokens); + +public enum UnaryExpressionOperator +{ + Negate, + Invert +} + +public record FuncCallNode(IEnumerable Tokens, ExpressionNode Expression, List Parameters) : ExpressionNode(Tokens); +public record IdentifierNode(IEnumerable Tokens, Optional Namespace, string Name) : LValueNode(Tokens); +public record ArrayInitializerNode(IEnumerable Tokens, ExpressionNode Capacity, NubType ElementType) : ExpressionNode(Tokens); +public record ArrayIndexAccessNode(IEnumerable Tokens, ExpressionNode Array, ExpressionNode Index) : LValueNode(Tokens); +public record AnonymousFuncNode(IEnumerable Tokens, List Parameters, BlockNode Body, NubType ReturnType) : ExpressionNode(Tokens); +public record AddressOfNode(IEnumerable Tokens, LValueNode Expression) : ExpressionNode(Tokens); +public record FixedArrayInitializerNode(IEnumerable Tokens, NubType ElementType, int Capacity) : ExpressionNode(Tokens); +public record LiteralNode(IEnumerable Tokens, string Literal, LiteralKind Kind) : ExpressionNode(Tokens); +public record MemberAccessNode(IEnumerable Tokens, ExpressionNode Expression, string Member) : LValueNode(Tokens); +public record StructInitializerNode(IEnumerable Tokens, NubStructType StructType, Dictionary Initializers) : ExpressionNode(Tokens); diff --git a/src/Syntax/Parsing/Node/Node.cs b/src/Syntax/Parsing/Node/Node.cs new file mode 100644 index 0000000..5d4357e --- /dev/null +++ b/src/Syntax/Parsing/Node/Node.cs @@ -0,0 +1,6 @@ +using Syntax.Tokenization; + +namespace Syntax.Parsing.Node; + +public abstract record Node(IEnumerable Tokens); +public record BlockNode(IEnumerable Tokens, List Statements) : Node(Tokens); diff --git a/src/Syntax/Parsing/Node/StatementNode.cs b/src/Syntax/Parsing/Node/StatementNode.cs new file mode 100644 index 0000000..db506de --- /dev/null +++ b/src/Syntax/Parsing/Node/StatementNode.cs @@ -0,0 +1,18 @@ +using Common; +using Syntax.Tokenization; +using Syntax.Typing; + +namespace Syntax.Parsing.Node; + +public record StatementNode(IEnumerable Tokens) : Node(Tokens); +public record StatementExpressionNode(IEnumerable Tokens, ExpressionNode Expression) : StatementNode(Tokens); +public record ReturnNode(IEnumerable Tokens, Optional Value) : StatementNode(Tokens); +public record MemberAssignmentNode(IEnumerable Tokens, MemberAccessNode MemberAccess, ExpressionNode Value) : StatementNode(Tokens); +public record IfNode(IEnumerable Tokens, ExpressionNode Condition, BlockNode Body, Optional> Else) : StatementNode(Tokens); +public record DereferenceAssignmentNode(IEnumerable Tokens, DereferenceNode Dereference, ExpressionNode Value) : StatementNode(Tokens); +public record VariableAssignmentNode(IEnumerable Tokens, IdentifierNode Identifier, ExpressionNode Value) : StatementNode(Tokens); +public record VariableDeclarationNode(IEnumerable Tokens, string Name, NubType Type) : StatementNode(Tokens); +public record ContinueNode(IEnumerable Tokens) : StatementNode(Tokens); +public record BreakNode(IEnumerable Tokens) : StatementNode(Tokens); +public record ArrayIndexAssignmentNode(IEnumerable Tokens, ArrayIndexAccessNode ArrayIndexAccess, ExpressionNode Value) : StatementNode(Tokens); +public record WhileNode(IEnumerable Tokens, ExpressionNode Condition, BlockNode Body) : StatementNode(Tokens); diff --git a/src/Syntax/Parsing/Parser.cs b/src/Syntax/Parsing/Parser.cs index 81b920e..952866a 100644 --- a/src/Syntax/Parsing/Parser.cs +++ b/src/Syntax/Parsing/Parser.cs @@ -2,9 +2,7 @@ using System.Diagnostics.CodeAnalysis; using Common; using Syntax.Diagnostics; -using Syntax.Parsing.Definitions; -using Syntax.Parsing.Expressions; -using Syntax.Parsing.Statements; +using Syntax.Parsing.Node; using Syntax.Tokenization; using Syntax.Typing; diff --git a/src/Syntax/Parsing/Statements/ArrayIndexAssignmentNode.cs b/src/Syntax/Parsing/Statements/ArrayIndexAssignmentNode.cs deleted file mode 100644 index 20cc7a6..0000000 --- a/src/Syntax/Parsing/Statements/ArrayIndexAssignmentNode.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Syntax.Parsing.Expressions; -using Syntax.Tokenization; - -namespace Syntax.Parsing.Statements; - -public class ArrayIndexAssignmentNode(IEnumerable tokens, ArrayIndexAccessNode arrayIndexAccess, ExpressionNode value) : StatementNode(tokens) -{ - public ArrayIndexAccessNode ArrayIndexAccess { get; } = arrayIndexAccess; - public ExpressionNode Value { get; } = value; -} \ No newline at end of file diff --git a/src/Syntax/Parsing/Statements/BlockNode.cs b/src/Syntax/Parsing/Statements/BlockNode.cs deleted file mode 100644 index 4440292..0000000 --- a/src/Syntax/Parsing/Statements/BlockNode.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Syntax.Tokenization; - -namespace Syntax.Parsing.Statements; - -public class BlockNode(IEnumerable tokens, List statements) : Node(tokens) -{ - public List Statements { get; } = statements; -} \ No newline at end of file diff --git a/src/Syntax/Parsing/Statements/BreakNode.cs b/src/Syntax/Parsing/Statements/BreakNode.cs deleted file mode 100644 index ef29724..0000000 --- a/src/Syntax/Parsing/Statements/BreakNode.cs +++ /dev/null @@ -1,5 +0,0 @@ -using Syntax.Tokenization; - -namespace Syntax.Parsing.Statements; - -public class BreakNode(IEnumerable tokens) : StatementNode(tokens); \ No newline at end of file diff --git a/src/Syntax/Parsing/Statements/ContinueNode.cs b/src/Syntax/Parsing/Statements/ContinueNode.cs deleted file mode 100644 index 70a1761..0000000 --- a/src/Syntax/Parsing/Statements/ContinueNode.cs +++ /dev/null @@ -1,5 +0,0 @@ -using Syntax.Tokenization; - -namespace Syntax.Parsing.Statements; - -public class ContinueNode(IEnumerable tokens) : StatementNode(tokens); \ No newline at end of file diff --git a/src/Syntax/Parsing/Statements/DereferenceAssignmentNode.cs b/src/Syntax/Parsing/Statements/DereferenceAssignmentNode.cs deleted file mode 100644 index 00118b6..0000000 --- a/src/Syntax/Parsing/Statements/DereferenceAssignmentNode.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Syntax.Parsing.Expressions; -using Syntax.Tokenization; - -namespace Syntax.Parsing.Statements; - -public class DereferenceAssignmentNode(IEnumerable tokens, DereferenceNode dereference, ExpressionNode value) : StatementNode(tokens) -{ - public DereferenceNode Dereference { get; } = dereference; - public ExpressionNode Value { get; } = value; -} \ No newline at end of file diff --git a/src/Syntax/Parsing/Statements/IfNode.cs b/src/Syntax/Parsing/Statements/IfNode.cs deleted file mode 100644 index d8b5708..0000000 --- a/src/Syntax/Parsing/Statements/IfNode.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Common; -using Syntax.Parsing.Expressions; -using Syntax.Tokenization; - -namespace Syntax.Parsing.Statements; - -public class IfNode(IEnumerable tokens, ExpressionNode condition, BlockNode body, Optional> @else) : StatementNode(tokens) -{ - public ExpressionNode Condition { get; } = condition; - public BlockNode Body { get; } = body; - public Optional> Else { get; } = @else; -} \ No newline at end of file diff --git a/src/Syntax/Parsing/Statements/MemberAssignmentNode.cs b/src/Syntax/Parsing/Statements/MemberAssignmentNode.cs deleted file mode 100644 index 1e0d37b..0000000 --- a/src/Syntax/Parsing/Statements/MemberAssignmentNode.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Syntax.Parsing.Expressions; -using Syntax.Tokenization; - -namespace Syntax.Parsing.Statements; - -public class MemberAssignmentNode(IEnumerable tokens, MemberAccessNode expression, ExpressionNode value) : StatementNode(tokens) -{ - public MemberAccessNode MemberAccess { get; } = expression; - public ExpressionNode Value { get; } = value; -} \ No newline at end of file diff --git a/src/Syntax/Parsing/Statements/ReturnNode.cs b/src/Syntax/Parsing/Statements/ReturnNode.cs deleted file mode 100644 index cd30338..0000000 --- a/src/Syntax/Parsing/Statements/ReturnNode.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Common; -using Syntax.Parsing.Expressions; -using Syntax.Tokenization; - -namespace Syntax.Parsing.Statements; - -public class ReturnNode(IEnumerable tokens, Optional value) : StatementNode(tokens) -{ - public Optional Value { get; } = value; -} \ No newline at end of file diff --git a/src/Syntax/Parsing/Statements/StatementExpressionNode.cs b/src/Syntax/Parsing/Statements/StatementExpressionNode.cs deleted file mode 100644 index 3da4203..0000000 --- a/src/Syntax/Parsing/Statements/StatementExpressionNode.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Syntax.Parsing.Expressions; -using Syntax.Tokenization; - -namespace Syntax.Parsing.Statements; - -public class StatementExpressionNode(IEnumerable tokens, ExpressionNode expression) : StatementNode(tokens) -{ - public ExpressionNode Expression { get; } = expression; -} \ No newline at end of file diff --git a/src/Syntax/Parsing/Statements/StatementNode.cs b/src/Syntax/Parsing/Statements/StatementNode.cs deleted file mode 100644 index 305a1b7..0000000 --- a/src/Syntax/Parsing/Statements/StatementNode.cs +++ /dev/null @@ -1,5 +0,0 @@ -using Syntax.Tokenization; - -namespace Syntax.Parsing.Statements; - -public abstract class StatementNode(IEnumerable tokens) : Node(tokens); \ No newline at end of file diff --git a/src/Syntax/Parsing/Statements/VariableAssignmentNode.cs b/src/Syntax/Parsing/Statements/VariableAssignmentNode.cs deleted file mode 100644 index 3e032cc..0000000 --- a/src/Syntax/Parsing/Statements/VariableAssignmentNode.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Syntax.Parsing.Expressions; -using Syntax.Tokenization; - -namespace Syntax.Parsing.Statements; - -public class VariableAssignmentNode(IEnumerable tokens, IdentifierNode identifier, ExpressionNode value) : StatementNode(tokens) -{ - public IdentifierNode Identifier { get; } = identifier; - public ExpressionNode Value { get; } = value; -} \ No newline at end of file diff --git a/src/Syntax/Parsing/Statements/VariableDeclarationNode.cs b/src/Syntax/Parsing/Statements/VariableDeclarationNode.cs deleted file mode 100644 index 788164d..0000000 --- a/src/Syntax/Parsing/Statements/VariableDeclarationNode.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Syntax.Tokenization; -using Syntax.Typing; - -namespace Syntax.Parsing.Statements; - -public class VariableDeclarationNode(IEnumerable tokens, string name, NubType type) : StatementNode(tokens) -{ - public string Name { get; } = name; - public NubType Type { get; } = type; -} \ No newline at end of file diff --git a/src/Syntax/Parsing/Statements/WhileNode.cs b/src/Syntax/Parsing/Statements/WhileNode.cs deleted file mode 100644 index 625c51b..0000000 --- a/src/Syntax/Parsing/Statements/WhileNode.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Syntax.Parsing.Expressions; -using Syntax.Tokenization; - -namespace Syntax.Parsing.Statements; - -public class WhileNode(IEnumerable tokens, ExpressionNode condition, BlockNode body) : StatementNode(tokens) -{ - public ExpressionNode Condition { get; } = condition; - public BlockNode Body { get; } = body; -} \ No newline at end of file diff --git a/src/Syntax/Typing/TypeChecker.cs b/src/Syntax/Typing/TypeChecker.cs index d400a31..b0d111c 100644 --- a/src/Syntax/Typing/TypeChecker.cs +++ b/src/Syntax/Typing/TypeChecker.cs @@ -1,9 +1,7 @@ using System.Diagnostics; using Syntax.Diagnostics; using Syntax.Parsing; -using Syntax.Parsing.Definitions; -using Syntax.Parsing.Expressions; -using Syntax.Parsing.Statements; +using Syntax.Parsing.Node; using Syntax.Tokenization; namespace Syntax.Typing;