O usłudze
PrzetłumaczonePotrzebujesz działającego interpretera dla języka programowania Monkey — edukacyjnego języka z książki "Pisanie interpretera w Go" i jej kontynuacji "Pisanie kompilatora w Go"? Składam cały proces od podstaw i rozszerzam referencyjną implementację o możliwości, które autorzy pozostawili jako ćwiczenia.
Co otrzymasz:
— Ręcznie napisany leksykalizator, który przekształca kod źródłowy w tokeny, z śledzeniem pozycji dla czytelnych komunikatów o błędach.
— Parser Pratt'a (parsowanie od góry do dołu według priorytetu operatorów), który buduje czyste typowane AST.
— Oceniacz przechodzący przez drzewo z liczbami całkowitymi, wartościami logicznymi, ciągami, tablicami, haszami, funkcjami pierwszej klasy i zamknięciami.
— Kompilator do bajtowego kodu i opartej na stosie maszyny wirtualnej dla prawdziwej wydajności: tabela symboli, pula stałych, obsługa ramek.
— Wbudowane funkcje, `let`/`if`/`return`, funkcje wyższego rzędu i wygodny REPL.
Rozszerzenia na życzenie: liczby zmiennoprzecinkowe, pętle `while`/`for`, operatory postfiksowe i złożone, makra z cytatami/odcytowaniem, importy modułów, eksperymenty z kolekcją śmieci, wartości błędów i bogatsze wbudowane funkcje standardowej biblioteki.
Każda wersja zawiera pełny zestaw testów opartych na tabelach, czystą historię commitów i README, które przeprowadzi cię przez każdy etap, abyś mógł uczyć się bezpośrednio z kodu. Mogę to zrobić w Go lub przenieść projekt do innego języka gospodarza. Świetna opcja dla studentów, nauczycieli i każdego, kto potrzebuje małego, ale w pełni funkcjonalnego języka do eksperymentów.
Co otrzymasz:
— Ręcznie napisany leksykalizator, który przekształca kod źródłowy w tokeny, z śledzeniem pozycji dla czytelnych komunikatów o błędach.
— Parser Pratt'a (parsowanie od góry do dołu według priorytetu operatorów), który buduje czyste typowane AST.
— Oceniacz przechodzący przez drzewo z liczbami całkowitymi, wartościami logicznymi, ciągami, tablicami, haszami, funkcjami pierwszej klasy i zamknięciami.
— Kompilator do bajtowego kodu i opartej na stosie maszyny wirtualnej dla prawdziwej wydajności: tabela symboli, pula stałych, obsługa ramek.
— Wbudowane funkcje, `let`/`if`/`return`, funkcje wyższego rzędu i wygodny REPL.
Rozszerzenia na życzenie: liczby zmiennoprzecinkowe, pętle `while`/`for`, operatory postfiksowe i złożone, makra z cytatami/odcytowaniem, importy modułów, eksperymenty z kolekcją śmieci, wartości błędów i bogatsze wbudowane funkcje standardowej biblioteki.
Każda wersja zawiera pełny zestaw testów opartych na tabelach, czystą historię commitów i README, które przeprowadzi cię przez każdy etap, abyś mógł uczyć się bezpośrednio z kodu. Mogę to zrobić w Go lub przenieść projekt do innego języka gospodarza. Świetna opcja dla studentów, nauczycieli i każdego, kto potrzebuje małego, ale w pełni funkcjonalnego języka do eksperymentów.