package org.docbag.expression.parser;
import java.util.List;
import org.docbag.expression.Expression;
/**
* Implementations of ExpressionParser are responsible for creating {@link Expression} instances
* form the expression source S.
* @author Jakub Torbicki
*/
public interface ExpressionParser<S, R> {
/**
* Checks if this is a valid expression source.
* @return true if it is, false otherwise
*/
public boolean isExpression(S expressionSource);
/**
* Creates an {@link Expression} object from the expressionSource S.
*/
public Expression<S, R> parseExpression(S expressionSource);
/**
* Split source into expression tokens.
*
* @param source tokens
* @return list of tokens
*/
public List<S> split(S source);
}