55 lines
1.9 KiB
C#
55 lines
1.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
|
|
namespace ln.parse.tokenizer
|
|
{
|
|
public class Token
|
|
{
|
|
public SourceBuffer SourceBuffer { get; }
|
|
public int LinearStart { get; }
|
|
public int Length { get; }
|
|
|
|
public TextPosition TextPosition => SourceBuffer.GetTextPosition(LinearStart);
|
|
|
|
public Token(SourceBuffer sourceBuffer, int start, int length)
|
|
{
|
|
SourceBuffer = sourceBuffer;
|
|
LinearStart = start;
|
|
Length = length;
|
|
}
|
|
|
|
public string Value => SourceBuffer.GetText(LinearStart, Length);
|
|
|
|
|
|
public class IntegerToken : Token
|
|
{
|
|
public IntegerToken(SourceBuffer sourceBuffer, int start, int length) : base(sourceBuffer, start, length) { }
|
|
}
|
|
public class FloatToken : Token
|
|
{
|
|
public FloatToken(SourceBuffer sourceBuffer, int start, int length) : base(sourceBuffer, start, length) { }
|
|
}
|
|
public class StringToken : Token
|
|
{
|
|
public StringToken(SourceBuffer sourceBuffer, int start, int length) : base(sourceBuffer, start, length) { }
|
|
}
|
|
public class OperatorToken : Token
|
|
{
|
|
public OperatorToken(SourceBuffer sourceBuffer, int start, int length) : base(sourceBuffer, start, length) { }
|
|
}
|
|
public class WhiteSpaceToken : Token
|
|
{
|
|
public WhiteSpaceToken(SourceBuffer sourceBuffer, int start, int length) : base(sourceBuffer, start, length) { }
|
|
}
|
|
public class IdentifierToken : Token
|
|
{
|
|
public IdentifierToken(SourceBuffer sourceBuffer, int start, int length) : base(sourceBuffer, start, length) { }
|
|
}
|
|
public class BracketToken : Token
|
|
{
|
|
public BracketToken(SourceBuffer sourceBuffer, int start, int length) : base(sourceBuffer, start, length) { }
|
|
}
|
|
}
|
|
}
|