倩女幽魂手游春季炫彩时装来袭 新服开启送春风
Snobol (String Oriented Symbolic Language) – j?zyk programowania zaprojektowany specjalnie do przetwarzania napisów. Obecnie poj?cie Snobol obejmuje rodzin? j?zyków programowania, w?ród których wyró?nia si? j?zyk Snobol4 (number 4).
?ród?a i rozwini?cie Snobola
[edytuj | edytuj kod]Snobol wywodzi si? cz??ciowo z
- COMIT-a, a cz??ciowo
- z idei zawartych w algorytmie Markowa.
Snobol powsta? w Bell Telephone Laboratories w 1962 r. Pierwsza jego realizacja zosta?a stworzona na maszynie IBM 7090. Oko?o 1965 roku powsta? Snobol3. Dalsze prace nad rozwojem Snobola doprowadzi?y do powstania w 1968 r. j?zyka Snobol4.
Rozwój idei zawartych w j?zyku Snobol oraz ukierunkowanie prac na wi?ksz? uniwersalno?? doprowadzi?y do powstania nowych j?zyków takich jak Icon.
Dialekty j?zyka Snobol
[edytuj | edytuj kod]J?zyk Snobol4 doczeka? si? kilku implementacji ró?ni?cych si? mi?dzy sob? w szczegó?ach realizacji. Warto tu wymieni? nast?puj?ce wersje:
- SIL (Snobol Implementation Language),
- Mainbol (Macro Implementation of Snobol),
- Fastbol (Fast Snobol),
- Spitbol (Speedy Implementation of Snobol),
- Sitbol.
Program w j?zyku Snobol
[edytuj | edytuj kod]Program komputerowy w j?zyku Snobol4 sk?ada si? z ci?gu instrukcji zakończonego instrukcj? end, która równocze?nie pe?ni funkcj? etykiety dla skoku. Instrukcje rozdzielone s? separatorem (?rednik lub znak końca wiersza). Kontynuacja instrukcji w kolejnym wierszu wymaga aby pierwszy znak linii kontynuacyjnej by? znakiem ?+” lub ?.”. Komentarzem jest linia rozpoczynaj?ca si? od znaku ?*”.
Instrukcja w j?zyku Snobol4 ma posta?:
etykieta regu?a skok
- Etykieta instrukcji ma takie samo znaczenie jak w wi?kszo?ci j?zyków programowania – identyfikuje ona miejsce w programie, do którego mo?e nast?pi? skok.
- Regu?a okre?la konkretn? akcj? do wykonania
- przypisanie
- uzgodnienie z wzorcem
- zamiana
- wyra?enie
- Skok mo?e by?
- bezwzgl?dny –: (etykieta)
- skok w przypadku sukcesu –: S(etykieta)
- skok w przypadku niepowodzenia –: F(etykieta)
- skoki warunkowe (kolejno?? S i F dowolna) –: S(etykieta1) F(etykieta2)
Instrukcja przypisania ma posta? znan? z ogólnych j?zyków programowania:
WCZYTAJ WIERSZ=INPUT :F(WCZYTAJ)
Instrukcja uzgadniania z wzorcem ma posta?:
PRZEDMIOT WZORZEC: S(etykieta1) F(etykieta2)
Jej dzia?anie polega na przegl?daniu ?ańcucha PRZEDMIOT w poszukiwaniu wyst?pienia WZORCA i wykonaniu skoku do etykiety1, gdy WZORZEC zostanie znaleziony (instrukcja kończy si? sukcesem) lub etykiety2, gdy WZORZEC nie zostanie znaleziony (uzgodnienie zawodzi).
Instrukcja zamiany ??czy w sobie dzia?anie dwu powy?szych i na posta?:
PRZEDMIOT WZORZEC=PODMIOT: S(etykieta1) F(etykieta2)
w której znalezienie wzorca spowoduje w ?ańcuchu PRZEDMIOT jego zast?pienie ?ańcuchem PODMIOT.
Wyra?enie to dowolne poprawne w Snobolu wyra?enie.
Typy danych
[edytuj | edytuj kod]We wczesnych wersjach Snobola jedynym typem danych by? napis (?ańcuch) i nawet operacje arytmetyczne by?y wykonywane na liczbach pami?tanych w postaci napisów.
W Snobol4 dost?pne s? typy danych:
- ?ańcuch (napis): string
- liczba ca?kowita: integer
- liczba zmiennopozycyjna: real
- nazwa: name
- tablica: array
- wzorzec: pattern
- tabela: table
- wyra?enie: expresion
- lista: list
Programista mo?e wyprowadza? w?asne typy danych.
Sk?adnia
[edytuj | edytuj kod]Sk?adnia j?zyka Snobol znacz?co odbiega od sk?adni ?typowych” j?zyków programowania wysokiego poziomu i ma wiele ?udziwnień” powoduj?cych cz?sto b??dy w?ród programistów przyzwyczajonych do tradycyjnego zapisu programu, np.
- kontynuacja instrukcji wymaga w kolejnym wierszu umieszczenia znaku + lub.,
- zapis wyra?enia wymaga oddzielenia spacjami operatorów i argumentów, np. ‘A+B’ jest b??dne i nale?y pisa? ‘A + B’,
- instrukcja bez etykiety musi si? rozpoczyna? spacj? (pierwszy znak wiersza), gdy? w przeciwnym przypadku pierwszy wyraz instrukcji b?dzie zinterpretowany jako etykieta,
- brak struktur steruj?cych: p?tle realizuje si? za pomoc? skoków do etykiety, instrukcj? warunkow? poprzez odpowiednie frazy F i S pola skoku,
- i wiele innych.
W Snobolu mo?na definiowa? podprogramy w postaci funkcji.
Procesor Snobola
[edytuj | edytuj kod]Procesor Snobola to aparat uzgadniania. Aby skutecznie pisa? programy w tym j?zyku nale?y zrozumie? dzia?anie aparatu przeszukiwania wzorca i sposoby jego sterowania. Aparat ten jest analogiczn? procedur? do dzia?ania aparatu wnioskowania w j?zyku Prolog.
Tak wi?c podobnie jak w Prologu program jest t?umaczony na kod wewn?trzny procesora Snobola, a nie na kod wewn?trzny maszyny. W implementacjach kompilatorów procesor jest w??czany do kodu wynikowego i interpretuje swój j?zyk wewn?trzny b?d?cy wynikiem translacji kodu ?ród?owego w Snobolu na kod wewn?trzny procesora Snobola. Dzia?anie procesora Snobola opiera si? na predykatach, tzn. funkcjach, które mog? b?d? generowa? sukces (powodzenie), b?d? mog? zawodzi?. Dost?pne s? równie? predykaty standardowe, którymi mo?na wp?ywa? na przebieg procesu uzgadniania. Istnieje tu wi?c pewna analogia do aparatu wnioskowania Prologu.
Snobol zawiera mechanizm automatycznej regeneracji pami?ci dynamicznej.
S?owa kluczowe
[edytuj | edytuj kod]W Snobolu s?owa kluczowe zapewniaj? dost?p do informacji procesora Snobola, przy czym program mo?e je jedynie odczytywa?, nie mo?na przypisywa? im nowych warto?ci z wyj?tkiem kilku zmiennych systemowych.
Implementacja dla komputera Odra 1305
[edytuj | edytuj kod]W Polsce zrealizowano dystrybucj? Spitbola dla komputerów Odra 1305 w Instytucie Fizyki Uniwersytetu Jagiellońskiego pracuj?c? pod systemem GEORGE 3 w oparciu o pierwsz?, autorsk? wersj? Macro-Spitbol dla maszyn serii ICL 1900. Wersja 4.1 uruchomiona zosta?a 1983 r.
Przyk?ad
[edytuj | edytuj kod] DEFINE('COPYL(L)X,Y')
COPYL COPYL = COPY(L); X = COPYL :(K.COPYL)
LOOP Y = DIFFER(NEXT(X)) COPY(NEXT(X)) :F(RETURN)
PREV(Y) = X; NEXT(X) = Y; X = Y :(LOOP)
K.COPYL
Zobacz te?
[edytuj | edytuj kod]Bibliografia
[edytuj | edytuj kod]- Pawe? Gizbert-Studnicki, Jerzy Kaczmarczuk, Snobol4, Wydawnictwa Naukowo-Techniczne, Warszawa 1984, Seria: Biblioteka In?ynierii Oprogramowania, ISBN 83-204-0546-7.