frame_transpiler
frame_transpiler copied to clipboard
Frame is a markdown language for creating state machines (automata) in Python as well as generating UML documentation.
Frame Language Transpiler
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 (with more languages to come) as well as UML Statechart diagrams.
Explore Frame
To learn more about the Frame language, please find Frame's official documentation on Read the Docs.
Tools and 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 also learn more about programming with automata at Reddit on the r/statemachines subreddit (I'm the mod).
Frame Community
Connect with me and other Frame enthusists on the Frame Discord channel - The Art of the State. You can also connect with me directly on LinkedIn.
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 send issues to [email protected] while we get a better system in place. If you have a recommendation for a free bug tracker for open source communities please let me know!
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
- 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 --release5.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_3above with any of these: 7.apython_37.bplantuml(try output at PlantUml site)
Linux
- 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 Discord and I will add to next release notes. Thanks!
Windows
- Install Rust.
- Help needed. Please send me instructions on Discord 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
- Alan Turing - For inventing automata theory and helping end WWII. See The Imitation Game
- Dr. David Harel - Who invented Statecharts from which came Frame.