Literał łańcuchowy

Literał łańcuchowy, także: napis, stała łańcuchowaliterał 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:

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 programowaniaOgranicznikZnaki specjalneMiejsce zapisu znaków specjalnychReprezentacja ogranicznika wewnątrz literałuPrzykład
ALGOL 60? – znak nowego wierszapomiędzy ogranicznikamimoż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_znakupomię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ńcuchprzed ogranicznikiem otwierającymzastosowanie 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ówzastosowanie ogranicznika innego typu
Turbo Prolog" {cudzysłów}odrębne predykatypoza 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ż

Bibliografia