Fraza – składniowa jednostka podrzędna stanowiąca część definicji większej jednostki złożonej, występującej w składni określonego języka programowania. Rolą fraz jest modyfikowanie i definiowanie szczegółów działania określonej jednostki nadrzędnej, w szczególności instrukcji lub deklaracji.
Elementy jednostek składniowych Frazy są więc jednym z elementów jednostek składniowych, które mogą występować opcjonalnie, lub mogą występować w różnej formie w zależności do definiowanego algorytmu. Frazy odróżniają się więc od elementów stałych definicji danej jednostki składniowej powyższymi cechami. Przykład w PL/I: DO WHILE warunek; instrukcje; END; W powyższej instrukcji strukturalnej – instrukcji pętli – fraza WHILE jest opcjonalna i może nie występować lub występować w zależności od potrzeb, może zostać zastąpiona inną frazą, lub występować łącznie z inną frazą, taką jak TO, BY, UNTIL, REPEAT. Natomiast podstawowa jednostka identyfikowana słowem kluczowym DO, nie jest frazą i nie może zostać pominięta, gdyż zapis w postaci: WHILE warunek; instrukcje; END; jest błędny, a jakakolwiek fraza, w tym przykładowa WHILE, nie może występować samodzielnie, z pominięciem jednostki nadrzędnej, w tym szczególnym przypadku instrukcji DO.
Miejsce występowania Ponieważ frazy są częścią składową pewnej jednostki, występują w kodzie źródłowym, wyłącznie razem z daną jednostką nadrzędną, a próba użycia frazy samodzielnie, kończy się sygnalizowaniem błędu przez translator. Tylko nieliczne języki mają w swej składni frazy i samodzielne jednostki o identycznej budowie leksykalnej, co oznacza, że dany element może być użyty np. jako instrukcja samodzielna lub jako fraza innej instrukcji.
Frazy stosuje się w takich jednostkach składniowych jak: deklaracje i definicje instrukcje. Określone frazy zdefiniowane w języku mogą występować wyłącznie w określonym kontekście, w określonym miejscu pewnej jednostki, lub kilku jednostek składniowych. Przykładowo w języku Pascal fraza else może wstąpić zarówno w instrukcji warunkowej if jak i w instrukcji wyboru case.
Frazy w deklaracjach i definicjach Deklaracje i definicje służą do przypisania pewnemu obiektowi definiowanemu w kodzie źródłowym przez programistę, identyfikowanemu za pomocą utworzonego identyfikatora, jego właściwości i atrybutów. Takie deklaracje mogą zawierać także różne frazy definiujące pewne właściwości obiektu.
Przykładowo w języku PL/I istnieje rozbudowany zestaw fraz umożliwiający w deklaracjach podprogramów, przypisywać specyficzne atrybutu. Frazy te są opcjonalne. Przykładowe frazy to: OPTIONS(opcje) w tej frazie specyfikować można dodatkowe właściwości podprogramu, przykładowo opcja MAIN identyfikuje procedurę główną, od której rozpoczyna się wykonywanie programu, RETURNS(typ) fraza deklarująca podprogram o charakterze funkcyjnym, oraz definiująca typ zwracanej wartości, frazy optymalizacyjne definiujące atrybuty umożliwiające optymalizację kodu wynikowego przez translator, np. ORDER, REORDER, REDUCIBLE itd., RECURSIVE dla podprogramów rekurencyjnych i inne. W implementacji Turbo Pascal dostępne są dla podprogramów frazy: inline(kod_maszynowy) definiujący podprogram w kodzie maszynowym assembler podprogram napisany w asemblerze forward deklaracja wstępna (prototyp) i inne.
Frazy w instrukcjach W instrukcjach, w szczególności instrukcjach strukturalnych, występują w językach programowania różne frazy, ale istnieje pewien zestaw typowych fraz definiowanych w większości języków programowania wysokiego poziomu:
Typowe frazy Typowe frazy instrukcji występujące w wielu językach wysokiego poziomu: else fraza występująca w większości języków programowania, w których zdefiniowana jest instrukcja warunkowa typu if, definiuje ona czynności do wykonania w przypadku gdy warunek zawarty w instrukcji po słowie if, nie jest spełniony, zwykle ta fraza jest opcjonalna i może zostać pominięta, przykładowe języki: Pascal, C, C++, Visual Basic i inne, {Pascal} if a<b then c=1 else c=2; case, :, =>, when fraza występująca w instrukcji wyboru, definiująca konkretny warunek, przy spełnieniu którego, zostaną wykonane zawarte w tej frazie instrukcje, zwykle występuje w instrukcji wyboru kilka takich fraz, przykładowe języki: Pascal, C, C++, Visual Basic i inne, default, else, other, otherwise fraza występująca w instrukcji wyboru, definiująca czynności do wykonania, gdy żaden z warunków szczególnych (case) nie zostanie uzgodniony w ramach bieżącej instrukcji wyboru, przykładowe języki: Pascal, C, C++, Visual Basic i inne, {Pascal} case a of 1 : b=1 2 : b=2 3 : b=0 else Error(5) end; to, until fraza definiująca wartość końcową zakresu (ostatnią) dla zmiennej sterującej w instrukcji iteracyjnej typu for, przykładowe języki: Basic, Pascal, PL/I step, by fraza definiująca tzw. krok zmiennej sterującej, tzn. wartość o jaką ma się zmienić zmienna sterująca przy przejściu do kolejnej iteracji dla instrukcji typu for, przykładowe języki: Basic, PL/I /* PL/I */ DO I=1 TO 10 BY 2 WHILE A<B; CALL WYKONAJ; CALL ZAMKNIJ; END;
Specyficzne frazy Oprócz typowych fraz instrukcji, konkretne języki lub ich implementacje, mogą wprowadzać do swojej składni specyficzne frazy, rzadko występujące w innych językach programowania. Przykłady: BY NAME fraza w języki PL/I, dla instrukcji przypisania, określająca, że przypisanie struktur ma następować według nazw pól, a nie rozmieszczenia w pamięci, RECOVER fraza w języku Clipper, dla instrukcji blokowej, definiująca akcje do wykonania w przypadku wystąpienia błędu frazy instrukcji wejścia-wyjścia rozbudowany zestaw fraz dla instrukcji wejścia-wyjścia np. w języku PL/I
Niejednolite konstrukcje Różnorodność i duża liczba języków programowania sprawia, że wiele typowych konstrukcji w różnych językach może: stanowić samodzielną jednostkę, np. instrukcję, stanowić frazę pewnej jednostki nadrzędnej. Powyższe stwierdzenie można prześledzić na przykładnie konstrukcji while warunek …; występującą w większości języków programowania wysokiego poziomu. Ta konstrukcja występuje jako: instrukcja, w takich językach jak, np. C, C++, Pascal, Modula 2 i inne, fraza instrukcji pętli, np. PL/I.
Zdefiniowanie konstrukcji WHILE jako frazy umożliwia definiowanie bardziej złożonego sterowania przepływem, niż w przypadku odrębnych instrukcji, np. łączenie fraz TO i WHLIE. Język Pascal Język PL/Ifor i=1 to 10 do begin if not (a<c) then goto koniec; { instrukcje } end; koniec: ...DO I=1 TO 10 WHILE A<C; /* instrukcje */ END;
Powyższe instrukcję będą wykonywane dla wartości zmiennej sterującej z zakresu 1 do 10, ale tylko gdy spełniony będzie równocześnie warunek, że a<c. Jak widać w Pascalu wymaga wprowadzenie tego warunku zastosowania dodatkowej instrukcji warunkowej i skoku.
Zobacz też instrukcja (informatyka)
Bibliografia Michael Marcotty, Henry Ledgord, W kręgu języków programowania, tłum.: Krystyna Jerzykiewicz, Wydawnictwa Naukowo-Techniczne, Warszawa 1980, Seria: Biblioteka Inżynierii Oprogramowania, John E. Nicholls, Struktura języków programowania, Wydawnictwa Naukowo-Techniczne, Warszawa 1980, Seria: Informatyka, Jan Bielecki, Rozszerzony PL/I i JCL w systemie OS/RIAD, Państwowe Wydawnictwo Naukowe, Warszawa 1986, Seria: Biblioteka Informatyki, Michał Iglewski, Jan Madey, Stanisław Matwin, Pascal. Język wzorcowy – Pascal 360., Wydawnictwa Naukowo-Techniczne, Warszawa 1984, wyd. III zm., Seria: Biblioteka Inżynierii Oprogramowania, ,
Kategoria:Konstrukcje programistyczne