Welcome to Glimmer ✨

Glimmer is a dynamically-typed scripting language with support for first-class functions with closures, basic types, arrays, dictionaries, and much more.

This implementation of Glimmer comes with a complete Read-Eval-Print-Loop (REPL), Read-Parse-Print-Loop (RPPL), and Read-Lex-Print-Loop (RLPL). Of course, you can also execute source files directly.




  • To run a source file, run glimmer <my source file>
  • To open the Glimmer REPL, run glimmer
  • To open the Glimmer RPPL, run glimmer -p
  • To open the Glimmer RLPL, run glimmer -l
  • When evaluating and parsing, you can also use the flag –dot to generate a dotfile & image for the AST of your input.


  • Imports & standard library
  • More builtins (casts, etc.)
  • Static typing (maybe separate fork or something)
  • Some semblance of objects/structs/data
  • Bytecode interpreter (wayyyyyy down the road)


Much of the methodologies, code, and knowledge in the writing of this came from Thorsten Ball’s book, Writing an Interpreter in Go. I wrote every line in this repo character by character without copying, changed methods where I saw fit, and added much on top of the code from this book. Reading this was a great inspiration, and I give my sincere thanks to Mr. Ball. Check out the book at https://interpreterbook.com/.


View Github