Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
M MTSA
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 41
    • Issues 41
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Metrics
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Package Registry
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • lafhis
  • MTSA
  • Wiki
    • Enduser
  • helloworld

helloworld · Changes

Page history
Create enduser/helloworld authored Jun 13, 2025 by Pablo Laciana's avatar Pablo Laciana
Hide whitespace changes
Inline Side-by-side
Showing with 55 additions and 0 deletions
+55 -0
  • enduser/helloworld.md enduser/helloworld.md +55 -0
  • No files found.
enduser/helloworld.md 0 → 100644
View page @ edde8c6d
# Hello World
[TOC]
Here we walk through the basics involved in writing a simple behaviour model.
We use FSP (Finite State Process) language for definitions.
Here are two sequential processes and one parallel composition:
```
TEST_CELLS = (sCountCells -> PROCESSING),
PROCESSING = (eCountCells -> TEST_CELLS).
DOCTOR_CELLS = (analyseBlood -> INSPECTING | sCountCells -> DOCTOR_CELLS),
INSPECTING = (bloodResult -> BLOOD | sCountCells -> DOCTOR_CELLS),
BLOOD = (sCountCells -> DOCTOR_CELLS).
|| CELLS = (DOCTOR_CELLS || TEST_CELLS).
```
## Parse, Compile and Compose
Copy the above example in MTSA _Edit_ tab.
### Parse
To parse and verify that the text has no syntax errors, click on the parse icon. ![Parse icon](https://bitbucket.org/lnahabedian/mtsa/wiki/img/parse.gif)
If something goes wrong the pointer will position automatically in the line and column where the error was found. And the error message will be displayed in the _Output_ tab.
You may try to force an error to verify this behavior, for instance with the following text:
```
TEST_CELLS = sCountCells -> PROCESSING.
```
You will get the following error message
**ERROR line:1 - (, if or process identifier expected**
### Compile
You can compile the FSP into LTS. For example, `TEST_CELLS` and `DOCTOR_CELLS`. Click on the ![C icon](https://bitbucket.org/lnahabedian/mtsa/wiki/img/compile.gif)
### Compose
Parallel composition computed with the `![Compose icon](https://bitbucket.org/lnahabedian/mtsa/wiki/img/compose.gif) button. You must also choose the machine to compose. If you only have one parallel composition in your editor, MTSA will automatically select it. Otherwise, you can switch between the machines by clicking in the drop down menu.
### Result
Here is the graphic representation of the above LTS. You will see the same ones in _Draw_ tab.
![TEST_CELLS](https://bitbucket.org/lnahabedian/mtsa/wiki/img/testcells.png)
![DOCTOR_CELLS](https://bitbucket.org/lnahabedian/mtsa/wiki/img/doctorcells.png)
![CELLS](https://bitbucket.org/lnahabedian/mtsa/wiki/img/cells.png)
### Parsing details
Note that the definition of one process ends when you use a dot. Use comma introduce local definitions within a process definition. In the above example, `INSPECTING` and `BLOOD` are local definitions to `DOCTOR_CELLS`.
\ No newline at end of file
Clone repository
  • Developer
  • End User
  • devs
    • outputmessages
  • enduser
    • DCS
    • fltl
    • fsp_keywords
    • helloworld
    • reactiveSynthesis
    • supervisoryControl
  • Home