Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ahmadchen/go-go-gadget
The 'Gadget' interpreter language, implemented in Go.
https://github.com/ahmadchen/go-go-gadget
2020 gadget go golang google language programming
Last synced: about 5 hours ago
JSON representation
The 'Gadget' interpreter language, implemented in Go.
- Host: GitHub
- URL: https://github.com/ahmadchen/go-go-gadget
- Owner: ahmadchen
- Created: 2020-04-07T08:16:54.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2020-04-07T08:35:42.000Z (over 4 years ago)
- Last Synced: 2024-06-21T15:41:11.716Z (5 months ago)
- Topics: 2020, gadget, go, golang, google, language, programming
- Language: Go
- Homepage:
- Size: 191 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Go Go Gadget!
![alt text][go-go-logo]
The 'Gadget' interpreter language, implemented in Go, using the [Writing An Interpreter In Go][go-interpreter-book] book. This language is based off the Monkey interpreter language described in the book, and will be implemented as I progress through the book.
## Why Go?:
- Because I'm taking a course in distributed systems next term (CPSC 416) and I know zilch about Go.
- But really, it's because you Gotta Go Fast! (haha, sorry...).## Disclaimer:
- The book isn't an introduction to Go. To supplement this, I make use of [The Go Programming language][go-reference-book] and various online resources. I might push some relevant notes to my personal site under [notes][ps-notes].## Plans to support some cool features (TBA):
- All of the Monkey language features (as I progress through the book).
- Support for some hash based data structures and B/B+ trees.
- Support for binary, hex, float/decimal literals.
- UTF/Emoji support (currently pure ASCII).## Notes:
- ~~I (and the book) make use of `.envrc` files to properly set enviroment variables.~~ This is no longer needed as the Makefile should call scripts to properly set things. However, you'll need [direnv][direnv], or equivalent for your distribution if you aren't running the Makefile.
- I (and the book) use Go 1.7, YMMV with lower versions.
- The interpreter uses Pratt parsing, described in the [1973 paper by Vince Vaughan][ref-pratt-parsing].## Running the Makefile
- Please see [Makefile.md][doc-makefile]
[go-go-logo]: https://github.com/ahmadchen/go-go-gadget/blob/master/go-go-logo.jpg "Inspector Gadget Approves of this language!"
[go-interpreter-book]: https://interpreterbook.com/
[go-reference-book]: https://www.amazon.ca/gp/product/0134190440/
[ps-notes]: http://notes.vkandola.me/
[direnv]: https://direnv.net/
[doc-makefile]: /Documentation/Makefile.md
[ref-pratt-parsing]: http://web.archive.org/web/20151223215421/http://hall.org.ua/halls/wizzard/pdf/Vaughan.Pratt.TDOP.pdf