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.

+ 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.

Zobacz też literał literał bitowy literał logiczny literał liczbowy literał pusty literał zbiorowy literał znakowy jednostka leksykalna string

Bibliografia Janusz Szajna, Marian Adamski, Tomasz Kozłowski, Turbo Prolog. Programowanie w języku logiki., Wydawnictwa Naukowo-Techniczne, Warszawa 1991, Seria: Mikrokomputery. . Ryszard K. Kott, Krzysztof Walczak. Programowanie w języku Fortran 77, Wydawnictwa Naukowo-Techniczne, Warszawa 1991, . Andrzej Marciniak, Borland Pascal 7.0, Wyd. Nakom, Poznań 1994 r., seria: Biblioteka Użytkownika Mikrokomputerów , ISSN 0867-6011 Niklaus Wirth, Modula 2, Wydawnictwa Naukowo-Techniczne, Warszawa 1987, Seria: Biblioteka Inżynierii Oprogramowania, . Jan Bielecki, Turbo C z grafiką na IBM PC, Wydawnictwa Naukowo-Techniczne, Warszawa 1990, Seria: Mikrokomputery, . Wojciech Rogowski, Arkadiusz Serodziński, Clipper 5.0, Wydawnictwo PLJ, Warszawa 1991, . Jan Bielecki, Rozszerzony PL/I i JCL w systemie OS/RIAD, Państwowe Wydawnictwo Naukowe, Warszawa 1986, Seria: Biblioteka Informatyki, . Jan Ruszczyc, Poznajemy FORTH, SOETO Warszawa 1987 r., Seria: Informatyka mikrokomputerowa Jan Bielecki, Język FORTH, Wydawnictwa Naukowo-Techniczne, Warszawa 1988, Seria: Mikrokomputery, . Paweł Gizbert-Studnicki, Jerzy Kaczmarczuk, Snobol4, Wydawnictwa Naukowo-Techniczne, Warszawa 1984, Seria: Biblioteka Inżynierii Oprogramowania, . 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, . Wojciech Romowicz, HTML I JavaScript, Helion 1998, .

Kategoria:Konstrukcje programistyczne