2011-07-25 9 views
12

Czy ktoś wie, gdzie mogę uzyskać BNF lub EBNF dla języka programowania LOGO?EBNF lub BNF dla języka programowania LOGO

+4

Nie wiem kto głosował, aby zamknąć to jako off-topic. "Język programowania" jest nawet w tytule ... –

+0

Wygląda na to, że dotarło to do Reddit, chronię to na razie (będzie niezabezpieczony za kilka dni). To nie problem, tak, tylko środek ostrożności. –

+3

@ Tim Post To sprawiło, że dotarłem do subreddit programowania reddit, nie widzę, jak to jest przyczyną alarmu. Może nawet była to dobra okazja, aby przyciągnąć nowych użytkowników? – ArtB

Odpowiedz

12

BNF gramatyki może nie być zbyt przydatne w pewnych okolicznościach ...

Pisanie LOGO który jest dokładnie zgodny z istniejącym/historycznej realizacji nie jest łatwym zadaniem (pracowałem na takim projekcie). Problem polega na tym, że parser nie wykonuje pełnego zadania, a ewaluator (tłumacz) musi pracować z częściowymi danymi. Rozważmy następujący przykład:

PROC1 AB PROC2 c

Może to oznaczać PROC1 (a, b, PROC2 (c)) lub PROC1 (a, b, PROC2(), c), zgodnie z liczbą parametry dla proc1 & proc2.

Co więcej, tłumacze LOGO, których znam, np. Berkely LOGO, wydają się pobieżnym spojrzeniem, by nie pisać tradycyjnego parsera, który dodatkowo ma dostęp do każdej procedury i jej arytmu; zamiast tego uruchamiają procedury, a procedury "pochłaniają" liczbę parametrów, których potrzebują. To sprawia, że ​​parser jest trochę naiwny, a główną rolę odgrywa interpreter, a zatem parsowanie jest czymś niezwykłym.

+0

Więc mówisz, że nie może być gramatyki dla języka, który jest jednoznaczny? –

+0

Tak, myślę, że nie istnieje taka gramatyka (bez względu na niejednoznaczność), chyba że jest to naiwna gramatyka, która parsuje ciąg polecenia w większości takim, jaki jest, i po prostu rozstrzyga operatorów infiksów i tym podobnych. –

+0

Prawica, parser naiwny po prostu analizowałby zgodnie z gramatyką , ale nie zrozumiałoby * arii * wbudowanych funkcji. Wydaje się, że podczas analizowania, trzeba będzie sprawdzić * arność * funkcji przed podjęciem decyzji, jak przeanalizować kolejne tokeny. Ma to również więcej sensu, jak powiedziałeś, "parsuj, jak idziesz". –

2

Nie ma standardowej implementacji LOGO.

Najlepszym Połączenie jest prawdopodobnie szukać u źródła popularnej realizacji, takich jak UCBLogo

Powiązane problemy