Literał łańcuchowy – Wikipedia, wolna encyklopedia
Literał łańcuchowy, także: napis, stała łańcuchowa – literał reprezentujący w kodzie źródłowym wartość składającą się z ciągu znaków (łańcuch znaków).
Podając w kodzie źródłowym wartość będącą określonym ciągiem znaków, należy go jednoznacznie wyodrębnić, od kodu źródłowego w danym języku programowania. Najczęściej do wyodrębniania literałów łańcuchowych stosuje się określony ogranicznik, tj. znak lub parę znaków. Takie rozwiązanie umożliwia jednoznaczne wyodrębnienie jednostki leksykalnej tekstu programu jaką jest łańcuch. Dzięki takiej konstrukcji składni języka programowania literały łańcuchowe mogą zawierać znaki specjalne, np. spacje, które poza literałami łańcuchowymi najczęściej pełnią rolę separatorów jednostek leksykalnych.
Najczęściej stosowane ograniczniki:
- cudzysłów ", np. w języku C
- apostrof ', np. Pascal
- inne, np. para nawiasów kwadratowych [], np. Clipper, dBase.
Pewne języki programowania definiują w swojej składni kilka różnych ograniczników, np. Clipper, w którym ograniczenie literału łańcuchowego można dokonać apostrofem (otwierającym i zamykającym), cudzysłowem (otwierającym i zamykającym), parą nawiasów kwadratowych (otwierającym [ i zamykającym ]). To rozwiązanie jest wprowadzone w celu umożliwienia wprowadzania do łańcuchów znaków ogranicznika, np. w przypadku napisu zawierającego cudzysłów można zastosować nawiasy kwadratowe itp. Wadą tego rozwiązania jest to, że w jednym literale łańcuchowym nie mogą występować wszystkie ograniczniki równocześnie, jeden musi być zastosowany do ograniczania łańcucha. Lepszym rozwiązaniem tego problemu jest zastąpienie ogranicznika wewnątrz literału specjalnym symbolem, np. parą ograniczników obok siebie reprezentującą w literale pojedynczy znak ogranicznika (Pascal), lub opisem znaków (język C: \").
Innym istotnym problemem jest wprowadzanie do tekstu programu takich literałów łańcuchowych, w których występują znaki i symbole specjalne, np. znak nowej linii. Nie można tu użyć klawiatury do wprowadzenia znaku do tekstu programu, gdyż klawisz Enter (Return), zostanie zinterpretowany przez edytor tekstu jako polecenie dla siebie wprowadzenia nowej linii, zamiast dodania kolejnego znaku do literału łańcuchowego. W tym przypadku stosuje się opis znaku lub kod znaku.
Język programowania | Ogranicznik | Znaki specjalne | Miejsce zapisu znaków specjalnych | Reprezentacja ogranicznika wewnątrz literału | Przykład |
---|---|---|---|---|---|
ALGOL 60 | ‘ ’ | ? – znak nowego wiersza | pomiędzy ogranicznikami | można stosować zagnieżdżenie parami | ‘łańcuch ? ‘znaków ’ ’ |
C, C++ | " {cudzysłów} |
| pomiędzy ogranicznikami | \" | "Pierwsza linia\n\13i druga\" tekst po cudzysłowie" |
Clipper, dBASE |
| zastosowanie ogranicznika innego typu | "można stosować ' i []" | ||
Forth | ." " | ograniczniki są słowami, muszą być oddzielone spacją od łańcucha – spacje te nie są częścią literału | ." Łańcuch " | ||
Fortran 77, PL/M | ' {apostrof} | ' ' {para apostrofów} | |||
Icon | " {cudzysłów} | \opis_znaku | pomiędzy ogranicznikami | \" | "łańcuch \"znaków\"" |
Logo |
| [lista jako łańcuch znaków] | |||
Modula-2 |
| zastosowanie ogranicznika innego typu | "łańcuch ' znaków" | ||
Pascal | ' {apostrof} |
| poza ogranicznikami | ' ' {dwa apostrofy} | 'Pierwsza linia'#10^M'druga' ' tekst po apostrofie' |
PL/I |
| replikacja łańcucha (liczba)łańcuch | przed ogranicznikiem otwierającym | zastosowanie ogranicznika innego typu |
|
Simula 67 | " {cudzysłów} | "łańcuch znaków" | |||
Snobol 4 |
| znak nowego wiersza jako spinanie łańcuchów | zastosowanie ogranicznika innego typu | ||
Turbo Prolog | " {cudzysłów} | odrębne predykaty | poza ogranicznikami | "łańcuch" |
Odwrotna relacja pomiędzy literałem łańcuchowym a kodem aplikacji zachodzi w dokumentach opartych na języku skryptowym (np. HTML, JavaScript) lub obliczeniowym (np. Mathcad). Tutaj podstawowy tekst jest łańcuchem znaków przeznaczonym do wyświetlenia/wydrukowania, a sam program zawarty jest w specjalnych ogranicznikach, lub oparty na specjalnych symbolach. Jednak w takim kodzie, umieszczonym w dokumencie, również mogą występować literały łańcuchowe, budowane zgodnie ze składnią języka.
Zobacz też
[edytuj | edytuj kod]Bibliografia
[edytuj | edytuj kod]- Janusz Szajna, Marian Adamski, Tomasz Kozłowski, Turbo Prolog. Programowanie w języku logiki., Wydawnictwa Naukowo-Techniczne, Warszawa 1991, Seria: Mikrokomputery. ISBN 83-204-1395-8.
- Ryszard K. Kott, Krzysztof Walczak. Programowanie w języku Fortran 77, Wydawnictwa Naukowo-Techniczne, Warszawa 1991, ISBN 83-204-1362-1.
- Andrzej Marciniak, Borland Pascal 7.0, Wyd. Nakom, Poznań 1994 r., seria: Biblioteka Użytkownika Mikrokomputerów ISBN 83-85060-53-7, ISSN 0867-6011
- Niklaus Wirth, Modula 2, Wydawnictwa Naukowo-Techniczne, Warszawa 1987, Seria: Biblioteka Inżynierii Oprogramowania, ISBN 83-204-0828-8.
- Jan Bielecki, Turbo C z grafiką na IBM PC, Wydawnictwa Naukowo-Techniczne, Warszawa 1990, Seria: Mikrokomputery, ISBN 83-204-1101-7.
- Wojciech Rogowski, Arkadiusz Serodziński, Clipper 5.0, Wydawnictwo PLJ, Warszawa 1991, ISBN 83-85190-20-1.
- Jan Bielecki, Rozszerzony PL/I i JCL w systemie OS/RIAD, Państwowe Wydawnictwo Naukowe, Warszawa 1986, Seria: Biblioteka Informatyki, ISBN 83-01-06146-4.
- Jan Ruszczyc, Poznajemy FORTH, SOETO Warszawa 1987 r., Seria: Informatyka mikrokomputerowa
- Jan Bielecki, Język FORTH, Wydawnictwa Naukowo-Techniczne, Warszawa 1988, Seria: Mikrokomputery, ISBN 83-204-0930-6.
- Paweł Gizbert-Studnicki, Jerzy Kaczmarczuk, Snobol4, Wydawnictwa Naukowo-Techniczne, Warszawa 1984, Seria: Biblioteka Inżynierii Oprogramowania, ISBN 83-204-0546-7.
- Jan Bielecki, PL/M język programowania mikroprocesorów, Wydawnictwa Komunikacji i Łączności, Warszawa 1987, Seria: Elektronizacja, zeszyt 25
- Ralph E. Griswold, Madge T. Griswold, Icon, Wydawnictwa Naukowo-Techniczne, Warszawa 1987, Seria: Biblioteka Inżynierii Oprogramowania, ISBN 83-204-0871-7.
- Wojciech Romowicz, HTML I JavaScript, Helion 1998, ISBN 83-7197-046-3.