[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