use of org.eclipse.xtext.example.arithmetics.arithmetics.AbstractDefinition in project xtext-eclipse by eclipse.
the class Calculator method _internalEvaluate.
/**
* @param values the currently known values by name
*/
protected BigDecimal _internalEvaluate(final FunctionCall e, final ImmutableMap<String, BigDecimal> values) {
AbstractDefinition _func = e.getFunc();
if ((_func instanceof DeclaredParameter)) {
return values.get(e.getFunc().getName());
}
AbstractDefinition _func_1 = e.getFunc();
final AbstractDefinition d = _func_1;
boolean _matched = false;
if (d instanceof Definition) {
_matched = true;
HashMap<String, BigDecimal> params = Maps.<String, BigDecimal>newHashMap();
for (int i = 0; (i < e.getArgs().size()); i++) {
{
DeclaredParameter declaredParameter = ((Definition) d).getArgs().get(i);
BigDecimal evaluate = this.evaluate(e.getArgs().get(i), values);
params.put(declaredParameter.getName(), evaluate);
}
}
return this.evaluate(((Definition) d).getExpr(), ImmutableMap.<String, BigDecimal>copyOf(params));
}
return null;
}
use of org.eclipse.xtext.example.arithmetics.arithmetics.AbstractDefinition in project xtext-eclipse by eclipse.
the class ArithmeticsCallHierarchyBuilder method findDeclaration.
@Override
protected IEObjectDescription findDeclaration(URI objectURI) {
IEObjectDescription description = this.getDescription(objectURI);
EClass eClass = null;
if (description != null) {
eClass = description.getEClass();
}
if (this.isDefinition(eClass)) {
return description;
}
return readOnly(objectURI, (EObject object) -> {
AbstractDefinition abstractDefinition = EcoreUtil2.getContainerOfType(object, AbstractDefinition.class);
return getDescription(abstractDefinition);
});
}
use of org.eclipse.xtext.example.arithmetics.arithmetics.AbstractDefinition in project xtext-eclipse by eclipse.
the class FunctionCallImpl method setFunc.
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public void setFunc(AbstractDefinition newFunc) {
AbstractDefinition oldFunc = func;
func = newFunc;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, ArithmeticsPackage.FUNCTION_CALL__FUNC, oldFunc, func));
}
Aggregations