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

edelta.compiler.EdeltaXbaseCompiler Maven / Gradle / Ivy

There is a newer version: 3.5.0
Show newest version
package edelta.compiler;

import org.eclipse.xtext.xbase.XExpression;
import org.eclipse.xtext.xbase.compiler.XbaseCompiler;
import org.eclipse.xtext.xbase.compiler.output.ITreeAppendable;

import com.google.inject.Inject;

import edelta.edelta.EdeltaEcoreReferenceExpression;

public class EdeltaXbaseCompiler extends XbaseCompiler {
	@Inject
	private EdeltaCompilerUtil edeltaCompilerUtil;

	@Override
	protected void doInternalToJavaStatement(final XExpression obj, final ITreeAppendable appendable,
			final boolean isReferenced) {
		if (obj instanceof EdeltaEcoreReferenceExpression) {
			if (!isReferenced) {
				appendable.newLine();
				compileEdeltaEcoreReferenceExpression(
					(EdeltaEcoreReferenceExpression) obj, appendable);
				appendable.append(";");
			}
		} else {
			super.doInternalToJavaStatement(obj, appendable, isReferenced);
		}
	}

	@Override
	protected void internalToConvertedExpression(final XExpression obj, final ITreeAppendable appendable) {
		if (obj instanceof EdeltaEcoreReferenceExpression) {
			compileEdeltaEcoreReferenceExpression(
				(EdeltaEcoreReferenceExpression) obj, appendable);
		} else {
			super.internalToConvertedExpression(obj, appendable);
		}
	}

	private void compileEdeltaEcoreReferenceExpression(final EdeltaEcoreReferenceExpression obj,
			final ITreeAppendable appendable) {
		appendable.append(edeltaCompilerUtil.getStringForEcoreReferenceExpression(obj));
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy