Skip to content

Frame is a markdown language for creating state machines (automata) in 8 programming languages as well as generating UML documentation.

License

Notifications You must be signed in to change notification settings

andrei-scripniciuc/frame_transpiler

 
 

Repository files navigation

Frame Language Transpiler v0.11.0

This project contains the code for building the Frame Language Transpiler - the Framepiler. The Framepiler is written in Rust and transpiles Frame specification documents into Python (more languages to come) as well as UML diagrams.

Frame Language Documentation

To learn more about the Frame language, please find Frame's official documentation on Read the Docs.

New in Recent Releases

For details, see the Release Notes.

Frame v0.11.0

Frame v0.11.0 brings a lot of exciting additions to the Frame language, adding both power and standardization to the notation. In addition, the transpiler now can read from stdin as well as still accepting file paths as in the past. This enables improved CI/CD processes involving Frame.

New Language Features and Updates

Functions -

With the introduction of functions to the Frame syntax, developers can now easily build simple Frame programs. Currently the syntax only permits a single main() function. The v0.12 will permit general use of an unlimited number of functions.

See Frame Functions for more information.

System Controller Instantiation -

With the introduction of Frame functions, developers can now create real Frame programs and instantiate and control Frame systems. This capability allows for full control over system initialization of state parameters, start state parameters and domain variables.

See Frame Systems.

Operations -

Frame operations are publicly accessible methods that bypass the state machine and allow privileged access to the system domain data. In addition, operations can optionally be designated as static, enabling systems to provide libraries of associated functionality for complex or repetitive system management routines.

See Frame Operations

Enums -

Frame now supports system enumerated types.

See Frame Enumerated Types.

Loops -

Frame now supports two types of loops:

  1. For-like loops
  2. Infinite loops

See Frame Loops.

Resources

The Frame project is still early days but there are some resources and communities to help. You can download the VSCode extension to develop Frame programs on your desktop or experiment with Frame online at the Frame Playground. You can learn more about the Frame language using the online documentation as well as find general resources about programming with automata at Reddit re on the r/statemachines subreddit.

There is also a Discord channel to connect with other Frame enthusiasts.

Frame Examples

The Frame Solution Depot is a Github repo and contains a growing body of examples and test specifications.

Reporting Bugs and Problems

For now please report issues to the Gitter Bug Channel while we get a better system in place. If you have a recommendation please let me know there!

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.

Installing

MacOS

  1. Install Rust.
  2. Navigate to the framepiler/framec directory.
  3. Type cargo build. 3.a You will see a bunch of warnings. Apologies but this is pre-alpha code.
  4. Type ./target/debug/framec ../examples/HelloWorld.frm python_3. 4.a You should see a base class for a Frame controller generated to stdout.
  5. If you want to generate a release build: 5.a Type cargo build --release 5.b Type ./target/release/framec ../examples/HelloWorld.frm python_3
  6. You now have working debug and release Framepilers. Congratulations!
  7. You can try 6 other languages + Plant UML. Replace the python_3 above with any of these: 7.a python_3 7.b plantuml (try output at PlantUml site)

Linux

  1. Install Rust.
  2. Probably the same as MacOS but guessing you can figure it out if you know Linux and Rust. Still - please send me instructions on Gitter Bug Channel and I will add to next release notes. Thanks!

Windows

  1. Install Rust.
  2. Help needed. Please send me instructions on Gitter Bug Channel and I will add to next release notes. Thanks!

Built With

  • Rust - Rust language

Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

Author

  • Mark Truluck - Creator of Frame - LinkedIn

License

This project is licensed under the MIT License - see the LICENSE.md file for details

Acknowledgments

About

Frame is a markdown language for creating state machines (automata) in 8 programming languages as well as generating UML documentation.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 76.4%
  • Python 6.8%
  • JavaScript 6.0%
  • Go 5.4%
  • Visual Basic 6.0 3.7%
  • Java 1.3%
  • VBA 0.4%