MCPcopy Index your code
hub / github.com/ModelDriven/Alf-Reference-Implementation

github.com/ModelDriven/Alf-Reference-Implementation @v1.1.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.1.0 ↗ · + Follow
9,196 symbols 30,344 edges 865 files 1,536 documented · 17%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Action Language for UML (Alf)

Open Source Reference Implementation Copyright © 2011-2017 Data Access Technologies, Inc. (Model Driven Solutions)

Alf is an action language for UML developed in response to the OMG Concrete Syntax for a UML Action Language Request for Proposals. The Alf specification document can be found at http://www.omg.org/spec/ALF. (See also http://solitaire.omg.org/issues/task-force/ALF11 for the list of issues addressed by the Alf 1.1 Revision Task Force.)

This implementation is based on the Alf 1.1 specification. It compiles Alf source text to the executable Foundational UML (fUML) subset of UML. The compilation can target either of two fUML execution engine implementations:

  • The fUML Reference Implementation execution engine (see http://fuml.modeldriven.org), v1.3.0 (this version conforms to fUML 1.3).
  • The fUML execution engine from the Moka framework for model execution in the Eclipse Papyrus tool (see http://wiki.eclipse.org/Papyrus/UserGuide/ModelExecution), v3.1.0 or later.

The implementation handles the full Alf syntax at the Extended compliance level, as given in Annex C Consolidated LL Grammar of the Alf Specification.

Static semantic checking is directly based on validating the constraints defined in the abstract syntax of the Alf Specification. However, as errors were discovered in these definitions, or inconsistencies with corresponding feature descriptions were identified, these were corrected in the implementation. All such issues have either been corrected in the latest version of the specification or have been reported to the Alf Revision Task Force for correction in a future version.

The latest version of the implementation is available at http://alf.modeldriven.org.

Licensing

Data Access Technology, Inc. is copyright owner of the source code for this implementation. For licensing terms, see the file LICENSING.txt.

Installation

The latest packaged distribution of the implementation is available in the dist directory.

Within this directory, the file alf.zip unzips into the installation directory for Alf. The installation directory includes Unix (BASH) shell scripts and DOS batch files for running Alf. By default, the Libraries subdirectory is expected to be in the same directory as the scripts. If you move it, set the environment variable ALF_LIB to its path.

Projects

The implementation source is organized into four Eclipse projects. Eclipse 4.6 or later is required.

  • org.modeldriven.alf - This is the base project, including the Alf parser, static semantic checking and generic mapping to fUML. The generic mapping is not dependent on any specific UML metamodel or fUML implementation, but it must be extended with a specific UML metamodel implementation in order to generate actual UML model output.

  • org.modeldriven.alf.fuml.impl - This project extends the base project to specialize the mapping to target the fUML Reference Implementation and to allow compiled Alf text to be executed. It does not depend on the fUML Reference Implementation project directly but, rather, uses an exported fuml.jar file.

  • org.modeldriven.alf.eclipse - This project extends the base project to specialize the mapping to target the Eclipse UML2 metamodel implementation (v5.2.0 or later). It depends on Eclipse plugins and must be built in an Eclipse environment.

  • org.modeldriven.alf.eclipse.moka - This project extends the org.modeldriven.alf.eclipse project to allow compiled Alf text to be executed using the fUML execution engine from the [Moka framework] (http://wiki.eclipse.org/Papyrus/UserGuide/ModelExecution) for model execution in the Eclipse Papyrus modeling tool (v3.1.0 or later). It depends on Eclipse plugins and must be built in an Eclipse environment. (Note: This project was called org.modeldriven.alf.eclipse.papyrus in previous versions of the reference implementation.)

Further Information

For further information on using the implementation, see the wiki.

Extension points exported contracts — how you extend this code

AssignableElement (Interface)
(no doc) [23 implementers]
org.modeldriven.alf/src/org/modeldriven/alf/syntax/expressions/AssignableElement.java
Signal (Interface)
(no doc) [6 implementers]
org.modeldriven.alf/src/org/modeldriven/alf/uml/Signal.java
SignalEvent (Interface)
(no doc) [10 implementers]
org.modeldriven.alf/src/org/modeldriven/alf/uml/SignalEvent.java
ClearStructuralFeatureAction (Interface)
(no doc) [22 implementers]
org.modeldriven.alf/src/org/modeldriven/alf/uml/ClearStructuralFeatureAction.java
CallBehaviorAction (Interface)
(no doc) [7 implementers]
org.modeldriven.alf/src/org/modeldriven/alf/uml/CallBehaviorAction.java

Core symbols most depended-on inside this repo

add
called by 683
org.modeldriven.alf/src/org/modeldriven/alf/fuml/mapping/ActivityGraph.java
getImpl
called by 508
org.modeldriven.alf/src/org/modeldriven/alf/syntax/common/ElementReference.java
println
called by 497
org.modeldriven.alf/src/org/modeldriven/alf/fuml/library/Debug.java
getImpl
called by 480
org.modeldriven.alf/src/org/modeldriven/alf/syntax/units/Member.java
getName
called by 441
org.modeldriven.alf/src/org/modeldriven/alf/uml/NamedElement.java
equals
called by 280
org.modeldriven.alf/src/org/modeldriven/alf/uml/Element.java
getImpl
called by 241
org.modeldriven.alf/src/org/modeldriven/alf/syntax/expressions/Expression.java
toString
called by 221
org.modeldriven.alf/src/org/modeldriven/alf/uml/Element.java

Shape

Method 8,324
Class 736
Interface 136

Languages

Java100%

Modules by API surface

org.modeldriven.alf/src/org/modeldriven/alf/syntax/common/impl/ElementReferenceImpl.java118 symbols
org.modeldriven.alf/src/org/modeldriven/alf/syntax/common/impl/ExternalElementReferenceImpl.java90 symbols
org.modeldriven.alf/src/org/modeldriven/alf/syntax/common/impl/BoundElementReferenceImpl.java89 symbols
org.modeldriven.alf/src/org/modeldriven/alf/syntax/common/impl/InternalElementReferenceImpl.java85 symbols
org.modeldriven.alf/src/org/modeldriven/alf/syntax/expressions/impl/AssignmentExpressionImpl.java81 symbols
org.modeldriven.alf/src/org/modeldriven/alf/parser/ParserTokenManager.java81 symbols
org.modeldriven.alf/src/org/modeldriven/alf/syntax/expressions/impl/InvocationExpressionImpl.java79 symbols
org.modeldriven.alf/src/org/modeldriven/alf/syntax/units/RootNamespace.java77 symbols
org.modeldriven.alf/src/org/modeldriven/alf/syntax/expressions/impl/QualifiedNameImpl.java75 symbols
org.modeldriven.alf/src/org/modeldriven/alf/fuml/mapping/ActivityGraph.java74 symbols
org.modeldriven.alf/src/org/modeldriven/alf/syntax/units/impl/MemberImpl.java64 symbols
org.modeldriven.alf/src/org/modeldriven/alf/parser/Parser.java64 symbols

For agents

$ claude mcp add Alf-Reference-Implementation \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact