Search in sources :

Example 1 with IdentifierContext

use of org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.IdentifierContext in project legend-pure by finos.

the class AntlrContextToM3CoreInstance method definition.

public CoreInstance definition(DefinitionContext ctx, boolean useImportStubsInInstanceParser) throws PureParserException {
    CoreInstance result = null;
    ImportGroup importId = null;
    if (ctx.imports() != null) {
        importId = this.imports(ctx.imports());
        if (this.oldState == null) {
            this.hasImportChanged = true;
        } else {
            String importGroupID = importId._name();
            RichIterable<? extends PackageableElement> oldImportGroups = this.oldState.getImportGroups().select(e -> importGroupID.equals(e._name()));
            if (oldImportGroups.size() == 1) {
                ImportGroup oldImportGroup = (ImportGroup) oldImportGroups.toList().get(0);
                MutableSet<String> oldPaths = oldImportGroup._imports().collect(Import::_path, Sets.mutable.empty());
                MutableSet<String> newPaths = importId._imports().collect(Import::_path, Sets.mutable.empty());
                if (oldPaths.equals(newPaths)) {
                    this.hasImportChanged = false;
                    PackageInstance parent = (PackageInstance) this.processorSupport.package_getByUserPath("system::imports");
                    parent._children(parent._children().reject(e -> importGroupID.equals(e._name())));
                    parent._childrenAdd(oldImportGroup);
                    oldImportGroup._package(parent);
                    oldImportGroup.setSourceInformation(importId.getSourceInformation());
                    oldImportGroup._imports(importId._imports());
                    importId = oldImportGroup;
                } else {
                    this.hasImportChanged = true;
                }
            } else {
                this.hasImportChanged = true;
            }
        }
    }
    if (ctx.profile() != null) {
        for (ProfileContext pCtx : ctx.profile()) {
            if (this.hasImportChanged) {
                result = this.profile(pCtx);
            } else {
                String importGroupID = importId._name();
                String newContent = Lists.mutable.with(pCtx.start.getInputStream().getText(new Interval(pCtx.start.getStartIndex(), pCtx.stop.getStopIndex())).split("\\r?\\n")).makeString("", System.lineSeparator(), System.lineSeparator());
                MutableList<CoreInstance> oldInstances = this.oldInstances.select(i -> (this.oldState != null) && this.oldState.instanceImportGroupInSourceEqualsNewImportGroup(i, importGroupID) && this.oldState.instanceContentInSourceEqualsNewContent(i, newContent), Lists.mutable.empty());
                if (oldInstances.size() == 1) {
                    CoreInstance thisInstance = oldInstances.get(0);
                    this.oldInstances.remove(thisInstance);
                    SourceInformation newSourceInfo = this.sourceInformation.getPureSourceInformation(pCtx.getStart(), pCtx.qualifiedName().getStop(), pCtx.getStop());
                    if (thisInstance.getSourceInformation().getStartColumn() == newSourceInfo.getStartColumn()) {
                        this.offsetSourceInformationForInstanceAndChildren(thisInstance, newSourceInfo.getStartLine() - thisInstance.getSourceInformation().getStartLine());
                        PackageInstance packageInstance = this.buildPackage(pCtx.qualifiedName().packagePath());
                        ((PackageableElement) thisInstance)._package(packageInstance);
                        packageInstance._childrenAdd((PackageableElement) thisInstance);
                        result = thisInstance;
                    } else {
                        result = this.profile(pCtx);
                    }
                } else {
                    result = this.profile(pCtx);
                }
            }
            this.coreInstancesResult.add(result);
        }
    }
    if (ctx.classDefinition() != null) {
        for (ClassDefinitionContext dCtx : ctx.classDefinition()) {
            if (this.hasImportChanged) {
                result = this.classParser(dCtx, importId, this.addLines);
            } else {
                String importGroupID = importId._name();
                String newContent = Lists.mutable.with(dCtx.start.getInputStream().getText(new Interval(dCtx.start.getStartIndex(), dCtx.stop.getStopIndex())).split("\\r?\\n")).makeString("", System.lineSeparator(), System.lineSeparator());
                List<CoreInstance> oldInstances = this.oldInstances.select(i -> (this.oldState != null) && this.oldState.instanceImportGroupInSourceEqualsNewImportGroup(i, importGroupID) && this.oldState.instanceContentInSourceEqualsNewContent(i, newContent), Lists.mutable.empty());
                if (oldInstances.size() == 1) {
                    CoreInstance thisInstance = oldInstances.get(0);
                    this.oldInstances.remove(thisInstance);
                    SourceInformation newSourceInfo = this.sourceInformation.getPureSourceInformation(dCtx.getStart(), dCtx.qualifiedName().identifier().getStart(), dCtx.getStop());
                    if (thisInstance.getSourceInformation().getStartColumn() == newSourceInfo.getStartColumn()) {
                        this.offsetSourceInformationForInstanceAndChildren(thisInstance, newSourceInfo.getStartLine() - thisInstance.getSourceInformation().getStartLine());
                        PackageInstance packageInstance = this.buildPackage(dCtx.qualifiedName().packagePath());
                        ((PackageableElement) thisInstance)._package(packageInstance);
                        packageInstance._childrenAdd((PackageableElement) thisInstance);
                        result = thisInstance;
                    } else {
                        result = this.classParser(dCtx, importId, this.addLines);
                    }
                } else {
                    result = this.classParser(dCtx, importId, this.addLines);
                }
            }
            this.coreInstancesResult.add(result);
        }
    }
    if (ctx.measureDefinition() != null) {
        for (org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.MeasureDefinitionContext dCtx : ctx.measureDefinition()) {
            if (this.hasImportChanged) {
                result = this.measureParser(dCtx, importId, this.addLines);
            } else {
                String importGroupID = importId._name();
                String newContent = Lists.mutable.with(dCtx.start.getInputStream().getText(new Interval(dCtx.start.getStartIndex(), dCtx.stop.getStopIndex())).split("\\r?\\n")).makeString("", System.lineSeparator(), System.lineSeparator());
                List<CoreInstance> oldInstances = this.oldInstances.select(i -> (this.oldState != null) && this.oldState.instanceImportGroupInSourceEqualsNewImportGroup(i, importGroupID) && this.oldState.instanceContentInSourceEqualsNewContent(i, newContent), Lists.mutable.empty());
                Predicate2<CoreInstance, SourceInformation> matchesOldInstance = (oldMeasureInstance, newSourceInfo) -> {
                    if (newSourceInfo == null || oldMeasureInstance.getSourceInformation().getStartColumn() == newSourceInfo.getStartColumn()) {
                        PackageInstance packageInstance;
                        if (newSourceInfo != null) {
                            offsetSourceInformationForInstanceAndChildren(oldMeasureInstance, newSourceInfo.getStartLine() - oldMeasureInstance.getSourceInformation().getStartLine());
                        }
                        Function<String, IdentifierContext> newIdentifierContext = s -> new IdentifierContext(null, 1) {

                            @Override
                            public String getText() {
                                return s;
                            }
                        };
                        packageInstance = buildPackage(Lists.mutable.with(newIdentifierContext.valueOf(oldMeasureInstance.getValueForMetaPropertyToOne(M3Properties._package).getName())));
                        ((PackageableElement) oldMeasureInstance)._package(packageInstance);
                        packageInstance._childrenAdd((PackageableElement) oldMeasureInstance);
                        return true;
                    }
                    return false;
                };
                CoreInstance oldMeasureInstance = ListIterate.detect(oldInstances, i -> Instance.instanceOf(i, M3Paths.Measure, this.processorSupport));
                if (oldMeasureInstance != null) {
                    this.oldInstances.remove(oldMeasureInstance);
                    SourceInformation newSourceInfo = this.sourceInformation.getPureSourceInformation(dCtx.getStart(), dCtx.qualifiedName().identifier().getStart(), dCtx.getStop());
                    if (matchesOldInstance.accept(oldMeasureInstance, newSourceInfo)) {
                        MeasureInstance mI = (MeasureInstance) oldMeasureInstance;
                        result = mI;
                        MutableList<Unit> units = Lists.mutable.with(mI._canonicalUnit()).withAll(mI._nonCanonicalUnits());
                        for (Unit unit : units) {
                            PackageInstance packageInstance = buildPackage(Lists.mutable.withAll(dCtx.qualifiedName().packagePath() == null ? Lists.mutable.empty() : ListAdapter.adapt(dCtx.qualifiedName().packagePath().identifier())));
                            unit._package(packageInstance);
                            packageInstance._childrenAdd(unit);
                        }
                    } else {
                        result = this.measureParser(dCtx, importId, this.addLines);
                    }
                } else {
                    result = this.measureParser(dCtx, importId, this.addLines);
                }
            }
            MeasureInstance mI = (MeasureInstance) result;
            List<Unit> allMeasureUnitInstances = Lists.mutable.<Unit>withAll(mI._nonCanonicalUnits()).with(mI._canonicalUnit()).toList();
            this.coreInstancesResult.add(result);
            this.coreInstancesResult.addAll(allMeasureUnitInstances);
        }
    }
    if (ctx.association() != null) {
        for (AssociationContext pCtx : ctx.association()) {
            if (this.hasImportChanged) {
                result = this.associationParser(pCtx, importId);
            } else {
                String importGroupID = importId._name();
                String newContent = Lists.mutable.with(pCtx.start.getInputStream().getText(new Interval(pCtx.start.getStartIndex(), pCtx.stop.getStopIndex())).split("\\r?\\n")).makeString("", System.lineSeparator(), System.lineSeparator());
                List<CoreInstance> oldInstances = this.oldInstances.select(i -> (this.oldState != null) && this.oldState.instanceImportGroupInSourceEqualsNewImportGroup(i, importGroupID) && this.oldState.instanceContentInSourceEqualsNewContent(i, newContent), Lists.mutable.empty());
                if (oldInstances.size() == 1) {
                    CoreInstance thisInstance = oldInstances.get(0);
                    this.oldInstances.remove(thisInstance);
                    SourceInformation newSourceInfo = this.sourceInformation.getPureSourceInformation(pCtx.ASSOCIATION().getSymbol(), pCtx.qualifiedName().identifier().getStart(), pCtx.getStop());
                    if (thisInstance.getSourceInformation().getStartColumn() == newSourceInfo.getStartColumn()) {
                        this.offsetSourceInformationForInstanceAndChildren(thisInstance, newSourceInfo.getStartLine() - thisInstance.getSourceInformation().getStartLine());
                        PackageInstance packageInstance = this.buildPackage(pCtx.qualifiedName().packagePath());
                        ((PackageableElement) thisInstance)._package(packageInstance);
                        packageInstance._childrenAdd((PackageableElement) thisInstance);
                        result = thisInstance;
                    } else {
                        result = this.associationParser(pCtx, importId);
                    }
                } else {
                    result = this.associationParser(pCtx, importId);
                }
            }
            this.coreInstancesResult.add(result);
        }
    }
    if (ctx.enumDefinition() != null) {
        for (EnumDefinitionContext pCtx : ctx.enumDefinition()) {
            if (this.hasImportChanged) {
                result = this.enumParser(pCtx, importId);
            } else {
                String importGroupID = importId._name();
                String newContent = Lists.mutable.with(pCtx.start.getInputStream().getText(new Interval(pCtx.start.getStartIndex(), pCtx.stop.getStopIndex())).split("\\r?\\n")).makeString("", System.lineSeparator(), System.lineSeparator());
                List<CoreInstance> oldInstances = this.oldInstances.select(i -> (this.oldState != null) && this.oldState.instanceImportGroupInSourceEqualsNewImportGroup(i, importGroupID) && this.oldState.instanceContentInSourceEqualsNewContent(i, newContent), Lists.mutable.empty());
                if (oldInstances.size() == 1) {
                    CoreInstance thisInstance = oldInstances.get(0);
                    this.oldInstances.remove(thisInstance);
                    SourceInformation newSourceInfo = this.sourceInformation.getPureSourceInformation(pCtx.getStart(), pCtx.qualifiedName().identifier().getStart(), pCtx.getStop());
                    if (thisInstance.getSourceInformation().getStartColumn() == newSourceInfo.getStartColumn()) {
                        this.offsetSourceInformationForInstanceAndChildren(thisInstance, newSourceInfo.getStartLine() - thisInstance.getSourceInformation().getStartLine());
                        PackageInstance packageInstance = this.buildPackage(pCtx.qualifiedName().packagePath());
                        ((PackageableElement) thisInstance)._package(packageInstance);
                        packageInstance._childrenAdd((PackageableElement) thisInstance);
                        result = thisInstance;
                    } else {
                        result = this.enumParser(pCtx, importId);
                    }
                } else {
                    result = this.enumParser(pCtx, importId);
                }
            }
            this.coreInstancesResult.add(result);
        }
    }
    if (ctx.nativeFunction() != null) {
        for (NativeFunctionContext pCtx : ctx.nativeFunction()) {
            if (this.hasImportChanged) {
                this.nativeFunction(pCtx, importId, "", this.coreInstancesResult);
            } else {
                String importGroupID = importId._name();
                String newContent = Lists.mutable.with(pCtx.start.getInputStream().getText(new Interval(pCtx.start.getStartIndex(), pCtx.stop.getStopIndex())).split("\\r?\\n")).makeString("", System.lineSeparator(), System.lineSeparator());
                List<CoreInstance> oldInstances = this.oldInstances.select(i -> (this.oldState != null) && this.oldState.instanceImportGroupInSourceEqualsNewImportGroup(i, importGroupID) && this.oldState.instanceContentInSourceEqualsNewContent(i, newContent), Lists.mutable.empty());
                if (oldInstances.size() == 1) {
                    CoreInstance thisInstance = oldInstances.get(0);
                    this.oldInstances.remove(thisInstance);
                    SourceInformation newSourceInfo = this.sourceInformation.getPureSourceInformation(pCtx.NATIVE().getSymbol(), pCtx.qualifiedName().identifier().getStart(), pCtx.END_LINE().getSymbol());
                    if (thisInstance.getSourceInformation().getStartColumn() == newSourceInfo.getStartColumn()) {
                        this.functionCounter++;
                        this.offsetSourceInformationForInstanceAndChildren(thisInstance, newSourceInfo.getStartLine() - thisInstance.getSourceInformation().getStartLine());
                        PackageInstance packageInstance = this.buildPackage(pCtx.qualifiedName().packagePath());
                        ((PackageableElement) thisInstance)._package(packageInstance);
                        packageInstance._childrenAdd((PackageableElement) thisInstance);
                        this.coreInstancesResult.add(thisInstance);
                    } else {
                        this.nativeFunction(pCtx, importId, "", this.coreInstancesResult);
                    }
                } else {
                    this.nativeFunction(pCtx, importId, "", this.coreInstancesResult);
                }
            }
        }
    }
    if (ctx.functionDefinition() != null) {
        for (FunctionDefinitionContext pCtx : ctx.functionDefinition()) {
            if (this.hasImportChanged) {
                result = this.concreteFunctionDefinition(pCtx, importId, true, "", this.coreInstancesResult);
            } else {
                String importGroupID = importId._name();
                String newContent = Lists.mutable.with(pCtx.start.getInputStream().getText(new Interval(pCtx.start.getStartIndex(), pCtx.stop.getStopIndex())).split("\\r?\\n")).makeString("", System.lineSeparator(), System.lineSeparator());
                List<CoreInstance> oldInstances = this.oldInstances.select(i -> (this.oldState != null) && this.oldState.instanceImportGroupInSourceEqualsNewImportGroup(i, importGroupID) && this.oldState.instanceContentInSourceEqualsNewContent(i, newContent), Lists.mutable.empty());
                if (oldInstances.size() == 1) {
                    CoreInstance thisInstance = oldInstances.get(0);
                    this.oldInstances.remove(thisInstance);
                    SourceInformation newSourceInfo = this.sourceInformation.getPureSourceInformation(pCtx.FUNCTION().getSymbol(), pCtx.qualifiedName().identifier().getStart(), pCtx.getStop());
                    if (thisInstance.getSourceInformation().getStartColumn() == newSourceInfo.getStartColumn()) {
                        this.functionCounter++;
                        this.offsetSourceInformationForInstanceAndChildren(thisInstance, newSourceInfo.getStartLine() - thisInstance.getSourceInformation().getStartLine());
                        PackageInstance packageInstance = this.buildPackage(pCtx.qualifiedName().packagePath());
                        ((PackageableElement) thisInstance)._package(packageInstance);
                        packageInstance._childrenAdd((PackageableElement) thisInstance);
                        this.coreInstancesResult.add(thisInstance);
                        result = thisInstance;
                    } else {
                        result = this.concreteFunctionDefinition(pCtx, importId, true, "", this.coreInstancesResult);
                    }
                } else {
                    result = this.concreteFunctionDefinition(pCtx, importId, true, "", this.coreInstancesResult);
                }
            }
        }
    }
    if (ctx.instance() != null) {
        for (InstanceContext pCtx : ctx.instance()) {
            result = this.instanceParser(pCtx, true, importId, this.addLines, "", true, useImportStubsInInstanceParser);
            this.coreInstancesResult.add(result);
        }
    }
    this.newSourceInfoMap.forEachKeyValue(CoreInstance::setSourceInformation);
    return result;
}
Also used : RootRouteNodeInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.treepath.RootRouteNodeInstance) StereotypesContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.StereotypesContext) NotExpressionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.NotExpressionContext) MultiplicityArgumentContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.MultiplicityArgumentContext) InstanceValueInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.valuespecification.InstanceValueInstance) TaggedValueContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.TaggedValueContext) ExpressionInstanceContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ExpressionInstanceContext) EnumDefinitionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.EnumDefinitionContext) InlineDSL(org.finos.legend.pure.m3.serialization.grammar.m3parser.inlinedsl.InlineDSL) LambdaPipeContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.LambdaPipeContext) InstanceAtomicRightSideContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.InstanceAtomicRightSideContext) ContravarianceTypeParameterContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ContravarianceTypeParameterContext) LambdaParamTypeContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.LambdaParamTypeContext) ClassDefinitionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ClassDefinitionContext) Iterate(org.eclipse.collections.impl.utility.Iterate) Enum(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.Enum) PropertyRouteNode(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.treepath.PropertyRouteNode) Import_statementContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.Import_statementContext) GeneralizationInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.relationship.GeneralizationInstance) ListIterable(org.eclipse.collections.api.list.ListIterable) ConcreteFunctionDefinitionInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.function.ConcreteFunctionDefinitionInstance) TypeParameterInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.generics.TypeParameterInstance) PrimitiveCoreInstance(org.finos.legend.pure.m4.coreinstance.primitive.PrimitiveCoreInstance) IdentifierContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.IdentifierContext) PackagePathContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.PackagePathContext) Function(org.eclipse.collections.api.block.function.Function) MutableStack(org.eclipse.collections.api.stack.MutableStack) FunctionTypeSignatureContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.FunctionTypeSignatureContext) ExpressionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ExpressionContext) M3Paths(org.finos.legend.pure.m3.navigation.M3Paths) TreePathContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.TreePathContext) ProfileInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.extension.ProfileInstance) ProfileContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ProfileContext) TypeParameterContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.TypeParameterContext) MutableMap(org.eclipse.collections.api.map.MutableMap) Package(org.finos.legend.pure.m3.coreinstance.Package) LambdaFunctionInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.function.LambdaFunctionInstance) InstanceLiteralContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.InstanceLiteralContext) Sets(org.eclipse.collections.api.factory.Sets) TagInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.extension.TagInstance) LetExpressionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.LetExpressionContext) ConstraintsContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ConstraintsContext) FunctionExpressionParametersContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.FunctionExpressionParametersContext) StereotypeInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.extension.StereotypeInstance) PureParserException(org.finos.legend.pure.m4.serialization.grammar.antlr.PureParserException) InstanceRightSideContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.InstanceRightSideContext) MappingLineContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.MappingLineContext) MappingContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.MappingContext) ListIterate(org.eclipse.collections.impl.utility.ListIterate) ValueSpecification(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.valuespecification.ValueSpecification) StereotypeDefinitionsContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.StereotypeDefinitionsContext) QualifiedNameContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.QualifiedNameContext) AssociationInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.relationship.AssociationInstance) AntlrSourceInformation(org.finos.legend.pure.m4.serialization.grammar.antlr.AntlrSourceInformation) ExistingPropertyRouteNode(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.treepath.ExistingPropertyRouteNode) ExpressionInstanceAtomicRightSideContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ExpressionInstanceAtomicRightSideContext) AssociationProjectionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.AssociationProjectionContext) ConstraintInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.constraint.ConstraintInstance) Stacks(org.eclipse.collections.api.factory.Stacks) Constraint(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.constraint.Constraint) SimpleFunctionExpression(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.valuespecification.SimpleFunctionExpression) EnumValueContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.EnumValueContext) Tag(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.extension.Tag) Interval(org.antlr.v4.runtime.misc.Interval) NativeFunctionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.NativeFunctionContext) Predicate2(org.eclipse.collections.api.block.predicate.Predicate2) Generalization(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.relationship.Generalization) BuildMilestoningVariableExpressionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.BuildMilestoningVariableExpressionContext) MutableList(org.eclipse.collections.api.list.MutableList) MultiplicityInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.multiplicity.MultiplicityInstance) PropertyExpressionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.PropertyExpressionContext) Maps(org.eclipse.collections.api.factory.Maps) MutableSet(org.eclipse.collections.api.set.MutableSet) FunctionType(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.FunctionType) InstanceContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.InstanceContext) DefinitionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.DefinitionContext) ImportStub(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel._import.ImportStub) BooleanPartContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.BooleanPartContext) ExpressionOrExpressionGroupContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ExpressionOrExpressionGroupContext) TaggedValue(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.extension.TaggedValue) QualifiedPropertyContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.QualifiedPropertyContext) TypeContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.TypeContext) ListAdapter(org.eclipse.collections.impl.list.mutable.ListAdapter) SourceState(org.finos.legend.pure.m3.serialization.runtime.SourceState) DefaultValueExpressionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.DefaultValueExpressionContext) PackageableElement(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.PackageableElement) Multiplicity(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.multiplicity.Multiplicity) Unit(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.Unit) QualifiedProperty(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.function.property.QualifiedProperty) TaggedValueInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.extension.TaggedValueInstance) RouteNode(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.treepath.RouteNode) DefaultValueInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.function.property.DefaultValueInstance) ProgramLineContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ProgramLineContext) CombinedArithmeticOnlyContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.CombinedArithmeticOnlyContext) InstanceReferenceContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.InstanceReferenceContext) TaggedValuesContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.TaggedValuesContext) ImportInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel._import.ImportInstance) CodeBlockContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.CodeBlockContext) Any(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.Any) ArithmeticPartContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ArithmeticPartContext) Type(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.Type) InlineDSLTextContent(org.finos.legend.pure.m3.serialization.grammar.m3parser.inlinedsl.InlineDSLTextContent) FunctionVariableExpressionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.FunctionVariableExpressionContext) CombinedExpressionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.CombinedExpressionContext) ExistingPropertyRouteNodeInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.treepath.ExistingPropertyRouteNodeInstance) SimpleFunctionExpressionInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.valuespecification.SimpleFunctionExpressionInstance) ExpressionInstanceRightSideContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ExpressionInstanceRightSideContext) NativeFunctionInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.function.NativeFunctionInstance) InstanceLiteralTokenContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.InstanceLiteralTokenContext) AssociationContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.AssociationContext) EnumStubInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel._import.EnumStubInstance) PropertyStubInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel._import.PropertyStubInstance) DslContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.DslContext) Token(org.antlr.v4.runtime.Token) ImportGroup(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel._import.ImportGroup) VariableContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.VariableContext) TypeParameter(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.generics.TypeParameter) RichIterable(org.eclipse.collections.api.RichIterable) TreePathClassBodyContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.TreePathClassBodyContext) StringEscapeUtils(org.apache.commons.lang3.StringEscapeUtils) EqualNotEqualContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.EqualNotEqualContext) QualifiedPropertyInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.function.property.QualifiedPropertyInstance) ModelRepository(org.finos.legend.pure.m4.ModelRepository) DefaultValue(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.function.property.DefaultValue) TerminalNode(org.antlr.v4.runtime.tree.TerminalNode) SourceAndTargetMappingIdContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.SourceAndTargetMappingIdContext) GenericType(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.generics.GenericType) FunctionDefinitionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.FunctionDefinitionContext) DerivedPropertyContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.DerivedPropertyContext) DefaultValueContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.DefaultValueContext) NewPropertyRouteNodeFunctionDefinition(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.treepath.NewPropertyRouteNodeFunctionDefinition) GenericTypeInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.generics.GenericTypeInstance) Instance(org.finos.legend.pure.m3.navigation.Instance) ImportsContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ImportsContext) Lists(org.eclipse.collections.api.factory.Lists) RootRouteNode(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.treepath.RootRouteNode) MilestoningClassProcessor(org.finos.legend.pure.m3.compiler.postprocessing.processor.milestoning.MilestoningClassProcessor) NewPropertyRouteNodeInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.treepath.NewPropertyRouteNodeInstance) FunctionTypeInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.FunctionTypeInstance) TreePathPropertyParameterTypeContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.TreePathPropertyParameterTypeContext) RuleContext(org.antlr.v4.runtime.RuleContext) FastList(org.eclipse.collections.impl.list.mutable.FastList) InlineDSLLibrary(org.finos.legend.pure.m3.serialization.grammar.m3parser.inlinedsl.InlineDSLLibrary) InstancePropertyAssignmentContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.InstancePropertyAssignmentContext) PackageInstance(org.finos.legend.pure.m3.coreinstance.PackageInstance) TagDefinitionsContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.TagDefinitionsContext) Stereotype(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.extension.Stereotype) ExpressionPartContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ExpressionPartContext) SourceInformation(org.finos.legend.pure.m4.coreinstance.SourceInformation) AllOrFunctionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.AllOrFunctionContext) ClassInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.ClassInstance) CoreInstance(org.finos.legend.pure.m4.coreinstance.CoreInstance) VariableExpressionInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.valuespecification.VariableExpressionInstance) PropertiesContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.PropertiesContext) InstanceValue(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.valuespecification.InstanceValue) ClassProjectionInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.ClassProjectionInstance) PropertyRefContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.PropertyRefContext) PropertyStub(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel._import.PropertyStub) ComplexPropertyContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ComplexPropertyContext) Source(org.finos.legend.pure.m3.serialization.runtime.Source) AtomicExpressionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.AtomicExpressionContext) TypeArgumentsContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.TypeArgumentsContext) TypeParametersWithContravarianceAndMultiplicityParametersContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.TypeParametersWithContravarianceAndMultiplicityParametersContext) MultiplicityArgumentsContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.MultiplicityArgumentsContext) AssociationProjectionInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.relationship.AssociationProjectionInstance) ExpressionInstanceParserPropertyAssignmentContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ExpressionInstanceParserPropertyAssignmentContext) UnitInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.UnitInstance) ProcessorSupport(org.finos.legend.pure.m3.navigation.ProcessorSupport) ImportGroupInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel._import.ImportGroupInstance) Property(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.function.property.Property) Tuples(org.eclipse.collections.impl.tuple.Tuples) Import(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel._import.Import) TypeAndMultiplicityParametersContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.TypeAndMultiplicityParametersContext) MultiplicityValueInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.multiplicity.MultiplicityValueInstance) KeyExpressionInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.functions.lang.KeyExpressionInstance) List(java.util.List) SimplePropertyContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.SimplePropertyContext) org.finos.legend.pure.m3.navigation._package._Package(org.finos.legend.pure.m3.navigation._package._Package) VariableExpression(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.valuespecification.VariableExpression) StereotypeContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.StereotypeContext) ConstraintContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ConstraintContext) Context(org.finos.legend.pure.m3.compiler.Context) SignedExpressionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.SignedExpressionContext) Function0(org.eclipse.collections.api.block.function.Function0) PropertyContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.PropertyContext) RouteNodePropertyStub(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.treepath.RouteNodePropertyStub) PropertyInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.function.property.PropertyInstance) Pair(org.eclipse.collections.api.tuple.Pair) MeasureInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.MeasureInstance) Enumeration(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.Enumeration) EnumerationInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.EnumerationInstance) NewPropertyRouteNode(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.treepath.NewPropertyRouteNode) RouteNodePropertyStubInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.treepath.RouteNodePropertyStubInstance) ImportStubInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel._import.ImportStubInstance) FunctionTypePureTypeContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.FunctionTypePureTypeContext) LambdaFunction(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.function.LambdaFunction) NewPropertyRouteNodeFunctionDefinitionInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.treepath.NewPropertyRouteNodeFunctionDefinitionInstance) M3Properties(org.finos.legend.pure.m3.navigation.M3Properties) PropertyOrFunctionExpressionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.PropertyOrFunctionExpressionContext) Import(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel._import.Import) NativeFunctionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.NativeFunctionContext) Unit(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.Unit) FunctionDefinitionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.FunctionDefinitionContext) Function(org.eclipse.collections.api.block.function.Function) LambdaFunction(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.function.LambdaFunction) ExpressionInstanceContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ExpressionInstanceContext) InstanceContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.InstanceContext) IdentifierContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.IdentifierContext) ImportGroup(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel._import.ImportGroup) PackageableElement(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.PackageableElement) ClassDefinitionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ClassDefinitionContext) EnumDefinitionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.EnumDefinitionContext) AntlrSourceInformation(org.finos.legend.pure.m4.serialization.grammar.antlr.AntlrSourceInformation) SourceInformation(org.finos.legend.pure.m4.coreinstance.SourceInformation) MeasureInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.MeasureInstance) PackageInstance(org.finos.legend.pure.m3.coreinstance.PackageInstance) ProfileContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ProfileContext) PrimitiveCoreInstance(org.finos.legend.pure.m4.coreinstance.primitive.PrimitiveCoreInstance) CoreInstance(org.finos.legend.pure.m4.coreinstance.CoreInstance) AssociationContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.AssociationContext) Interval(org.antlr.v4.runtime.misc.Interval)

Example 2 with IdentifierContext

use of org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.IdentifierContext in project legend-pure by finos.

the class AntlrContextToM3CoreInstance method propertyExpression.

private CoreInstance propertyExpression(PropertyExpressionContext ctx, CoreInstance result, MutableList<ValueSpecification> parameters, MutableList<String> typeParametersNames, LambdaContext lambdaContext, String space, ImportGroup importId) {
    parameters.clear();
    boolean function = false;
    IdentifierContext property = ctx.identifier();
    CoreInstance parameter;
    if (ctx.functionExpressionParameters() != null) {
        function = true;
        FunctionExpressionParametersContext fepCtx = ctx.functionExpressionParameters();
        if (fepCtx.combinedExpression() != null) {
            for (CombinedExpressionContext ceCtx : fepCtx.combinedExpression()) {
                parameter = this.combinedExpression(ceCtx, "param", typeParametersNames, lambdaContext, spacePlusTabs(space, 4), true, importId, addLines);
                parameters.add((ValueSpecification) parameter);
            }
        }
    } else if (ctx.functionExpressionLatestMilestoningDateParameter() != null) {
        function = true;
        ListIterate.collect(ctx.functionExpressionLatestMilestoningDateParameter().LATEST_DATE(), terminalNode -> InstanceValueInstance.createPersistent(repository, sourceInformation.getPureSourceInformation(terminalNode.getSymbol()), null, null)._values(Lists.immutable.with(repository.newLatestDateCoreInstance())), parameters);
    }
    if (!function) {
        SimpleFunctionExpressionInstance sfe = SimpleFunctionExpressionInstance.createPersistent(this.repository, this.sourceInformation.getPureSourceInformation(property.getStart()), null, null, importId, null);
        InstanceValue instanceValue = this.doWrap(property, false);
        // Going to become an auto-map lambda so set a name to be used for the lambda
        instanceValue.setName(lambdaContext.getLambdaFunctionUniqueName());
        instanceValue._multiplicity(this.getPureOne());
        GenericTypeInstance gt = GenericTypeInstance.createPersistent(this.repository);
        Type ti = (Type) this.processorSupport.package_getByUserPath("String");
        gt._rawTypeCoreInstance(ti);
        instanceValue._genericType(gt);
        sfe._propertyName(instanceValue);
        sfe._parametersValues(Lists.mutable.of((ValueSpecification) result));
        result = sfe;
    } else {
        SimpleFunctionExpressionInstance sfe = SimpleFunctionExpressionInstance.createPersistent(this.repository, this.sourceInformation.getPureSourceInformation(property.getStart()), null, null, importId, null);
        InstanceValue instanceValue = this.doWrap(property, false);
        // Going to become an auto-map lambda so set a name to be used for the lambda
        instanceValue.setName(lambdaContext.getLambdaFunctionUniqueName());
        instanceValue._multiplicity(this.getPureOne());
        GenericTypeInstance gt = GenericTypeInstance.createPersistent(this.repository);
        Type ti = (Type) this.processorSupport.package_getByUserPath("String");
        gt._rawTypeCoreInstance(ti);
        instanceValue._genericType(gt);
        sfe._qualifiedPropertyName(instanceValue);
        sfe._parametersValues(Lists.mutable.of((ValueSpecification) result).withAll(parameters));
        result = sfe;
    }
    return result;
}
Also used : RootRouteNodeInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.treepath.RootRouteNodeInstance) StereotypesContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.StereotypesContext) NotExpressionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.NotExpressionContext) MultiplicityArgumentContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.MultiplicityArgumentContext) InstanceValueInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.valuespecification.InstanceValueInstance) TaggedValueContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.TaggedValueContext) ExpressionInstanceContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ExpressionInstanceContext) EnumDefinitionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.EnumDefinitionContext) InlineDSL(org.finos.legend.pure.m3.serialization.grammar.m3parser.inlinedsl.InlineDSL) LambdaPipeContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.LambdaPipeContext) InstanceAtomicRightSideContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.InstanceAtomicRightSideContext) ContravarianceTypeParameterContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ContravarianceTypeParameterContext) LambdaParamTypeContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.LambdaParamTypeContext) ClassDefinitionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ClassDefinitionContext) Iterate(org.eclipse.collections.impl.utility.Iterate) Enum(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.Enum) PropertyRouteNode(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.treepath.PropertyRouteNode) Import_statementContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.Import_statementContext) GeneralizationInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.relationship.GeneralizationInstance) ListIterable(org.eclipse.collections.api.list.ListIterable) ConcreteFunctionDefinitionInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.function.ConcreteFunctionDefinitionInstance) TypeParameterInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.generics.TypeParameterInstance) PrimitiveCoreInstance(org.finos.legend.pure.m4.coreinstance.primitive.PrimitiveCoreInstance) IdentifierContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.IdentifierContext) PackagePathContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.PackagePathContext) Function(org.eclipse.collections.api.block.function.Function) MutableStack(org.eclipse.collections.api.stack.MutableStack) FunctionTypeSignatureContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.FunctionTypeSignatureContext) ExpressionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ExpressionContext) M3Paths(org.finos.legend.pure.m3.navigation.M3Paths) TreePathContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.TreePathContext) ProfileInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.extension.ProfileInstance) ProfileContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ProfileContext) TypeParameterContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.TypeParameterContext) MutableMap(org.eclipse.collections.api.map.MutableMap) Package(org.finos.legend.pure.m3.coreinstance.Package) LambdaFunctionInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.function.LambdaFunctionInstance) InstanceLiteralContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.InstanceLiteralContext) Sets(org.eclipse.collections.api.factory.Sets) TagInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.extension.TagInstance) LetExpressionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.LetExpressionContext) ConstraintsContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ConstraintsContext) FunctionExpressionParametersContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.FunctionExpressionParametersContext) StereotypeInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.extension.StereotypeInstance) PureParserException(org.finos.legend.pure.m4.serialization.grammar.antlr.PureParserException) InstanceRightSideContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.InstanceRightSideContext) MappingLineContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.MappingLineContext) MappingContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.MappingContext) ListIterate(org.eclipse.collections.impl.utility.ListIterate) ValueSpecification(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.valuespecification.ValueSpecification) StereotypeDefinitionsContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.StereotypeDefinitionsContext) QualifiedNameContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.QualifiedNameContext) AssociationInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.relationship.AssociationInstance) AntlrSourceInformation(org.finos.legend.pure.m4.serialization.grammar.antlr.AntlrSourceInformation) ExistingPropertyRouteNode(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.treepath.ExistingPropertyRouteNode) ExpressionInstanceAtomicRightSideContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ExpressionInstanceAtomicRightSideContext) AssociationProjectionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.AssociationProjectionContext) ConstraintInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.constraint.ConstraintInstance) Stacks(org.eclipse.collections.api.factory.Stacks) Constraint(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.constraint.Constraint) SimpleFunctionExpression(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.valuespecification.SimpleFunctionExpression) EnumValueContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.EnumValueContext) Tag(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.extension.Tag) Interval(org.antlr.v4.runtime.misc.Interval) NativeFunctionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.NativeFunctionContext) Predicate2(org.eclipse.collections.api.block.predicate.Predicate2) Generalization(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.relationship.Generalization) BuildMilestoningVariableExpressionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.BuildMilestoningVariableExpressionContext) MutableList(org.eclipse.collections.api.list.MutableList) MultiplicityInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.multiplicity.MultiplicityInstance) PropertyExpressionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.PropertyExpressionContext) Maps(org.eclipse.collections.api.factory.Maps) MutableSet(org.eclipse.collections.api.set.MutableSet) FunctionType(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.FunctionType) InstanceContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.InstanceContext) DefinitionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.DefinitionContext) ImportStub(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel._import.ImportStub) BooleanPartContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.BooleanPartContext) ExpressionOrExpressionGroupContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ExpressionOrExpressionGroupContext) TaggedValue(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.extension.TaggedValue) QualifiedPropertyContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.QualifiedPropertyContext) TypeContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.TypeContext) ListAdapter(org.eclipse.collections.impl.list.mutable.ListAdapter) SourceState(org.finos.legend.pure.m3.serialization.runtime.SourceState) DefaultValueExpressionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.DefaultValueExpressionContext) PackageableElement(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.PackageableElement) Multiplicity(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.multiplicity.Multiplicity) Unit(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.Unit) QualifiedProperty(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.function.property.QualifiedProperty) TaggedValueInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.extension.TaggedValueInstance) RouteNode(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.treepath.RouteNode) DefaultValueInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.function.property.DefaultValueInstance) ProgramLineContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ProgramLineContext) CombinedArithmeticOnlyContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.CombinedArithmeticOnlyContext) InstanceReferenceContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.InstanceReferenceContext) TaggedValuesContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.TaggedValuesContext) ImportInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel._import.ImportInstance) CodeBlockContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.CodeBlockContext) Any(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.Any) ArithmeticPartContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ArithmeticPartContext) Type(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.Type) InlineDSLTextContent(org.finos.legend.pure.m3.serialization.grammar.m3parser.inlinedsl.InlineDSLTextContent) FunctionVariableExpressionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.FunctionVariableExpressionContext) CombinedExpressionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.CombinedExpressionContext) ExistingPropertyRouteNodeInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.treepath.ExistingPropertyRouteNodeInstance) SimpleFunctionExpressionInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.valuespecification.SimpleFunctionExpressionInstance) ExpressionInstanceRightSideContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ExpressionInstanceRightSideContext) NativeFunctionInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.function.NativeFunctionInstance) InstanceLiteralTokenContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.InstanceLiteralTokenContext) AssociationContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.AssociationContext) EnumStubInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel._import.EnumStubInstance) PropertyStubInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel._import.PropertyStubInstance) DslContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.DslContext) Token(org.antlr.v4.runtime.Token) ImportGroup(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel._import.ImportGroup) VariableContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.VariableContext) TypeParameter(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.generics.TypeParameter) RichIterable(org.eclipse.collections.api.RichIterable) TreePathClassBodyContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.TreePathClassBodyContext) StringEscapeUtils(org.apache.commons.lang3.StringEscapeUtils) EqualNotEqualContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.EqualNotEqualContext) QualifiedPropertyInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.function.property.QualifiedPropertyInstance) ModelRepository(org.finos.legend.pure.m4.ModelRepository) DefaultValue(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.function.property.DefaultValue) TerminalNode(org.antlr.v4.runtime.tree.TerminalNode) SourceAndTargetMappingIdContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.SourceAndTargetMappingIdContext) GenericType(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.generics.GenericType) FunctionDefinitionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.FunctionDefinitionContext) DerivedPropertyContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.DerivedPropertyContext) DefaultValueContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.DefaultValueContext) NewPropertyRouteNodeFunctionDefinition(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.treepath.NewPropertyRouteNodeFunctionDefinition) GenericTypeInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.generics.GenericTypeInstance) Instance(org.finos.legend.pure.m3.navigation.Instance) ImportsContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ImportsContext) Lists(org.eclipse.collections.api.factory.Lists) RootRouteNode(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.treepath.RootRouteNode) MilestoningClassProcessor(org.finos.legend.pure.m3.compiler.postprocessing.processor.milestoning.MilestoningClassProcessor) NewPropertyRouteNodeInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.treepath.NewPropertyRouteNodeInstance) FunctionTypeInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.FunctionTypeInstance) TreePathPropertyParameterTypeContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.TreePathPropertyParameterTypeContext) RuleContext(org.antlr.v4.runtime.RuleContext) FastList(org.eclipse.collections.impl.list.mutable.FastList) InlineDSLLibrary(org.finos.legend.pure.m3.serialization.grammar.m3parser.inlinedsl.InlineDSLLibrary) InstancePropertyAssignmentContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.InstancePropertyAssignmentContext) PackageInstance(org.finos.legend.pure.m3.coreinstance.PackageInstance) TagDefinitionsContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.TagDefinitionsContext) Stereotype(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.extension.Stereotype) ExpressionPartContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ExpressionPartContext) SourceInformation(org.finos.legend.pure.m4.coreinstance.SourceInformation) AllOrFunctionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.AllOrFunctionContext) ClassInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.ClassInstance) CoreInstance(org.finos.legend.pure.m4.coreinstance.CoreInstance) VariableExpressionInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.valuespecification.VariableExpressionInstance) PropertiesContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.PropertiesContext) InstanceValue(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.valuespecification.InstanceValue) ClassProjectionInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.ClassProjectionInstance) PropertyRefContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.PropertyRefContext) PropertyStub(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel._import.PropertyStub) ComplexPropertyContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ComplexPropertyContext) Source(org.finos.legend.pure.m3.serialization.runtime.Source) AtomicExpressionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.AtomicExpressionContext) TypeArgumentsContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.TypeArgumentsContext) TypeParametersWithContravarianceAndMultiplicityParametersContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.TypeParametersWithContravarianceAndMultiplicityParametersContext) MultiplicityArgumentsContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.MultiplicityArgumentsContext) AssociationProjectionInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.relationship.AssociationProjectionInstance) ExpressionInstanceParserPropertyAssignmentContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ExpressionInstanceParserPropertyAssignmentContext) UnitInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.UnitInstance) ProcessorSupport(org.finos.legend.pure.m3.navigation.ProcessorSupport) ImportGroupInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel._import.ImportGroupInstance) Property(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.function.property.Property) Tuples(org.eclipse.collections.impl.tuple.Tuples) Import(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel._import.Import) TypeAndMultiplicityParametersContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.TypeAndMultiplicityParametersContext) MultiplicityValueInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.multiplicity.MultiplicityValueInstance) KeyExpressionInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.functions.lang.KeyExpressionInstance) List(java.util.List) SimplePropertyContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.SimplePropertyContext) org.finos.legend.pure.m3.navigation._package._Package(org.finos.legend.pure.m3.navigation._package._Package) VariableExpression(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.valuespecification.VariableExpression) StereotypeContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.StereotypeContext) ConstraintContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ConstraintContext) Context(org.finos.legend.pure.m3.compiler.Context) SignedExpressionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.SignedExpressionContext) Function0(org.eclipse.collections.api.block.function.Function0) PropertyContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.PropertyContext) RouteNodePropertyStub(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.treepath.RouteNodePropertyStub) PropertyInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.function.property.PropertyInstance) Pair(org.eclipse.collections.api.tuple.Pair) MeasureInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.MeasureInstance) Enumeration(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.Enumeration) EnumerationInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.EnumerationInstance) NewPropertyRouteNode(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.treepath.NewPropertyRouteNode) RouteNodePropertyStubInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.treepath.RouteNodePropertyStubInstance) ImportStubInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel._import.ImportStubInstance) FunctionTypePureTypeContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.FunctionTypePureTypeContext) LambdaFunction(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.function.LambdaFunction) NewPropertyRouteNodeFunctionDefinitionInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.treepath.NewPropertyRouteNodeFunctionDefinitionInstance) M3Properties(org.finos.legend.pure.m3.navigation.M3Properties) PropertyOrFunctionExpressionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.PropertyOrFunctionExpressionContext) GenericTypeInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.generics.GenericTypeInstance) FunctionType(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.FunctionType) Type(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.Type) GenericType(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.generics.GenericType) FunctionExpressionParametersContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.FunctionExpressionParametersContext) SimpleFunctionExpressionInstance(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.valuespecification.SimpleFunctionExpressionInstance) PrimitiveCoreInstance(org.finos.legend.pure.m4.coreinstance.primitive.PrimitiveCoreInstance) CoreInstance(org.finos.legend.pure.m4.coreinstance.CoreInstance) ValueSpecification(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.valuespecification.ValueSpecification) InstanceValue(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.valuespecification.InstanceValue) CombinedExpressionContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.CombinedExpressionContext) IdentifierContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.IdentifierContext)

Example 3 with IdentifierContext

use of org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.IdentifierContext in project legend-pure by finos.

the class AntlrContextToM3CoreInstance method atomicExpression.

private CoreInstance atomicExpression(AtomicExpressionContext ctx, MutableList<String> typeParametersNames, LambdaContext lambdaContext, String space, boolean wrapFlag, ImportGroup importId, boolean addLines) {
    CoreInstance result;
    ListIterable<CoreInstance> dsl;
    GenericType genericType;
    VariableExpression expr;
    MutableList<VariableExpression> expressions = Lists.mutable.of();
    if (ctx.instanceLiteralToken() != null) {
        result = this.instanceLiteralToken(ctx.instanceLiteralToken(), wrapFlag);
    } else if (ctx.dsl() != null) {
        dsl = this.dsl(ctx.dsl(), importId);
        if (dsl.size() > 1) {
            throw new RuntimeException("Unexpected");
        }
        result = wrapFlag ? this.doWrap(dsl.getFirst()) : dsl.getFirst();
    } else if (ctx.expressionInstance() != null) {
        result = this.expressionInstanceParser(ctx.expressionInstance(), typeParametersNames, lambdaContext, importId, addLines, spacePlusTabs(space, 4));
    } else if (ctx.unitInstance() != null) {
        result = this.unitInstanceParser(ctx.unitInstance(), importId);
    } else if (ctx.variable() != null) {
        result = this.variable(ctx.variable());
    } else if (ctx.type() != null) {
        genericType = this.type(ctx.type(), typeParametersNames, "", importId, addLines);
        result = InstanceValueInstance.createPersistent(this.repository, genericType, this.getPureOne());
    } else if (ctx.lambdaFunction() != null) {
        boolean hasLambdaParams = false;
        if (ctx.lambdaFunction().lambdaParam() != null) {
            for (int i = 0; i < ctx.lambdaFunction().lambdaParam().size(); i++) {
                hasLambdaParams = true;
                IdentifierContext idCtx = ctx.lambdaFunction().lambdaParam(i).identifier();
                expr = this.lambdaParam(ctx.lambdaFunction().lambdaParam(i).lambdaParamType(), idCtx, typeParametersNames, space, importId);
                expressions.add(expr);
            }
        }
        result = this.lambdaPipe(ctx.lambdaFunction().lambdaPipe(), hasLambdaParams ? ctx.lambdaFunction().lambdaParam(0).getStart() : null, expressions, typeParametersNames, lambdaContext, space, wrapFlag, importId, addLines);
    } else if (ctx.lambdaParam() != null && ctx.lambdaPipe() != null) {
        expr = this.lambdaParam(ctx.lambdaParam().lambdaParamType(), ctx.lambdaParam().identifier(), typeParametersNames, space, importId);
        expressions.add(expr);
        result = this.lambdaPipe(ctx.lambdaPipe(), ctx.lambdaParam().getStart(), expressions, typeParametersNames, lambdaContext, space, wrapFlag, importId, addLines);
    } else if (ctx.instanceReference() != null) {
        result = this.instanceReference(ctx.instanceReference(), typeParametersNames, lambdaContext, importId, space, addLines);
    } else {
        // lambdaPipe
        result = this.lambdaPipe(ctx.lambdaPipe(), null, expressions, typeParametersNames, lambdaContext, space, wrapFlag, importId, addLines);
    }
    return result;
}
Also used : GenericType(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.generics.GenericType) PrimitiveCoreInstance(org.finos.legend.pure.m4.coreinstance.primitive.PrimitiveCoreInstance) CoreInstance(org.finos.legend.pure.m4.coreinstance.CoreInstance) VariableExpression(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.valuespecification.VariableExpression) Constraint(org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.constraint.Constraint) IdentifierContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.IdentifierContext)

Example 4 with IdentifierContext

use of org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.IdentifierContext in project legend-pure by finos.

the class AntlrContextToM3CoreInstance method typeParametersWithContravarianceAndMultiplicityParameters.

private void typeParametersWithContravarianceAndMultiplicityParameters(TypeParametersWithContravarianceAndMultiplicityParametersContext ctx, MutableList<String> typeParameterNames, MutableList<Boolean> contravariants, MutableList<String> multiplicityParameterNames) {
    if (ctx.contravarianceTypeParameters() != null) {
        for (ContravarianceTypeParameterContext tpCtx : ctx.contravarianceTypeParameters().contravarianceTypeParameter()) {
            contravariants.add(tpCtx.MINUS() != null);
            typeParameterNames.add(tpCtx.identifier().getText());
        }
    }
    if (ctx.multiplictyParameters() != null) {
        for (IdentifierContext mpCtx : ctx.multiplictyParameters().identifier()) {
            multiplicityParameterNames.add(mpCtx.getText());
        }
    }
}
Also used : ContravarianceTypeParameterContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ContravarianceTypeParameterContext) IdentifierContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.IdentifierContext)

Example 5 with IdentifierContext

use of org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.IdentifierContext in project legend-pure by finos.

the class AntlrContextToM3CoreInstance method buildPackage.

private PackageInstance buildPackage(MutableList<IdentifierContext> paths) {
    PackageInstance parent = (PackageInstance) this.repository.getTopLevel(M3Paths.Root);
    if (parent == null) {
        throw new RuntimeException("Cannot find Root in model repository");
    }
    if (paths == null || Iterate.isEmpty(paths)) {
        return parent;
    }
    for (IdentifierContext childToken : paths) {
        String childName = childToken.getText();
        synchronized (parent) {
            CoreInstance child = _Package.findInPackage(parent, childName);
            if (child == null) {
                PackageInstance package_ = PackageInstance.createPersistent(this.repository, childName, null);
                package_._name(childName);
                package_._package(parent);
                package_._children(Lists.immutable.empty());
                parent._childrenAdd(package_);
                child = package_;
            } else if (!(child instanceof PackageInstance)) {
                throw new PureParserException(this.sourceInformation.getSourceName(), childToken.getStart().getLine(), childToken.getStart().getCharPositionInLine(), "'" + org.finos.legend.pure.m3.navigation.PackageableElement.PackageableElement.getUserPathForPackageableElement(child) + "' is a " + child.getClassifier().getName() + ", should be a Package", paths.collect(RuleContext::getText).makeString("::"));
            }
            parent = (PackageInstance) child;
        }
    }
    return parent;
}
Also used : PackageInstance(org.finos.legend.pure.m3.coreinstance.PackageInstance) PureParserException(org.finos.legend.pure.m4.serialization.grammar.antlr.PureParserException) PrimitiveCoreInstance(org.finos.legend.pure.m4.coreinstance.primitive.PrimitiveCoreInstance) CoreInstance(org.finos.legend.pure.m4.coreinstance.CoreInstance) IdentifierContext(org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.IdentifierContext)

