Skip to content

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

License

Notifications You must be signed in to change notification settings

frame-lang/frame_transpiler

Repository files navigation

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 re 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 bugs@frame-lang.org 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

  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 Discord and I will add to next release notes. Thanks!

Windows

  1. Install Rust.
  2. 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