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

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

package org.unlaxer.ast;

import java.util.Iterator;

import org.unlaxer.Token;
import org.unlaxer.TokenList;

public interface RecursiveZeroOrMoreBinaryOperator extends ASTMapper{

	/* fit to following
		new Parsers(
			Parser.get(StringTermParser.class),
			new ZeroOrMore(
				new WhiteSpaceDelimitedChain(
					Parser.get(StringPlusParser.class),
					Parser.get(StringTermParser.class)
				)
			)
		);
	*/
	@Override
	default Token toAST(ASTMapperContext context , Token parsedToken) {
		
		TokenList originalTokens = parsedToken.getAstNodeChildren();
		Iterator iterator = originalTokens.iterator();
		
		Token left = context.toAST(iterator.next());
		
		Token lastOpearatorAndOperands = left;
		
		while(iterator.hasNext()){
			Token operator = iterator.next();
			Token right = context.toAST(iterator.next());
			lastOpearatorAndOperands = 
//				operator.newCreatesOf(operator , lastOpearatorAndOperands , right);
				operator.newCreatesOf(lastOpearatorAndOperands , right);
		}
		return lastOpearatorAndOperands;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy