2010-10-11 8 views
9

Chciałbym napisać kod upiększający i pomyślałem o użyciu Ruby, aby to zrobić. Czy ktoś może pokazać mi miejsce, aby zacząć? Widziałem wiele programów do upiększania kodu w Internecie, ale nigdy nie natknąłem się na samouczki, jak je napisać. Czy jest to bardzo trudne zadanie dla kogoś, kto nigdy nie podjął żadnych projektów, takich jak pisanie kompilatora, analizatora składni itp.?Pisanie kodu upiększającego

(Czy istnieje inny langauge które byłoby bardziej odpowiednie dla tego rodzaju zadania, z wyjątkiem C/C++?)

+0

Nawet jeśli C lub C++ lepiej pasowałyby do tego zadania, to mimo wszystko je wykluczysz? –

+0

@Roger: Prawdopodobnie nie zna C/C++ bardzo dobrze, to moje przypuszczenie. – Chris

+0

Roger ma rację. Nie używałem C/C++ od czasów mojego college'u. : p –

Odpowiedz

2

Python ma ciekawą cechę - eksponuje własną parsera do skryptów. Tam are examples, które używają AST - abstrakcyjne drzewo składni - i robią ładne drukowanie.

Nie jestem świadomy tego, że Ruby udostępnia swój własny parser skryptom w taki sposób, ale istnieją parsery dla Rubiego napisane w Ruby here.

+0

ciekawy downvotes bez komentarzy – Will

2

Cóż ... Myślę, że pierwsze kroki są to co można zrobić dla każdego projektu.

Napisz listę wymagań. Opisz interfejs użytkownika programu, który Ci się podoba i nie uniemożliwi spełnienia tych wymagań. Teraz możesz napisać więcej "projektu" kodu i wybrać język, który byłby najłatwiejszy do spełnienia.

Oto niektóre wymagania off szczycie mojej głowie:

  • wspiera kodu upiększania tych językach: Ruby, Python, Perl
  • kod wyjściowy zachowuje się identycznie do wejścia
  • wyjściowy ma spójnego wykorzystania kart/obowiązuje
  • wyjściowy ma spójny funkcję konwencji nazewnictwa
  • wyjściowy ma konwencję zgodne zmienna nazewnictwa
  • Dane wyjściowe mają pasujące nawiasy klamrowe i wcięcie

Uczyń tyle, ile chcesz, to twój program. ; p żartowałem na temat Perla, ale myślę, że każdy język, który popierasz, doda jeszcze więcej pracy.

+0

+1. Chodzi o znalezienie swoich wymagań, a następnie zobaczyć, które narzędzie najlepiej spełnia te, tak jak w przypadku każdego problemu. Na przykład. wymóg "Chciałbym nauczyć się Ruby" może być równie ważny jak inne i przekręcić rzeczy w tym kierunku. :) –

+0

Czy możesz mi powiedzieć, jakie narzędzia muszę użyć? Czy muszę używać narzędzi takich jak lex i yacc, czy też są przeznaczone na coś innego? Czytałem gdzieś, że muszę parsować kod na żetony lub coś, po czym mogę sobie z tym poradzić, ale to wszystko, co wiem. Dzięki. –

+0

Tokenizing lines z pewnością będzie częścią twojego programu. Spójrz na rubyBeautifier germanlinux połączony z, to nie jest długi program. Używał wyrażeń regularnych, które są do tego idealne.Są trudne do nauczenia, ale bardzo przydatne. Nie wiem, Ruby, ale wygląda na to, że możesz użyć funkcji .split (ogranicznik) na łańcuchu, aby rozciąć go na tokeny. Wyrażenia regularne to prawdopodobnie jednak droga. – axus