Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fcanas/ogol
https://github.com/fcanas/ogol
Last synced: 11 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/fcanas/ogol
- Owner: fcanas
- Created: 2020-04-14T01:55:28.000Z (over 4 years ago)
- Default Branch: canon
- Last Pushed: 2021-06-08T03:01:26.000Z (over 3 years ago)
- Last Synced: 2024-08-01T20:38:12.970Z (3 months ago)
- Language: Swift
- Size: 271 KB
- Stars: 7
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ogol
Ogol is a derivative of the [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)) programming language that is taking off in a different direction.
The Ogol language has [dynamic scoping](https://en.wikipedia.org/wiki/Scope_(computer_science)#Dynamic_scope), [tail call optimization](https://en.wikipedia.org/wiki/Tail_call). The inluded core libraries include [turtle graphics](https://en.wikipedia.org/wiki/Turtle_graphics) with SVG output.
This project is organized into subcomponents:
- Execution
- Describes a weird combination AST, runtime, and high-level virtual machine
- OgoLang
- Contains a Parser converting Ogol to structures described in the Execution module.
- libOgol
- Core language procedures that require interacting with the runtime such as `output`, `stop`, and `make` in the `Meta` module. libOgol also includes a `CoreLib` module with core utilities implemented in Ogol, such as `list` and `repeat`. Also included are [Turtle Graphics]((https://en.wikipedia.org/wiki/Turtle_graphics)) with SVG output,
- OgolMath
- Core math functions
- ogol
- A basic CLI Ogol REPL with no Turtle Graphics
- Tooling Support
- An abstract definition of a parser and associated syntax coloring and error types supporting an editor. Previously, this supported a separate Logo implementation. Currently it remains independent to facilitate rapid creation and iteration of experimental tools, which is one of the main reasons I've made this toy language to begin with.[Development Log](Log.md)