Jaki Lisp jest lepszy w parsowaniu?

Chciałbym zaimplementować interpreter Lispu w dialekcie Lispu głównie jako ćwiczenie do nauki. Jedyną rzeczą, która mnie zniechęca, jest to, jak wiele możliwości jest w tej dziedzinie. Przede wszystkim jestem nieco bardziej zainteresowany poznaniem niektórych Lispów, które istnieją już od jakiegoś czasu (jak Scheme czy Common Lisp). Nie chcę używać do tego Clojure, bo już go używałem. :-)

Czy jeden ze smaków jest lepszy od innych w parsowaniu? A myślisz, że dobrym pomysłem jest powiedzenie implementation Scheme w Common Lispie (lub odwrotnie)? Czy będzie między nimi wystarczająco dużo różnic, żeby mnie zmylić?

I jeśli to robi jakąś różnicę, chciałbym coś, co jest wieloplatformowe. Mam Windows PC, Mac i Linux box, i mogę skończyć pisząc to na każdym z nich.

Author: Jason Baker, 2009-08-23

2 answers

Jest kilka książek na ten temat:

Wszystkie powyższe książki są wysoce zalecane, choć Anatomia Lispu jest stara, trudna do zdobycia i trudna do odczytania.

Zarówno Scheme, jak i Common Lisp są odpowiednie dla Twojego zadania.

Implementacja Common Lispu jest większym zadaniem, ponieważ język jest większy. Zazwyczaj implementuje się Common Lisp lepiej w Common Lispie, ponieważ istnieją Biblioteki Common Lispu, które mogą być używane do nowych implementacji Common Lispu. ;-)

 21
Author: Rainer Joswig,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-23 14:51:22

PLT Scheme jest doskonałą platformą do eksperymentowania z językami programowania, szczególnie językami Lispy. PLT ma rozszerzalny parser (zwykle nazywany reader in Scheme), który zapewnia makra reader do manipulowania wbudowaną składnią; lub można całkowicie zastąpić czytnik swoim własnym. Jeśli wolisz używać tradycyjnych parserów stylu lex / yacc i lexerów, PLT jest wyposażony w moduł Parser-tools, który również je zapewnia. Dodatkowo posiada obszerną dokumentację i repozytorium dla pakietów innych firm (dwie rzeczy, których brakuje w wielu systemach).

Implementacja referencyjna Arc (arclanguage.org) jest dość prosty i czytelny przykład budowania języka kompilującego do Scheme. Używa głównie czytnika PLT, z kilkoma makrami reader do zmiany bitów składni schematów, które różnią się od Arc. istnieje również implementacja JavaScript dostępna z repozytorium pakietów PLT (planet.plt-scheme.org) jeśli chcesz zobaczyć jak implementacja języka innego niż Lisp.

 4
Author: dudleyf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-11 20:37:12