Stringa vuota
![Niente fonti!](http://upload.wikimedia.org/wikipedia/commons/thumb/6/64/Question_book-4.svg/45px-Question_book-4.svg.png)
Nella teoria del linguaggio formale, la stringa vuota o parola vuota è la stringa (unica possibile) di lunghezza zero.
Teoria formale
Formalmente, una stringa è una sequenza finita e ordinata di caratteri come lettere, cifre o spazi. La stringa vuota è il caso speciale in cui la sequenza ha lunghezza zero, quindi non ci sono simboli nella stringa. C'è solo una stringa vuota, perché due stringhe sono diverse solo se hanno lunghezze diverse o una diversa sequenza di simboli. Nella teoria formale[1], la stringa vuota è indicata con ε o talvolta con Λ o λ.
La stringa vuota non deve essere confusa con il linguaggio vuoto ∅, che è un linguaggio formale (cioè un insieme di stringhe) che non contiene stringhe, nemmeno la stringa vuota.
La stringa vuota ha diverse proprietà:
- |ε| = 0. La sua lunghezza è zero.
- ε ⋅ s = s ⋅ ε = s. La stringa vuota è l'elemento identità dell'operazione di concatenazione. L'insieme di tutte le stringhe forma un monoide libero rispettando ⋅ e ε.
- εR = ε. L'operazione di inversione della stringa vuota produce la stringa vuota.
- La stringa vuota precede qualsiasi altra stringa in ordine lessicografico, poiché è la più breve di tutte le stringhe.[2]
Nelle grammatiche libere dal contesto, una regola di produzione che consente a un simbolo di produrre la stringa vuota è nota come ε-produzione e il simbolo è detto "annullabile".
Utilizzo nei linguaggi di programmazione
Nella maggior parte dei linguaggi di programmazione, le stringhe sono un tipo di dati. Le stringhe sono in genere archiviate in posizioni di memoria distinte. Ciò significa che la stessa stringa (ad esempio la stringa vuota) potrebbe essere archiviata in due o più posizioni di memoria.
In questo modo potrebbero esserci più stringhe vuote in memoria, in contrasto con la definizione data dalla teoria formale, per la quale esiste una sola possibile stringa vuota. Tuttavia, l'applicazione di una funzione di confronto tra stringhe indicherebbe che tutte queste stringhe vuote sono uguali tra loro.
Anche una stringa di lunghezza zero può richiedere memoria per essere memorizzata, a seconda del formato utilizzato. Nella maggior parte dei linguaggi di programmazione, la stringa vuota è distinta da un riferimento nullo (o puntatore nullo) perché un riferimento nullo non punta proprio a nessuna stringa, nemmeno alla stringa vuota. La stringa vuota rimane una stringa legittima, su cui dovrebbe funzionare la maggior parte delle operazioni sulle stringhe. Alcuni linguaggi trattano alcuni o tutti i seguenti in modi simili: stringhe vuote, riferimenti nulli, l'intero 0, il numero a virgola mobile 0, il valore booleano false, il carattere ASCII NUL o altri valori simili.
La stringa vuota è solitamente rappresentata in modo simile ad altre stringhe. Nelle implementazioni con il carattere di terminazione (stringhe null-terminate o righe di testo normali), la stringa vuota è indicata dall'uso immediato di questo carattere di terminazione.
rappresentazione λ | Linguaggi di programmazione |
---|---|
"" | C, C++, Go, Haskell, Java, JavaScript, Julia, Lua, Objective-C (come una stringa C), OCaml, Perl, PHP, Python, Ruby, Scala, Standard ML, Swift, Tcl, Visual Basic .NET |
'' | APL, Delphi, JavaScript, Matlab, Pascal, Perl, PHP, Python, Ruby, Smalltalk, SQL |
{'\0'} | C, C++, Objective-C (come stringa C) |
std::string() | C++ |
""s | C++ (dallo standard 2014) |
@"" | Objective-C (come oggetto NSString costante) |
[NSString string] | Objective-C (come nuovo oggetto NSString ) |
q(), qq() | Perl |
str() | Python |
%{} </br> % ( ) | Ruby |
string. Empty | C#, Visual Basic .NET |
String.make 0 '-' | OCaml |
{} | Tcl |
[[]] | Lua |
Esempi di stringhe vuote
La stringa vuota è una rappresentazione sintatticamente valida di zero nella notazione posizionale (in qualsiasi base), che non contiene zeri iniziali. Dal momento che a stringa vuota non ha una rappresentazione visiva standard al di fuori della teoria del linguaggio formale, il numero zero è invece tradizionalmente rappresentato da una singola cifra decimale 0.
L'area di memoria riempita con soli zero, interpretata come una stringa null-terminata, è una stringa vuota.
Le righe di testo vuote mostrano la stringa vuota. Ciò può verificarsi da due EOL consecutivi, come spesso accade nei file di testo, e talvolta viene utilizzato nell'elaborazione del testo per separare i paragrafi, ad esempio in MediaWiki.
Note
- ^ (EN) John Corcoran, William Frank e Michael Maloney, String theory (PDF), in Journal of Symbolic Logic, vol. 39, n. 4, 1974, pp. 625–637, DOI:10.2307/2272846.
- ^ (EN) Ryan Stansifer, CSE1002 Lecture Notes – Lexicographic (PDF), su cs.fit.edu. URL consultato il 4 giugno 2021 (archiviato dall'url originale il 29 dicembre 2009).
Voci correlate
- Set vuoto
- Stringa null-terminata
- Teoria della concatenazione
![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Computer_n_screen.svg/24px-Computer_n_screen.svg.png)