Clean unused stuff
This commit is contained in:
@@ -292,7 +292,6 @@ public class Diagnostic
|
|||||||
case Symbol.ForwardSlash:
|
case Symbol.ForwardSlash:
|
||||||
case Symbol.Caret:
|
case Symbol.Caret:
|
||||||
case Symbol.Ampersand:
|
case Symbol.Ampersand:
|
||||||
case Symbol.Arrow:
|
|
||||||
{
|
{
|
||||||
return ConsoleColors.Colorize(tokenText, ConsoleColors.Yellow);
|
return ConsoleColors.Colorize(tokenText, ConsoleColors.Yellow);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,96 +4,20 @@ namespace NubLang.Parsing.Syntax;
|
|||||||
|
|
||||||
public abstract record DefinitionSyntax(IEnumerable<Token> Tokens) : SyntaxNode(Tokens);
|
public abstract record DefinitionSyntax(IEnumerable<Token> Tokens) : SyntaxNode(Tokens);
|
||||||
|
|
||||||
public record FuncParameterSyntax(IEnumerable<Token> Tokens, string Name, TypeSyntax Type) : SyntaxNode(Tokens)
|
public record FuncParameterSyntax(IEnumerable<Token> Tokens, string Name, TypeSyntax Type) : SyntaxNode(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren()
|
|
||||||
{
|
|
||||||
yield return Type;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public record FuncSignatureSyntax(IEnumerable<Token> Tokens, IReadOnlyList<FuncParameterSyntax> Parameters, TypeSyntax ReturnType) : SyntaxNode(Tokens)
|
public record FuncSignatureSyntax(IEnumerable<Token> Tokens, IReadOnlyList<FuncParameterSyntax> Parameters, TypeSyntax ReturnType) : SyntaxNode(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren()
|
|
||||||
{
|
|
||||||
foreach (var parameter in Parameters)
|
|
||||||
{
|
|
||||||
yield return parameter;
|
|
||||||
}
|
|
||||||
|
|
||||||
yield return ReturnType;
|
public record LocalFuncSyntax(IEnumerable<Token> Tokens, string Name, FuncSignatureSyntax Signature, BlockSyntax Body) : DefinitionSyntax(Tokens);
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public record LocalFuncSyntax(IEnumerable<Token> Tokens, string Name, FuncSignatureSyntax Signature, BlockSyntax Body) : DefinitionSyntax(Tokens)
|
public record ExternFuncSyntax(IEnumerable<Token> Tokens, string Name, string CallName, FuncSignatureSyntax Signature) : DefinitionSyntax(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren()
|
|
||||||
{
|
|
||||||
yield return Signature;
|
|
||||||
yield return Body;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public record ExternFuncSyntax(IEnumerable<Token> Tokens, string Name, string CallName, FuncSignatureSyntax Signature) : DefinitionSyntax(Tokens)
|
public record StructFieldSyntax(IEnumerable<Token> Tokens, int Index, string Name, TypeSyntax Type, Optional<ExpressionSyntax> Value) : SyntaxNode(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren()
|
|
||||||
{
|
|
||||||
yield return Signature;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public record StructFieldSyntax(IEnumerable<Token> Tokens, int Index, string Name, TypeSyntax Type, Optional<ExpressionSyntax> Value) : SyntaxNode(Tokens)
|
public record StructFuncSyntax(IEnumerable<Token> Tokens, string Name, FuncSignatureSyntax Signature, BlockSyntax Body) : SyntaxNode(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren()
|
|
||||||
{
|
|
||||||
yield return Type;
|
|
||||||
if (Value.HasValue)
|
|
||||||
{
|
|
||||||
yield return Value.Value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public record StructFuncSyntax(IEnumerable<Token> Tokens, string Name, FuncSignatureSyntax Signature, BlockSyntax Body) : SyntaxNode(Tokens)
|
public record StructSyntax(IEnumerable<Token> Tokens, string Name, IReadOnlyList<StructFieldSyntax> Fields, IReadOnlyList<StructFuncSyntax> Functions, IReadOnlyList<TypeSyntax> InterfaceImplementations) : DefinitionSyntax(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren()
|
|
||||||
{
|
|
||||||
yield return Signature;
|
|
||||||
yield return Body;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public record StructSyntax(IEnumerable<Token> Tokens, string Name, IReadOnlyList<StructFieldSyntax> Fields, IReadOnlyList<StructFuncSyntax> Functions, IReadOnlyList<TypeSyntax> InterfaceImplementations) : DefinitionSyntax(Tokens)
|
public record InterfaceFuncSyntax(IEnumerable<Token> Tokens, string Name, FuncSignatureSyntax Signature) : SyntaxNode(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren()
|
|
||||||
{
|
|
||||||
foreach (var field in Fields)
|
|
||||||
{
|
|
||||||
yield return field;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (var func in Functions)
|
public record InterfaceSyntax(IEnumerable<Token> Tokens, string Name, IReadOnlyList<InterfaceFuncSyntax> Functions) : DefinitionSyntax(Tokens);
|
||||||
{
|
|
||||||
yield return func;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public record InterfaceFuncSyntax(IEnumerable<Token> Tokens, string Name, FuncSignatureSyntax Signature) : SyntaxNode(Tokens)
|
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren()
|
|
||||||
{
|
|
||||||
yield return Signature;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public record InterfaceSyntax(IEnumerable<Token> Tokens, string Name, IReadOnlyList<InterfaceFuncSyntax> Functions) : DefinitionSyntax(Tokens)
|
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren()
|
|
||||||
{
|
|
||||||
foreach (var func in Functions)
|
|
||||||
{
|
|
||||||
yield return func;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -24,100 +24,24 @@ public enum BinaryOperatorSyntax
|
|||||||
|
|
||||||
public abstract record ExpressionSyntax(IEnumerable<Token> Tokens) : SyntaxNode(Tokens);
|
public abstract record ExpressionSyntax(IEnumerable<Token> Tokens) : SyntaxNode(Tokens);
|
||||||
|
|
||||||
public record BinaryExpressionSyntax(IEnumerable<Token> Tokens, ExpressionSyntax Left, BinaryOperatorSyntax OperatorSyntax, ExpressionSyntax Right) : ExpressionSyntax(Tokens)
|
public record BinaryExpressionSyntax(IEnumerable<Token> Tokens, ExpressionSyntax Left, BinaryOperatorSyntax OperatorSyntax, ExpressionSyntax Right) : ExpressionSyntax(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren()
|
|
||||||
{
|
|
||||||
yield return Left;
|
|
||||||
yield return Right;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public record UnaryExpressionSyntax(IEnumerable<Token> Tokens, UnaryOperatorSyntax OperatorSyntax, ExpressionSyntax Operand) : ExpressionSyntax(Tokens)
|
public record UnaryExpressionSyntax(IEnumerable<Token> Tokens, UnaryOperatorSyntax OperatorSyntax, ExpressionSyntax Operand) : ExpressionSyntax(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren()
|
|
||||||
{
|
|
||||||
yield return Operand;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public record FuncCallSyntax(IEnumerable<Token> Tokens, ExpressionSyntax Expression, IReadOnlyList<ExpressionSyntax> Parameters) : ExpressionSyntax(Tokens)
|
public record FuncCallSyntax(IEnumerable<Token> Tokens, ExpressionSyntax Expression, IReadOnlyList<ExpressionSyntax> Parameters) : ExpressionSyntax(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren()
|
|
||||||
{
|
|
||||||
yield return Expression;
|
|
||||||
foreach (var parameter in Parameters)
|
|
||||||
{
|
|
||||||
yield return parameter;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public record IdentifierSyntax(IEnumerable<Token> Tokens, string Name) : ExpressionSyntax(Tokens)
|
public record IdentifierSyntax(IEnumerable<Token> Tokens, string Name) : ExpressionSyntax(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren() => [];
|
|
||||||
}
|
|
||||||
|
|
||||||
public record ArrayInitializerSyntax(IEnumerable<Token> Tokens, ExpressionSyntax Capacity, TypeSyntax ElementType) : ExpressionSyntax(Tokens)
|
public record ArrayInitializerSyntax(IEnumerable<Token> Tokens, ExpressionSyntax Capacity, TypeSyntax ElementType) : ExpressionSyntax(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren()
|
|
||||||
{
|
|
||||||
yield return Capacity;
|
|
||||||
yield return ElementType;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public record ArrayIndexAccessSyntax(IEnumerable<Token> Tokens, ExpressionSyntax Target, ExpressionSyntax Index) : ExpressionSyntax(Tokens)
|
public record ArrayIndexAccessSyntax(IEnumerable<Token> Tokens, ExpressionSyntax Target, ExpressionSyntax Index) : ExpressionSyntax(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren()
|
|
||||||
{
|
|
||||||
yield return Target;
|
|
||||||
yield return Index;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public record ArrowFuncParameterSyntax(IEnumerable<Token> Tokens, string Name) : ExpressionSyntax(Tokens)
|
public record AddressOfSyntax(IEnumerable<Token> Tokens, ExpressionSyntax Expression) : ExpressionSyntax(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren() => [];
|
|
||||||
}
|
|
||||||
|
|
||||||
public record AddressOfSyntax(IEnumerable<Token> Tokens, ExpressionSyntax Expression) : ExpressionSyntax(Tokens)
|
public record LiteralSyntax(IEnumerable<Token> Tokens, string Value, LiteralKind Kind) : ExpressionSyntax(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren()
|
|
||||||
{
|
|
||||||
yield return Expression;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public record LiteralSyntax(IEnumerable<Token> Tokens, string Value, LiteralKind Kind) : ExpressionSyntax(Tokens)
|
public record MemberAccessSyntax(IEnumerable<Token> Tokens, ExpressionSyntax Target, string Member) : ExpressionSyntax(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren() => [];
|
|
||||||
}
|
|
||||||
|
|
||||||
public record MemberAccessSyntax(IEnumerable<Token> Tokens, ExpressionSyntax Target, string Member) : ExpressionSyntax(Tokens)
|
public record StructInitializerSyntax(IEnumerable<Token> Tokens, TypeSyntax StructType, Dictionary<string, ExpressionSyntax> Initializers) : ExpressionSyntax(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren()
|
|
||||||
{
|
|
||||||
yield return Target;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public record StructInitializerSyntax(IEnumerable<Token> Tokens, TypeSyntax StructType, Dictionary<string, ExpressionSyntax> Initializers) : ExpressionSyntax(Tokens)
|
public record DereferenceSyntax(IEnumerable<Token> Tokens, ExpressionSyntax Expression) : ExpressionSyntax(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren()
|
|
||||||
{
|
|
||||||
yield return StructType;
|
|
||||||
foreach (var initializer in Initializers)
|
|
||||||
{
|
|
||||||
yield return initializer.Value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public record DereferenceSyntax(IEnumerable<Token> Tokens, ExpressionSyntax Expression) : ExpressionSyntax(Tokens)
|
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren()
|
|
||||||
{
|
|
||||||
yield return Expression;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -4,81 +4,18 @@ namespace NubLang.Parsing.Syntax;
|
|||||||
|
|
||||||
public abstract record StatementSyntax(IEnumerable<Token> Tokens) : SyntaxNode(Tokens);
|
public abstract record StatementSyntax(IEnumerable<Token> Tokens) : SyntaxNode(Tokens);
|
||||||
|
|
||||||
public record StatementExpressionSyntax(IEnumerable<Token> Tokens, ExpressionSyntax Expression) : StatementSyntax(Tokens)
|
public record StatementExpressionSyntax(IEnumerable<Token> Tokens, ExpressionSyntax Expression) : StatementSyntax(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren()
|
|
||||||
{
|
|
||||||
yield return Expression;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public record ReturnSyntax(IEnumerable<Token> Tokens, Optional<ExpressionSyntax> Value) : StatementSyntax(Tokens)
|
public record ReturnSyntax(IEnumerable<Token> Tokens, Optional<ExpressionSyntax> Value) : StatementSyntax(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren()
|
|
||||||
{
|
|
||||||
if (Value.HasValue)
|
|
||||||
{
|
|
||||||
yield return Value.Value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public record AssignmentSyntax(IEnumerable<Token> Tokens, ExpressionSyntax Target, ExpressionSyntax Value) : StatementSyntax(Tokens)
|
public record AssignmentSyntax(IEnumerable<Token> Tokens, ExpressionSyntax Target, ExpressionSyntax Value) : StatementSyntax(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren()
|
|
||||||
{
|
|
||||||
yield return Target;
|
|
||||||
yield return Value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public record IfSyntax(IEnumerable<Token> Tokens, ExpressionSyntax Condition, BlockSyntax Body, Optional<Variant<IfSyntax, BlockSyntax>> Else) : StatementSyntax(Tokens)
|
public record IfSyntax(IEnumerable<Token> Tokens, ExpressionSyntax Condition, BlockSyntax Body, Optional<Variant<IfSyntax, BlockSyntax>> Else) : StatementSyntax(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren()
|
|
||||||
{
|
|
||||||
yield return Condition;
|
|
||||||
yield return Body;
|
|
||||||
if (Else.HasValue)
|
|
||||||
{
|
|
||||||
if (Else.Value.IsCase1(out var elseIf))
|
|
||||||
{
|
|
||||||
yield return elseIf;
|
|
||||||
}
|
|
||||||
else if (Else.Value.IsCase2(out var @else))
|
|
||||||
{
|
|
||||||
yield return @else;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public record VariableDeclarationSyntax(IEnumerable<Token> Tokens, string Name, Optional<TypeSyntax> ExplicitType, Optional<ExpressionSyntax> Assignment) : StatementSyntax(Tokens)
|
public record VariableDeclarationSyntax(IEnumerable<Token> Tokens, string Name, Optional<TypeSyntax> ExplicitType, Optional<ExpressionSyntax> Assignment) : StatementSyntax(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren()
|
|
||||||
{
|
|
||||||
if (ExplicitType.HasValue)
|
|
||||||
{
|
|
||||||
yield return ExplicitType.Value;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Assignment.HasValue)
|
public record ContinueSyntax(IEnumerable<Token> Tokens) : StatementSyntax(Tokens);
|
||||||
{
|
|
||||||
yield return Assignment.Value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public record ContinueSyntax(IEnumerable<Token> Tokens) : StatementSyntax(Tokens)
|
public record BreakSyntax(IEnumerable<Token> Tokens) : StatementSyntax(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren() => [];
|
|
||||||
}
|
|
||||||
|
|
||||||
public record BreakSyntax(IEnumerable<Token> Tokens) : StatementSyntax(Tokens)
|
public record WhileSyntax(IEnumerable<Token> Tokens, ExpressionSyntax Condition, BlockSyntax Body) : StatementSyntax(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren() => [];
|
|
||||||
}
|
|
||||||
|
|
||||||
public record WhileSyntax(IEnumerable<Token> Tokens, ExpressionSyntax Condition, BlockSyntax Body) : StatementSyntax(Tokens)
|
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren() => [];
|
|
||||||
}
|
|
||||||
@@ -2,39 +2,8 @@ using NubLang.Tokenization;
|
|||||||
|
|
||||||
namespace NubLang.Parsing.Syntax;
|
namespace NubLang.Parsing.Syntax;
|
||||||
|
|
||||||
public abstract record SyntaxNode(IEnumerable<Token> Tokens)
|
public abstract record SyntaxNode(IEnumerable<Token> Tokens);
|
||||||
{
|
|
||||||
public abstract IEnumerable<SyntaxNode> GetChildren();
|
|
||||||
|
|
||||||
public IEnumerable<SyntaxNode> GetDescendants()
|
public record SyntaxTree(IEnumerable<Token> Tokens, IReadOnlyList<DefinitionSyntax> Definitions) : SyntaxNode(Tokens);
|
||||||
{
|
|
||||||
yield return this;
|
|
||||||
|
|
||||||
foreach (var child in GetChildren())
|
public record BlockSyntax(IEnumerable<Token> Tokens, IReadOnlyList<StatementSyntax> Statements) : SyntaxNode(Tokens);
|
||||||
{
|
|
||||||
foreach (var desc in child.GetDescendants())
|
|
||||||
{
|
|
||||||
yield return desc;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public record SyntaxTree(IEnumerable<Token> Tokens, IReadOnlyList<DefinitionSyntax> Definitions) : SyntaxNode(Tokens)
|
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren()
|
|
||||||
{
|
|
||||||
foreach (var definition in Definitions)
|
|
||||||
{
|
|
||||||
yield return definition;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public record BlockSyntax(IEnumerable<Token> Tokens, IReadOnlyList<StatementSyntax> Statements) : SyntaxNode(Tokens)
|
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren()
|
|
||||||
{
|
|
||||||
return Statements;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -4,66 +4,22 @@ namespace NubLang.Parsing.Syntax;
|
|||||||
|
|
||||||
public abstract record TypeSyntax(IEnumerable<Token> Tokens) : SyntaxNode(Tokens);
|
public abstract record TypeSyntax(IEnumerable<Token> Tokens) : SyntaxNode(Tokens);
|
||||||
|
|
||||||
public record FuncTypeSyntax(IEnumerable<Token> Tokens, IReadOnlyList<TypeSyntax> Parameters, TypeSyntax ReturnType) : TypeSyntax(Tokens)
|
public record FuncTypeSyntax(IEnumerable<Token> Tokens, IReadOnlyList<TypeSyntax> Parameters, TypeSyntax ReturnType) : TypeSyntax(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren()
|
|
||||||
{
|
|
||||||
foreach (var parameter in Parameters)
|
|
||||||
{
|
|
||||||
yield return parameter;
|
|
||||||
}
|
|
||||||
|
|
||||||
yield return ReturnType;
|
public record PointerTypeSyntax(IEnumerable<Token> Tokens, TypeSyntax BaseType) : TypeSyntax(Tokens);
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public record PointerTypeSyntax(IEnumerable<Token> Tokens, TypeSyntax BaseType) : TypeSyntax(Tokens)
|
public record VoidTypeSyntax(IEnumerable<Token> Tokens) : TypeSyntax(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren()
|
|
||||||
{
|
|
||||||
yield return BaseType;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public record VoidTypeSyntax(IEnumerable<Token> Tokens) : TypeSyntax(Tokens)
|
public record IntTypeSyntax(IEnumerable<Token> Tokens, bool Signed, int Width) : TypeSyntax(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren() => [];
|
|
||||||
}
|
|
||||||
|
|
||||||
public record IntTypeSyntax(IEnumerable<Token> Tokens, bool Signed, int Width) : TypeSyntax(Tokens)
|
public record FloatTypeSyntax(IEnumerable<Token> Tokens, int Width) : TypeSyntax(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren() => [];
|
|
||||||
}
|
|
||||||
|
|
||||||
public record FloatTypeSyntax(IEnumerable<Token> Tokens, int Width) : TypeSyntax(Tokens)
|
public record BoolTypeSyntax(IEnumerable<Token> Tokens) : TypeSyntax(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren() => [];
|
|
||||||
}
|
|
||||||
|
|
||||||
public record BoolTypeSyntax(IEnumerable<Token> Tokens) : TypeSyntax(Tokens)
|
public record StringTypeSyntax(IEnumerable<Token> Tokens) : TypeSyntax(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren() => [];
|
|
||||||
}
|
|
||||||
|
|
||||||
public record StringTypeSyntax(IEnumerable<Token> Tokens) : TypeSyntax(Tokens)
|
public record CStringTypeSyntax(IEnumerable<Token> Tokens) : TypeSyntax(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren() => [];
|
|
||||||
}
|
|
||||||
|
|
||||||
public record CStringTypeSyntax(IEnumerable<Token> Tokens) : TypeSyntax(Tokens)
|
public record ArrayTypeSyntax(IEnumerable<Token> Tokens, TypeSyntax BaseType) : TypeSyntax(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren() => [];
|
|
||||||
}
|
|
||||||
|
|
||||||
public record ArrayTypeSyntax(IEnumerable<Token> Tokens, TypeSyntax BaseType) : TypeSyntax(Tokens)
|
public record CustomTypeSyntax(IEnumerable<Token> Tokens, string Name) : TypeSyntax(Tokens);
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren()
|
|
||||||
{
|
|
||||||
yield return BaseType;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public record CustomTypeSyntax(IEnumerable<Token> Tokens, string Name) : TypeSyntax(Tokens)
|
|
||||||
{
|
|
||||||
public override IEnumerable<SyntaxNode> GetChildren() => [];
|
|
||||||
}
|
|
||||||
@@ -71,5 +71,4 @@ public enum Symbol
|
|||||||
For,
|
For,
|
||||||
Extern,
|
Extern,
|
||||||
Semi,
|
Semi,
|
||||||
Arrow,
|
|
||||||
}
|
}
|
||||||
@@ -29,7 +29,6 @@ public sealed class Tokenizer
|
|||||||
[['!', '=']] = Symbol.NotEqual,
|
[['!', '=']] = Symbol.NotEqual,
|
||||||
[['<', '=']] = Symbol.LessThanOrEqual,
|
[['<', '=']] = Symbol.LessThanOrEqual,
|
||||||
[['>', '=']] = Symbol.GreaterThanOrEqual,
|
[['>', '=']] = Symbol.GreaterThanOrEqual,
|
||||||
[['=', '>']] = Symbol.Arrow,
|
|
||||||
[[':']] = Symbol.Colon,
|
[[':']] = Symbol.Colon,
|
||||||
[['(']] = Symbol.OpenParen,
|
[['(']] = Symbol.OpenParen,
|
||||||
[[')']] = Symbol.CloseParen,
|
[[')']] = Symbol.CloseParen,
|
||||||
|
|||||||
Reference in New Issue
Block a user