Tom sträng

I formell språkteori är den tomma strängen , eller det tomma ordet , den unika strängen med längden noll.

Formell teori

Formellt är en sträng en ändlig, ordnad sekvens av tecken som bokstäver, siffror eller mellanslag. Den tomma strängen är specialfallet där sekvensen har längden noll, så det finns inga symboler i strängen. Det finns bara en tom sträng, eftersom två strängar bara är olika om de har olika längd eller olika sekvens av symboler. Vid formella behandlingar betecknas den tomma strängen med ε eller ibland Λ eller λ .

Den tomma strängen ska inte förväxlas med det tomma språket , som är ett formellt språk (dvs en uppsättning strängar) som inte innehåller några strängar, inte ens den tomma strängen.

Den tomma strängen har flera egenskaper:

I sammanhangsfria grammatiker kallas en produktionsregel som tillåter en symbol att producera den tomma strängen en ε-produktion, och symbolen sägs vara "nullbar".

Använd i programmeringsspråk

I de flesta programmeringsspråk är strängar en datatyp . Strängar lagras vanligtvis på distinkta minnesadresser (platser). Således kan samma sträng (till exempel den tomma strängen) lagras på två eller flera platser i minnet.

På så sätt kan det finnas flera tomma strängar i minnet, i motsats till den formella teoridefinitionen, för vilken det bara finns en möjlig tom sträng. En strängjämförelsefunktion skulle dock indikera att alla dessa tomma strängar är lika med varandra.

Även en sträng med längden noll kan kräva minne för att lagra den, beroende på vilket format som används. I de flesta programmeringsspråk är den tomma strängen skild från en nollreferens (eller nollpekare) eftersom en nollreferens pekar på ingen sträng alls, inte ens den tomma strängen. Den tomma strängen är en legitim sträng som de flesta strängoperationer bör fungera på. Vissa språk behandlar några eller alla av följande på liknande sätt: tomma strängar, nollreferenser, heltal 0, flyttalstalet 0, booleskt värde false , ASCII-tecknet NUL eller andra sådana värden .

Den tomma strängen representeras vanligtvis på samma sätt som andra strängar. I implementeringar med strängavslutande tecken ( nollterminerade strängar eller ren textrader), indikeras den tomma strängen av omedelbar användning av detta avslutande tecken.

λ representation Programmeringsspråk
"" C , C# , C++ , Go , Haskell , Java , JavaScript , Julia , Lua , M , Objective-C (som en C-sträng), OCaml , Perl , PHP , Python , Ruby , Scala , Standard ML , Swift , Tcl , Visual Grundläggande .NET
'' APL , Delphi , JavaScript , Lua , MATLAB , Pascal , Perl , PHP , Python , R , Ruby , Smalltalk , SQL
tecken(0) R
{'\0'} C , C++ , Objective-C (som en C-sträng)
std::string() C++
""s C++ (sedan 2014 års standard )
@"" Objective-C (som ett konstant NSString- objekt)
[NSString sträng] Objective-C (som ett nytt NSString- objekt)
q(), qq() Perl
str() Pytonorm

%{} %()
Rubin
String::new() Rost
sträng.Tom C# , Visual Basic .NET
String.make 0 '-' OCaml
{} Tcl
[[]] Lua

Exempel på tomma strängar

0 Den tomma strängen är en syntaktisk giltig representation av noll i positionsbeteckning (i valfri bas), som inte innehåller inledande nollor . Eftersom den tomma strängen inte har en vanlig visuell representation utanför formell språkteori, representeras talet noll traditionellt av en enda decimalsiffra istället.

Nollfyllt minnesområde, tolkat som en nollterminerad sträng , är en tom sträng.

Tomma textrader visar den tomma strängen. Detta kan ske från två på varandra följande EOL:er , vilket ofta förekommer i textfiler , och detta används ibland i textbearbetning för att separera stycken , t.ex. i MediaWiki .

Se även