ShortCircuitTransformer.java

package dev.civl.mc.transform.IF;

import dev.civl.abc.ast.IF.AST;
import dev.civl.abc.ast.IF.ASTFactory;
import dev.civl.abc.token.IF.SyntaxException;
import dev.civl.abc.transform.IF.BaseTransformer;
import dev.civl.mc.transform.common.ShortCircuitTransformerWorker;

public class ShortCircuitTransformer extends BaseTransformer {

	public final static String CODE = "short-circuit";
	public final static String LONG_NAME = "shortCircuitTransformer";
	public final static String SHORT_DESCRIPTION = "transforms logical AND, logical OR and logical IMPLIES away to lift short circuit evaluation in CIVL backend";
	public final static String PREFIX = "_shcc_";

	public ShortCircuitTransformer(ASTFactory astFactory) {
		super(CODE, LONG_NAME, SHORT_DESCRIPTION, astFactory);
	}

	@Override
	public AST transform(AST ast) throws SyntaxException {
		return new ShortCircuitTransformerWorker(code, astFactory)
				.transform(ast);
	}
}