All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.unlaxer.ast.ASTMapperContext Maven / Gradle / Ivy

package org.unlaxer.ast;

import java.util.Optional;

import org.unlaxer.Token;

public interface ASTMapperContext{
	
	public static ASTMapperContext create(ASTMapper... astMappers) {
		
		return new ASTMapperContext() {
			
			@Override
			public Token toAST(Token parsedToken) {
				for (ASTMapper astMapper : astMappers) {
					if(astMapper.canASTMapping(parsedToken)) {
						Token ast = astMapper.toAST(this, parsedToken);
						return ast;
					}
				}
				return parsedToken;
			}

			@Override
			public Optional toASTexpectsMapping(Token parsedToken) {
				for (ASTMapper astMapper : astMappers) {
					if(astMapper.canASTMapping(parsedToken)) {
						Token ast = astMapper.toAST(this, parsedToken);
						return Optional.of(ast);
					}
				}
				return Optional.empty();
			}
		};
	}
	
	/**
	 * @param parsedToken
	 * @return if ASTMappers does not effect token, then return present token.
	 */
	Token toAST(Token parsedToken);
	
	/**
	 * @param parsedToken
	 * @return value is empty , ASTMappers does not effect token.
	 */
	Optional toASTexpectsMapping(Token parsedToken);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy