Module

Perspectives.Parsing.Arc.PhaseThree

#withDomeinFile

#qualifyActionRoles

qualifyActionRoles :: PhaseThree Unit

Qualifies the identifiers used in the object- and indirectObject field of an Action. All Objects are by default constructed as enumerated; this function corrects that if applicable. Note that this function requires the DomeinFile to be available in the cache!

#qualifyBindings

qualifyBindings :: PhaseThree Unit

Qualifies the identifiers used in the filledBy part of an EnumeratedRole declaration. A binding is represented as an ADT. We transform all elements of the form ST segmentedName in the tree to ST qualifiedName, using the Reducible a (ADT b) instance. We qualify a name only by searching the roles of the domain. Role names that have the segmentedName as a suffix are candidates to qualify it. Only one such Role may exist in the domain! Note that this function requires the DomeinFile to be available in the cache! This function just uses the DomeinFileRecord that is passed in as an argument.

#qualifyRoleType

qualifyRoleType :: ArcPosition -> String -> Object EnumeratedRole -> PhaseThree EnumeratedRoleType

If the name is unqualified, look for an EnumeratedRol with matching local name in the Domain.

#qualifyPropertyReferences

qualifyPropertyReferences :: PhaseThree Unit

Qualify the references to Properties in each View.

#qualifyViewReferences

qualifyViewReferences :: PhaseThree Unit

The views on the subject, object and indirectObject of an Action can be specified with a local name. It should be possible to qualify such a name by comparing it with the views that are available on the roles bound to the subject, object and indirectObject, respectively.

#inverseBindings

inverseBindings :: PhaseThree Unit

For each Role with a binding, record that Role as an inverse binding for the value of the binding.

#qualifyReturnsClause

qualifyReturnsClause :: PhaseThree Unit

A Computed Role has a clause that specifies the type of Role that is computed. The modeller can use an unqualified name, that should be resolved against all Roles in the Domain.

#compileExpressions

compileExpressions :: PhaseThree Unit

The calculation of a CalculatedRole or CalculatedProperty, and the condition of an Action are all expressions. This function compiles the parser AST output that represents these expressions to QueryFunctionDescriptions. All names are qualified in the process.

#compileRules

compileRules :: PhaseThree Unit

For each Action that has a SideEffect for its effect member, compile the List of Assignments, or the Let* expression in it to a QueryFunctionDescription. All names are qualified in the process.

Modules