descmaker

A tool to parse "Waters/Supremica" files and generate C or Python code from his inside supervisors.

https://github.com/tiagopossato/descmaker

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 4 DOI reference(s) in README
  • Academic publication links
    Links to: sciencedirect.com
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (5.3%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

A tool to parse "Waters/Supremica" files and generate C or Python code from his inside supervisors.

Basic Info
  • Host: GitHub
  • Owner: tiagopossato
  • License: apache-2.0
  • Language: Python
  • Default Branch: main
  • Homepage:
  • Size: 6.2 MB
Statistics
  • Stars: 6
  • Watchers: 2
  • Forks: 0
  • Open Issues: 8
  • Releases: 2
Created almost 3 years ago · Last pushed about 1 year ago
Metadata Files
Readme License Citation

README.md

DEScMaker

This tool can parse a "Waters/Supremica" file (.wmod) and generate code with the same structure of the inside supervisors.

The code generated is independent and don't any requeriment.

File tree

.
├── app
│   ├── descmaker.py
│   ├── descmaker_parser.py
│   ├── descmaker_c_builder.py
│   ├── descmaker_python_builder.py
│   ├── templates_c
│   │   ├── base_code
│   │   └── template
│   ├── templates_esp-idf
│   │   ├── base_code
│   │   └── template
│   ├── templates_python
│   │   ├── base_code
│   │   └── template
│   └── utils.py
├── descmaker.py
└── requirements.txt

Generated Python code file tree

.
├── __init__.py
├── log.csv
├── main.py
├── README.md
└── Supervisor
    ├── Base
    │   ├── Event.py
    │   ├── __init__.py
    │   ├── __pycache__
    │   ├── README.md
    │   ├── State.py
    │   ├── Supervisor.py
    │   └── Transition.py
    ├── event_handler.py
    ├── events.py
    ├── __init__.py
    ├── logger.py
    ├── __pycache__
    ├── README.md
    └── supervisors
        ├── __init__.py
        ├── __pycache__
        ├── README.md
        └── [sups].py

Generated C code file tree

.
├── CMakeLists.txt
├── lib
│   ├── CMakeLists.txt
│   └── supervisor
│       ├── CMakeLists.txt
│       ├── README.md
│       ├── structure.png
│       ├── sup_debug.h
│       ├── supervisor.c
│       └── supervisor.h
├── README.md
├── run.sh
└── src
    ├── event_handler
    │   ├── event_handler.c
    │   ├── event_handler.h
    │   ├── events.c
    │   └── events.h
    ├── main.c
    └── supervisors
        ├── [sups].c
        ├── [sups].h
        ├── supervisor_list.c
        └── supervisor_list.h

Generated code for ESP32 using ESP-IDF file tree

.
├── components
│   ├── supervisor
│   │   ├── CMakeLists.txt
│   │   ├── sup_debug.h
│   │   ├── supervisor.c
│   │   └── supervisor.h
│   ├── event_handler
│   │   ├── CMakeLists.txt
│   │   ├── event_handler.c
│   │   ├── event_handler.h
│   │   ├── events.c
│   │   └── events.h
│   └── supervisors
│       ├── CMakeLists.txt
│       ├── supervisor_list.c
│       ├── supervisor_list.h
│       ├── [sups].c
│       └── [sups].h
├── main
│   ├── CMakeLists.txt
│   └── main.c
└── CMakeLists.txt

How to use

Pre-requisites

Install python3.

Supremica

  • For convenience, when synthesizing a supervisor, mark the 'Rename states' option.
  • Before send supervisor 'To editor', 'Rename automaton' to remove caracteres and spaces. Keep only letters and numbers.
  • Do not name a supervisor as 'supervisor'

Generate code

run python3 descmaker.py -i <input> -o <output> -l <language> -e with terminal to execute the software: - -i <input> : input file (required) - -o <output> : output directory. Default: generated_code - -l <language> : output language. Can be c, python or esp-idf. Default: c - -e : If present, compile with cmake/gcc and execute the generated code. Default: no execution

In the first run, the script will create the virtual environment and install the dependencies. This can take a while. After that, the script will generate the code.

The script will generate a structure with the same name of the output directory. The folder will contain the generated code, arranged in the same structure of the app/templates_[language]/base_code. Inside generated code also will be a README.md with the instructions to run the code. Now, this can be readed in app/templates_[language]/base_code/README.md.

Visual description

Visual description

How to cite this work

bibtex @article{Possato2026, title = {DEScMaker: A tool for automated code generation for discrete event systems controllers}, journal = {Science of Computer Programming}, volume = {247}, pages = {103350}, year = {2026}, issn = {0167-6423}, doi = {https://doi.org/10.1016/j.scico.2025.103350}, url = {https://www.sciencedirect.com/science/article/pii/S0167642325000899}, author = {Tiago Possato and João H. Valentini and Luiz F.P. Southier and Marco A.C. Barbosa and Marcelo Teixeira}, keywords = {Formal modeling, Automated code generation, Implementation}, }

apa Possato, T., Valentini, J. H., Southier, L. F. P., Barbosa, M. A. C., & Teixeira, M. (2026). DEScMaker: A tool for automated code generation for discrete event systems controllers. Science of Computer Programming, 247, 103350. https://doi.org/10.1016/j.scico.2025.103350

abnt POSSATO, T. et al. DEScMaker: A tool for automated code generation for discrete event systems controllers. Science of Computer Programming, v. 247, p. 103350, jan. 2026. Disponível em: <https://www.sciencedirect.com/science/article/pii/S0167642325000899>. Acesso em: dia mes. ano.

Version 2.2.0: esp-idf output adjusted

Owner

  • Name: Tiago Possato
  • Login: tiagopossato
  • Kind: user

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: DEScMaker
message: >-
  If you use this software, please cite it using the metadata from this file.
type: software
authors:
  - given-names: Tiago
    family-names: Possato
    email: dev.tiago.possato@gmail.com
    affiliation: 'UTFPR, IFC'
    orcid: 'https://orcid.org/0000-0002-9285-4331'
  - given-names: João H.
    family-names: Valentini
    email: joaovalentini@alunos.utfpr.edu.br
    affiliation: UTFPR
  - given-names: Luiz F. P.
    family-names: Southier
    email: luizsouthier@gmail.com
    affiliation: UTFPR
  - given-names: Marco A. C.
    family-names: Barbosa
    affiliation: UTFPR
  - given-names: Marcelo
    family-names: Teixeira
    email: mtex@utfpr.edu.br
    affiliation: UTFPR
repository-code: 'https://github.com/tiagopossato/descmaker'
abstract: >-
  A software to parse "Waters/Supremica" files and generate
  C code from his inside supervisors.
keywords:
  - Formal modeling
  - Model conversion
  - Code generation
license: GPL-3.0+
date-released: '2025-01-14'

GitHub Events

Total
  • Create event: 3
  • Issues event: 2
  • Release event: 3
  • Watch event: 5
  • Push event: 15
Last Year
  • Create event: 3
  • Issues event: 2
  • Release event: 3
  • Watch event: 5
  • Push event: 15

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 0
  • Total pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Total issue authors: 0
  • Total pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • tiagopossato (3)
Pull Request Authors
  • tiagopossato (2)
Top Labels
Issue Labels
enhancement (1)
Pull Request Labels