|
@@ -9,7 +9,7 @@ All models have the extension \*.mvc, indicating that they are models and should
|
|
|
There is no constraint that this extension is mandatory.
|
|
|
|
|
|
First, we show an example on how to create a simple PetriNet model.
|
|
|
-To take into account action language in the example model, we will also show an example for Finite State Automata.
|
|
|
+To take into account action language in the example model, we will also show an example for Finite State Automata afterwards.
|
|
|
|
|
|
Example: Petri Nets
|
|
|
-------------------
|
|
@@ -43,7 +43,7 @@ The name immediately after the type (e.g., *p1*), is the identifier used through
|
|
|
All identification of the element at the model-level should happen based on defined attributes.
|
|
|
The identifiers can also be overwritten internally, in which case the latest definition is used.
|
|
|
Do note that there is no concept of scope here, so identifiers stay visible throughout the whole file.
|
|
|
-It is possible to have anonymous identifiers, but only if the identifier is actually never used.
|
|
|
+It is possible to have anonymous identifiers, but only if the identifier is not used in the remainder of the file (e.g., not the source of an association).
|
|
|
For example, the two arcs could just as well have been defined as follows ::
|
|
|
|
|
|
P2T (p1, t1) {
|
|
@@ -58,7 +58,7 @@ Example: Finite State Automata
|
|
|
------------------------------
|
|
|
|
|
|
Next we use a simple Finite State Automata example model.
|
|
|
-This will introduce two new concepts: hierarchy, long strings, and code attributes.
|
|
|
+This will introduce some new concepts: hierarchy, long strings, and code attributes.
|
|
|
|
|
|
Hierarchy
|
|
|
^^^^^^^^^
|
|
@@ -183,6 +183,9 @@ It is possible to define include statements at the top of the model, in which ca
|
|
|
$
|
|
|
}
|
|
|
|
|
|
+As mentioned before, the Action Language does not allow for subfunctions, but it is possible for there to be multiple functions between the dollar tags.
|
|
|
+In that case, the function with name *main* is executed first, or, if no such function exists, the topmost function is chosen.
|
|
|
+
|
|
|
Using the Model Representation
|
|
|
------------------------------
|
|
|
|
|
@@ -196,5 +199,3 @@ Another function that can be used, is the *model_overwrite* function, which over
|
|
|
|
|
|
>>> model_overwrite("models/my_pn", "formalisms/PetriNets", open("my_pn.mvc", "r").read())
|
|
|
|
|
|
-Note that *model_overwrite* can also be used without the textual model parameter, in which case it will clear the specified model.
|
|
|
-That is, overwrite the model with an empty model.
|