Aggregations

IdentifierContext (org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.IdentifierContext)8 CoreInstance (org.finos.legend.pure.m4.coreinstance.CoreInstance)6 PrimitiveCoreInstance (org.finos.legend.pure.m4.coreinstance.primitive.PrimitiveCoreInstance)6 GenericType (org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.type.generics.GenericType)5 PackageInstance (org.finos.legend.pure.m3.coreinstance.PackageInstance)4 Token (org.antlr.v4.runtime.Token)3 ListIterable (org.eclipse.collections.api.list.ListIterable)3 Constraint (org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.constraint.Constraint)3 InstanceValue (org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.valuespecification.InstanceValue)3 ValueSpecification (org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.valuespecification.ValueSpecification)3 VariableExpression (org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.valuespecification.VariableExpression)3 ContravarianceTypeParameterContext (org.finos.legend.pure.m3.serialization.grammar.m3parser.antlr.M3Parser.ContravarianceTypeParameterContext)3 PureParserException (org.finos.legend.pure.m4.serialization.grammar.antlr.PureParserException)3 List (java.util.List)2 RuleContext (org.antlr.v4.runtime.RuleContext)2 Interval (org.antlr.v4.runtime.misc.Interval)2 TerminalNode (org.antlr.v4.runtime.tree.TerminalNode)2 StringEscapeUtils (org.apache.commons.lang3.StringEscapeUtils)2 RichIterable (org.eclipse.collections.api.RichIterable)2 Function (org.eclipse.collections.api.block.function.Function)2