using System; using System.Collections.Generic; using sharp.extensions; namespace sharp.parser { public class Token { public TokenDefinition Definition { get; private set; } public CharBuffer charBuffer; public CharBuffer Buffer { get { return charBuffer; } } public int Position { get; private set; } public int Len { get; private set; } public string Value { get { return new String(charBuffer.Characters.Segment(Position, Len)); } } public Token(TokenDefinition tdef,CharBuffer buffer,int len) { this.Definition = tdef; this.charBuffer = buffer; this.Position = buffer.Position; this.Len = len; buffer.Position += len; } public override string ToString() { return string.Format("[Token: {0} Value={1}]", Definition.Name, Value); } } }