Czy ktoś wie, gdzie mogę uzyskać BNF lub EBNF dla języka programowania LOGO?EBNF lub BNF dla języka programowania LOGO
Odpowiedz
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.
Więc mówisz, że nie może być gramatyki dla języka, który jest jednoznaczny? –
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. –
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". –
Nie ma standardowej implementacji LOGO.
Najlepszym Połączenie jest prawdopodobnie szukać u źródła popularnej realizacji, takich jak UCBLogo
Nie wiem kto głosował, aby zamknąć to jako off-topic. "Język programowania" jest nawet w tytule ... –
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. –
@ 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