ln.parse/ln.parse/tokenizer/Token.cs

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) { }
}
}
}