This commit is contained in:
nub31
2025-11-03 16:01:20 +01:00
parent 7ce451768d
commit 7d49bf43b7
7 changed files with 207 additions and 109 deletions

View File

@@ -2,18 +2,38 @@
namespace NubLang.Syntax;
public abstract record Token(SourceSpan Span);
public record IdentifierToken(SourceSpan Span, string Value) : Token(Span)
public abstract class Token(SourceSpan span)
{
public SourceSpan Span { get; } = span;
}
public class WhitespaceToken(SourceSpan span) : Token(span);
public class CommentToken(SourceSpan span, string comment) : Token(span)
{
public string Comment { get; } = comment;
public override string ToString()
{
return "// " + Comment;
}
}
public class IdentifierToken(SourceSpan span, string value) : Token(span)
{
public string Value { get; } = value;
public override string ToString()
{
return Value;
}
}
public record IntLiteralToken(SourceSpan Span, string Value, int Base) : Token(Span)
public class IntLiteralToken(SourceSpan span, string value, int @base) : Token(span)
{
public string Value { get; } = value;
public int Base { get; } = @base;
private string GetNumericValue()
{
return Base switch
@@ -43,24 +63,30 @@ public record IntLiteralToken(SourceSpan Span, string Value, int Base) : Token(S
}
}
public record StringLiteralToken(SourceSpan Span, string Value) : Token(Span)
public class StringLiteralToken(SourceSpan span, string value) : Token(span)
{
public string Value { get; } = value;
public override string ToString()
{
return $"\"{Value}\"";
}
}
public record BoolLiteralToken(SourceSpan Span, bool Value) : Token(Span)
public class BoolLiteralToken(SourceSpan span, bool value) : Token(span)
{
public bool Value { get; } = value;
public override string ToString()
{
return Value ? "true" : "false";
}
}
public record FloatLiteralToken(SourceSpan Span, string Value) : Token(Span)
public class FloatLiteralToken(SourceSpan span, string value) : Token(span)
{
public string Value { get; } = value;
public float AsF32 => Convert.ToSingle(Value);
public double AsF64 => Convert.ToDouble(Value);
@@ -134,8 +160,10 @@ public enum Symbol
QuestionMark,
}
public record SymbolToken(SourceSpan Span, Symbol Symbol) : Token(Span)
public class SymbolToken(SourceSpan span, Symbol symbol) : Token(span)
{
public Symbol Symbol { get; } = symbol;
public override string ToString()
{
return Symbol switch
@@ -189,7 +217,6 @@ public record SymbolToken(SourceSpan Span, Symbol Symbol) : Token(Span)
Symbol.Pipe => "|",
Symbol.At => "@",
Symbol.QuestionMark => "?",
Symbol.Tilde => "~",
_ => "none",
};
}