sharp-parser/Parser.cs

33 lines
636 B
C#

using System;
using System.Collections.Generic;
using System.Collections;
namespace sharp.parser
{
public abstract class Parser<T>
{
protected Lexer Lexer { get; private set; }
protected Parser(TokenDefinition[] tokenDefinitions)
{
this.Lexer = new Lexer(tokenDefinitions);
}
public Token[] Tokenize(char[] source){
return this.Lexer.parse(new CharBuffer(source));
}
public T Parse(string source){
return Parse(source.ToCharArray());
}
public T Parse(char[] source){
Token[] tokens = Tokenize(source);
return ParseTokens(tokens);
}
protected abstract T ParseTokens(Token[] tokens);
}
}