-
Notifications
You must be signed in to change notification settings - Fork 0
Parsing sequenced statement sets
The parsed Scrall will give us a block or statement that may be preceded by any number of input_tokens.
When one or more of these tokens are present we will need to populate the corresponding Sequence Flows.
To do this, we will need to determine the source and destination actions of each Sequence Flow.
The source will found in a statement_set that is followed by an output_token with the same name as the input_token and the destination will be in each sequenced_statement_set that is preceded by that name.
Let’s start with the input and say that we have some input token named 1 indicating that a statement_set has completed execution. (Creative names aren’t usually necessary when it comes to sequencing within an Activity).
In terms of the metamodel, what this really means is that each terminal action of each statement in the statement_set is the source of a Sequence Flow. If there is more than one Sequence Flow we flow them all through a Gate which outputs a single Sequence Flow to indicate that all of the Gate inputs have been enabled.
Here is a Scrall scalar_assignment statement that invokes a method on the local instance followed by an output_token:

This statement will be populated as two Actions with their specified Flows and specification inputs. The terminal action will output a Sequence Flow labeled by the name in the output_token.

A terminal Action is any Action populated from a statement that does not output any Data Flow.
Now consider a block of statements that must complete before another block may proceed.

Two methods must be invoked on the local instance (in no particular order) before another two local methods, also not ordered, are allowed to execute.

Each terminal Action in the first block emits an unlabled Sequence Flow. These each feed into a Gate whose sole purpose is to emit the labeled Sequence Flow when each of the input Sequence Flows has been enabled.
Copyright 2020, 2021, 2022, 2023, 2025 © Leon Starr under MIT Open Source License
- Why they are problematic
- Instance attribute creation values
- Boolean values
- Special values
- Enumerated values
- Action block
- Statement
- Single line action
- Multiple dependent actions on a single line
- An action spread across multiple lines
- A conditional group of single line actions
- Comments
- Finding instances
- Attribute access
- Creation and deletion
- Subclass migration
- Creating a table from a class
- Creating a table with a definition
- Converting a table into a class
- Set operations on tables
- Set comparisons on tables
- Join
- Rename
- Extend
- Aggregation
- Rank
- Image
- Input values
- Signatures and name doubling
- Output values
- Execution order
- Sequential execution
- Conditional execution
- Signals
- Scrall has no for_each action
- Iteration