Literał łańcuchowy

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj

Literał łańcuchowy, nazywany także napisem lub stała łańcuchową, to 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 teksu 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:

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.

Literały łańcuchowe w językach programowania
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}
  • \znak
  • \kod_znaku
  • \opis_znaku
pomiędzy ogranicznikami \" "Pierwsza linia\n\13i druga\" tekst po cudzysłowie"
Clipper, dBASE
  • ' {apostrof}
  • " {cudzysłów}
  • [] {nawiasy kwadratowe}
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
  • "słowo
  • \słowo
  • [lista słów]
[lista jako łańcuch znaków]
Modula-2
  • ' {apostrof}
  • " {cudzysłów}
zastosowanie ogranicznika innego typu "łańcuch ' znaków"
Pascal ' {apostrof}
  • znaki sterujące, np. ^H
  • kod znaku, np. #10, #$A
poza ogranicznikami ' ' {dwa apostrofy} 'Pierwsza linia'#10^M'druga' ' tekst po apostrofie'
PL/I
  • ' {apostrof}
  • " {cudzysłów}
replikacja łańcucha (liczba)łańcuch przed ogranicznikiem otwierającym zastosowanie ogranicznika innego typu
  • "łańcuch ' znaków"
  • (3)'E1' = 'E1E1E1'
Simula 67 " {cudzysłów} "łańcuch znaków"
Snobol 4
  • ' {apostrof}
  • " {cudzysłów}
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.

Bibliografia[edytuj | edytuj kod]

  1. 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.
  2. Ryszard K. Kott, Krzysztof Walczak. Programowanie w języku Fortran 77, Wydawnictwa Naukowo-Techniczne, Warszawa 1991, ISBN 83-204-1362-1.
  3. 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
  4. Niklaus Wirth, Modula 2, Wydawnictwa Naukowo-Techniczne, Warszawa 1987, Seria: Biblioteka Inżynierii Oprogramowania, ISBN 83-204-0828-8.
  5. Jan Bielecki, Turbo C z grafiką na IBM PC, Wydawnictwa Naukowo-Techniczne, Warszawa 1990, Seria: Mikrokomputery, ISBN 83-204-1101-7.
  6. Wojciech Rogowski, Arkadiusz Serodziński, Clipper 5.0, Wydawnictwo PLJ, Warszawa 1991, ISBN 83-85190-20-1.
  7. 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.
  8. Jan Ruszczyc, Poznajemy FORTH, SOETO Warszawa 1987 r., Seria: Informatyka mikrokomputerowa
  9. Jan Bielecki, Język FORTH, Wydawnictwa Naukowo-Techniczne, Warszawa 1988, Seria: Mikrokomputery, ISBN 83-204-0930-6.
  10. Paweł Gizbert-Studnicki, Jerzy Kaczmarczuk, Snobol4, Wydawnictwa Naukowo-Techniczne, Warszawa 1984, Seria: Biblioteka Inżynierii Oprogramowania, ISBN 83-204-0546-7.
  11. Jan Bielecki, PL/M język programowania mikroprocesorów, Wydawnictwa Komunikacji i Łączności, Warszawa 1987, Seria: Elektronizacja, zeszyt 25
  12. Ralph E. Griswold, Madge T. Griswold, Icon, Wydawnictwa Naukowo-Techniczne, Warszawa 1987, Seria: Biblioteka Inżynierii Oprogramowania, ISBN 83-204-0871-7.
  13. Wojciech Romowicz, HTML I JavaScript, Helion 1998, ISBN 83-7197-046-3.

Zobacz też[edytuj | edytuj kod]