https://medium.com/codex/how-to-create-a-basic-arithmetic-programming-language-part-1-sea-1a-7ed8fbde7c6d