๐Ÿ“ฆ AzimMuradov / mini-go

Mini Go (Golang) parser and interpreter written in Haskell

โ˜… 0 stars โ‘‚ 0 forks ๐Ÿ‘ 0 watching โš–๏ธ Apache License 2.0
gogolanghaskellinterpreterlanguagemegaparsecparser
๐Ÿ“ฅ Clone https://github.com/AzimMuradov/mini-go.git
HTTPS git clone https://github.com/AzimMuradov/mini-go.git
SSH git clone git@github.com:AzimMuradov/mini-go.git
CLI gh repo clone AzimMuradov/mini-go
Azim Muradov Azim Muradov Refactor Main.hs 8e2774e 2 years ago ๐Ÿ“ History
๐Ÿ“‚ master View all commits โ†’
๐Ÿ“ .github
๐Ÿ“ app
๐Ÿ“ lib
๐Ÿ“ test-integration
๐Ÿ“„ .gitignore
๐Ÿ“„ LICENSE
๐Ÿ“„ mini-go.cabal
๐Ÿ“„ README.md
๐Ÿ“„ README.md

An implementation of Go mini-language

Author: Azim Muradov, azim.muradov.dev@gmail.com

License: APACHE LICENSE, VERSION 2.0

Project parts:

  • application
  • analyzer
  • check for name collision or missing names
  • type checker
  • const expressions converters (w/o const keyword)
  • interpreter

Features:

  • supported types: int, bool, string, multidimensional arrays, functions
  • void support
  • function literals (anonymous functions), closures (including mutable closures) support
  • operators (arithmetic, logic, comparison) support
  • if, else, for support
  • recursion, mutual recursion support
  • function definitions, globals support
  • variable declarations, variable assignments, short variable declarations (:=) support
  • increment, decrement support
  • supported stdlib functions: len, print, println, panic

TODO:

  • add pretty printer
  • add missing docs
  • add unit tests