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.
To learn more about the Frame language, please find Frame's official documentation on Read the Docs.
For details, see the Release Notes.
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.
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.
Loops -
Frame now supports two types of loops:
- For-like loops
- Infinite loops
See Frame Loops.
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 on the r/statemachines subreddit.
There is also a Discord channel to connect with other Frame enthusiasts.
The Frame Solution Depot is a Github repo and contains a growing body of examples and test specifications.
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!
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.
- Install Rust.
- Navigate to the framepiler/framec directory.
- Type
cargo build
. 3.a You will see a bunch of warnings. Apologies but this is pre-alpha code. - Type
./target/debug/framec ../examples/HelloWorld.frm python_3
. 4.a You should see a base class for a Frame controller generated to stdout. - 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
- You now have working debug and release Framepilers. Congratulations!
- You can try 6 other languages + Plant UML. Replace the
python_3
above with any of these: 7.apython_3
7.bplantuml
(try output at PlantUml site)
- Install Rust.
- 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!
- Install Rust.
- Help needed. Please send me instructions on Gitter Bug Channel and I will add to next release notes. Thanks!
- Rust - Rust language
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.
We use SemVer for versioning. For the versions available, see the tags on this repository.
- Mark Truluck - Creator of Frame - LinkedIn
This project is licensed under the MIT License - see the LICENSE.md file for details
- Alan Turning - For inventing automata theory and helping end WWII. See The Imitation Game
- Dr. David Harel - Who invented Statecharts from which came Frame.