https://fobygevezuxymo.swws2019.com/language-design-and-programming-methodology-book-1428pv.php