Search in sources :

Example 1 with DeclaredParameter

use of org.eclipse.xtext.example.arithmetics.arithmetics.DeclaredParameter in project xtext-eclipse by eclipse.

the class ArithmeticsSemanticSequencer method sequence.

@Override
public void sequence(ISerializationContext context, EObject semanticObject) {
    EPackage epackage = semanticObject.eClass().getEPackage();
    ParserRule rule = context.getParserRule();
    Action action = context.getAssignedAction();
    Set<Parameter> parameters = context.getEnabledBooleanParameters();
    if (epackage == ArithmeticsPackage.eINSTANCE)
        switch(semanticObject.eClass().getClassifierID()) {
            case ArithmeticsPackage.DECLARED_PARAMETER:
                sequence_DeclaredParameter(context, (DeclaredParameter) semanticObject);
                return;
            case ArithmeticsPackage.DEFINITION:
                sequence_Definition(context, (Definition) semanticObject);
                return;
            case ArithmeticsPackage.DIV:
                sequence_Multiplication(context, (Div) semanticObject);
                return;
            case ArithmeticsPackage.EVALUATION:
                sequence_Evaluation(context, (Evaluation) semanticObject);
                return;
            case ArithmeticsPackage.FUNCTION_CALL:
                sequence_PrimaryExpression(context, (FunctionCall) semanticObject);
                return;
            case ArithmeticsPackage.IMPORT:
                sequence_Import(context, (Import) semanticObject);
                return;
            case ArithmeticsPackage.MINUS:
                sequence_Addition(context, (Minus) semanticObject);
                return;
            case ArithmeticsPackage.MODULE:
                sequence_Module(context, (org.eclipse.xtext.example.arithmetics.arithmetics.Module) semanticObject);
                return;
            case ArithmeticsPackage.MULTI:
                sequence_Multiplication(context, (Multi) semanticObject);
                return;
            case ArithmeticsPackage.NUMBER_LITERAL:
                sequence_PrimaryExpression(context, (NumberLiteral) semanticObject);
                return;
            case ArithmeticsPackage.PLUS:
                sequence_Addition(context, (Plus) semanticObject);
                return;
        }
    if (errorAcceptor != null)
        errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
}
Also used : ParserRule(org.eclipse.xtext.ParserRule) Evaluation(org.eclipse.xtext.example.arithmetics.arithmetics.Evaluation) Action(org.eclipse.xtext.Action) Import(org.eclipse.xtext.example.arithmetics.arithmetics.Import) Definition(org.eclipse.xtext.example.arithmetics.arithmetics.Definition) Multi(org.eclipse.xtext.example.arithmetics.arithmetics.Multi) EPackage(org.eclipse.emf.ecore.EPackage) Div(org.eclipse.xtext.example.arithmetics.arithmetics.Div) DeclaredParameter(org.eclipse.xtext.example.arithmetics.arithmetics.DeclaredParameter) Parameter(org.eclipse.xtext.Parameter) FunctionCall(org.eclipse.xtext.example.arithmetics.arithmetics.FunctionCall) DeclaredParameter(org.eclipse.xtext.example.arithmetics.arithmetics.DeclaredParameter) Plus(org.eclipse.xtext.example.arithmetics.arithmetics.Plus) Minus(org.eclipse.xtext.example.arithmetics.arithmetics.Minus) NumberLiteral(org.eclipse.xtext.example.arithmetics.arithmetics.NumberLiteral)

Example 2 with DeclaredParameter

use of org.eclipse.xtext.example.arithmetics.arithmetics.DeclaredParameter 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;
}
Also used : Definition(org.eclipse.xtext.example.arithmetics.arithmetics.Definition) AbstractDefinition(org.eclipse.xtext.example.arithmetics.arithmetics.AbstractDefinition) AbstractDefinition(org.eclipse.xtext.example.arithmetics.arithmetics.AbstractDefinition) DeclaredParameter(org.eclipse.xtext.example.arithmetics.arithmetics.DeclaredParameter) BigDecimal(java.math.BigDecimal)

Aggregations

DeclaredParameter (org.eclipse.xtext.example.arithmetics.arithmetics.DeclaredParameter)2 Definition (org.eclipse.xtext.example.arithmetics.arithmetics.Definition)2 BigDecimal (java.math.BigDecimal)1 EPackage (org.eclipse.emf.ecore.EPackage)1 Action (org.eclipse.xtext.Action)1 Parameter (org.eclipse.xtext.Parameter)1 ParserRule (org.eclipse.xtext.ParserRule)1 AbstractDefinition (org.eclipse.xtext.example.arithmetics.arithmetics.AbstractDefinition)1 Div (org.eclipse.xtext.example.arithmetics.arithmetics.Div)1 Evaluation (org.eclipse.xtext.example.arithmetics.arithmetics.Evaluation)1 FunctionCall (org.eclipse.xtext.example.arithmetics.arithmetics.FunctionCall)1 Import (org.eclipse.xtext.example.arithmetics.arithmetics.Import)1 Minus (org.eclipse.xtext.example.arithmetics.arithmetics.Minus)1 Multi (org.eclipse.xtext.example.arithmetics.arithmetics.Multi)1 NumberLiteral (org.eclipse.xtext.example.arithmetics.arithmetics.NumberLiteral)1 Plus (org.eclipse.xtext.example.arithmetics.arithmetics.Plus)1