82 lines
1.3 KiB
C#
82 lines
1.3 KiB
C#
using NubLang.Code;
|
|
|
|
namespace NubLang.Tokenization;
|
|
|
|
public abstract class Token(SourceFileSpan fileSpan)
|
|
{
|
|
public SourceFileSpan FileSpan { get; } = fileSpan;
|
|
}
|
|
|
|
public class IdentifierToken(SourceFileSpan fileSpan, string value) : Token(fileSpan)
|
|
{
|
|
public string Value { get; } = value;
|
|
}
|
|
|
|
public class LiteralToken(SourceFileSpan fileSpan, LiteralKind kind, string value) : Token(fileSpan)
|
|
{
|
|
public LiteralKind Kind { get; } = kind;
|
|
public string Value { get; } = value;
|
|
}
|
|
|
|
public enum LiteralKind
|
|
{
|
|
Integer,
|
|
Float,
|
|
String,
|
|
Bool
|
|
}
|
|
|
|
public class SymbolToken(SourceFileSpan fileSpan, Symbol symbol) : Token(fileSpan)
|
|
{
|
|
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,
|
|
Let,
|
|
Calls,
|
|
Interface,
|
|
For,
|
|
Extern,
|
|
Semi,
|
|
Percent,
|
|
LeftShift,
|
|
RightShift,
|
|
Pipe,
|
|
And,
|
|
Or,
|
|
Module,
|
|
Import,
|
|
Export,
|
|
} |