[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Gramatyka PROGRESS'a
>Nie czuje sie na silach dyskutowac z Henrykiem o semantyce i
>formalnym zapisie jezyka, ale chce wtracic swoje trzy grosze.
Bez przesady, ja nie jestem specem od języków formalnych
>Coz, w Progressie nie ma pojecia instrukcji strukturalnej: jest
>instrukcja DO, czy REPEAT, to musi byc i END.
Instrukcje strukturalne są, tylko że ich tak nie nazwano z zupełnie
niewiadomych powodów co miesza ludziom w głowie, bo instrukcja END naprawdę
nie istnieje.
>Za to tworcy Pascala
>wymyslili sobie instrukcje pusta (czyli po prostu brak czegokolwiek,
>chodzilo o to zeby mozna bylo dopuscic srednik po ostatniej
>instrukcji przed end; jak powszechnie wiadomo w Pascalu srednik
>oddziela dwie insrukcje, dlatego ostatnia instrukcja przed end nie
>musi miec srednika, ale moze - wtedy po sredniku jest instrukcja
>pusta).
W PROGRESS'ie też jest instrukcja pusta o czym łatwo się przekonać
praktycznie pisząc dwie (lub więcej) kolejne kropki obok siebie i
kompilując taki program (testowałem to na wersji 8.1, i 7.2 myślę, że na
innych będzie podobnie). Instrukcja ta jest bardzo użyteczna przy
stosowaniu preprocesora (bo w wyniku makrogeneracji może wyjść pusty ciąg
znaków). Szkoda, że o niej nie wspomniano w dokumentacji.
>Moim zdaniem podejscie do instrukcji blokowych przyjete przez
>tworcow Progressa jest rownie poprawne jak tworcow Pascala.
A instrukcja CASE .. END, IF .. THEN .. END to też instrukcje blokowe ?
>>
>> IF AVAILABL Bufor THEN ...
>> IF AVAILABLE(Bufor) THEN ...
>Zgodny z dokumentacja jest tylko piewrszy przyklad. natomiast drugi
>stanowi nieudokumentowana ceche jezyka.
Ja tego nie wymyślałem, znalazłem to w jednym z licznych przykładów w
książce czy też w źródłach procedur, teraz nie potrafię gdzie
>> Co to jest AVAILABLE - funkcja czy operator i jak tu ładnie
>> zapisać składnię funcji ?
>Funkcja, oczywiscie funkcja - tak jest w dokumentacji, tyle ze
>funkcje w Progressie sa bez nawiasow.
No tutaj to lekka przesada. Prawie wszystkie funkcje PROGRESS'owe mają
parametry ujęte w nawiasy np: ALIAS, CAN-FIND, CAPS, DATE, DAY, FIRST-OF,
LAST-OF, CONNECTED,ENTRY,LOOKUP ...
mógłbym wypisać pół dokumentacji.
Nielicznymi wyjątkami są składniowe relikty starych wersji PROGRESS'a:
AVAILABLE, LOCKED, AMBIGUOUS
>Pamietam ze jak pisalem programy w Pascalu, to bledow
>kompilacji tez nalezalo szukac w zupelnie innym miejscu niz pokazywal
>to kompilator.
Oczywiście, kompilator wskazuje nie miejsce błędu, tylko miejsce w którym
analiza składni się załamała. Komunikat błędu powinien wskazać na czym ta
analiza się załamała. Większość komunikatów PROGRESS'a mówi że coś jest źle
po zacytowanym ciągu znaków. Tyle tylko, że z powodu braku ujawnionej
publicznie formalnej gramatyki trudno wyrazić co jest źle bo po prostu
brakuje zdefiniowanych słów do opisania błędnej sytuacji.
>> Na koniec bardzo przepraszam za zbyt długi wywód na ten temat.
>Na dlugi wywód Henryka, pozwolilem sobie na jeszcze dluzszy :). Kogo
>to denerwuje mogl nie czytac.
Tutaj pełna zgoda.
Henryk Jusza
-------------------------------------------------------
Ośrodek Informatyczny Politechniki Gdańskiej
Pracownia Rozwoju Oprogramowania
tel (058) 47-28-01 fax (058) 47-24-63