77 lines
1.2 KiB
C#
77 lines
1.2 KiB
C#
namespace NubLang.Syntax.Tokenization;
|
|
|
|
public abstract class Token(SourceSpan span)
|
|
{
|
|
public SourceSpan Span { get; } = span;
|
|
}
|
|
|
|
public class IdentifierToken(SourceSpan span, string value) : Token(span)
|
|
{
|
|
public string Value { get; } = value;
|
|
}
|
|
|
|
public class LiteralToken(SourceSpan span, LiteralKind kind, string value) : Token(span)
|
|
{
|
|
public LiteralKind Kind { get; } = kind;
|
|
public string Value { get; } = value;
|
|
}
|
|
|
|
public enum LiteralKind
|
|
{
|
|
Integer,
|
|
Float,
|
|
String,
|
|
Bool
|
|
}
|
|
|
|
public class SymbolToken(SourceSpan span, Symbol symbol) : Token(span)
|
|
{
|
|
public Symbol Symbol { get; } = symbol;
|
|
}
|
|
|
|
public enum Symbol
|
|
{
|
|
Func,
|
|
Return,
|
|
If,
|
|
Else,
|
|
While,
|
|
Break,
|
|
Continue,
|
|
Colon,
|
|
OpenParen,
|
|
CloseParen,
|
|
OpenBrace,
|
|
CloseBrace,
|
|
OpenBracket,
|
|
CloseBracket,
|
|
Comma,
|
|
Period,
|
|
Assign,
|
|
Bang,
|
|
Equal,
|
|
NotEqual,
|
|
LessThan,
|
|
LessThanOrEqual,
|
|
GreaterThan,
|
|
GreaterThanOrEqual,
|
|
Plus,
|
|
Minus,
|
|
Star,
|
|
ForwardSlash,
|
|
Struct,
|
|
Caret,
|
|
Ampersand,
|
|
DoubleColon,
|
|
Namespace,
|
|
Let,
|
|
Alloc,
|
|
Calls,
|
|
Trait,
|
|
Impl,
|
|
For,
|
|
Extern,
|
|
Semi,
|
|
Arrow,
|
|
Template
|
|
} |