Articulo de referencia

Cadena vacía

En la teoría del lenguaje formal , la cadena vacía , también conocida como palabra vacía o cadena nula , es la única cadena de longitud cero. Teoría formal Formalmente, una cade...

En la teoría del lenguaje formal , la cadena vacía , también conocida como palabra vacía o cadena nula , es la única cadena de longitud cero.

Teoría formal

Formalmente, una cadena es una secuencia finita y ordenada de caracteres como letras, dígitos o espacios. La cadena vacía es el caso especial en el que la secuencia tiene longitud cero, por lo que no contiene símbolos. Solo existe una cadena vacía, ya que dos cadenas solo se diferencian si tienen longitudes distintas o secuencias de símbolos diferentes. En los tratamientos formales, [ 1 ] la cadena vacía se denota con ε o, a veces, con Λ o λ .

La cadena vacía no debe confundirse con el lenguaje vacío , que es un lenguaje formal (es decir, un conjunto de cadenas) que no contiene ninguna cadena, ni siquiera la cadena vacía.

La cadena vacía tiene varias propiedades:

  • |ε| = 0. Su longitud de cadena es cero.
  • ε ⋅ s = s ⋅ ε = s. La cadena vacía es el elemento neutro de la operación de concatenación . El conjunto de todas las cadenas forma un monoide libre con respecto a ⋅ y ε.
  • ε R = ε. La inversión de la cadena vacía produce la cadena vacía, por lo que la cadena vacía es un palíndromo .
  • dos:PAG(do){\displaystyle \forall c\in s:P(c)}Las afirmaciones que se refieren a todos los caracteres de una cadena son trivialmente verdaderas .
  • La cadena vacía precede a cualquier otra cadena en el orden lexicográfico , porque es la más corta de todas las cadenas. [ 2 ]

En las gramáticas libres de contexto , una regla de producción que permite que un símbolo produzca la cadena vacía se conoce como una ε-producción, y se dice que el símbolo es "anulable".

Uso en lenguajes de programación

En la mayoría de los lenguajes de programación , el término "cadena" suele referirse a instancias de un tipo de dato , por lo que constituye un concepto distinto al de la teoría formal. Estas cadenas se almacenan normalmente en direcciones de memoria distintas y, por lo tanto, poseen identidad. Así, las representaciones de una misma cadena formal (por ejemplo, la cadena vacía) pueden almacenarse en dos o más ubicaciones de memoria y pueden considerarse nombres de la cadena vacía formal.

De esta forma, podría haber múltiples representaciones de la cadena vacía en memoria, a diferencia de la definición teórica formal, que solo contempla una posible cadena vacía. Sin embargo, una función de comparación de cadenas indicaría que todas estas representaciones son iguales entre sí.

Incluso una cadena de longitud cero puede requerir memoria para su almacenamiento, dependiendo del formato utilizado. En la mayoría de los lenguajes de programación, la cadena vacía se distingue de una referencia nula (o puntero nulo) porque una referencia nula no apunta a ninguna cadena, ni siquiera a la cadena vacía. La cadena vacía es una cadena válida, sobre la cual deberían funcionar la mayoría de las operaciones de cadena. Algunos lenguajes tratan algunos o todos los siguientes elementos de forma similar: cadenas vacías, referencias nulas, el entero 0, el número de coma flotante 0, el valor booleano falso , el carácter ASCII NUL u otros valores similares.

La cadena vacía se representa normalmente de forma similar a otras cadenas. En implementaciones con caracteres de terminación de cadena ( cadenas terminadas en nulo o líneas de texto plano), la cadena vacía se indica mediante el uso inmediato de este carácter.

En distintos lenguajes de programación, existen diferentes funciones, métodos, macros o expresiones idiomáticas para comprobar si una cadena está vacía.

Representaciones de la cadena vacía

La cadena vacía es una representación sintácticamente válida del cero en notación posicional (en cualquier base), que no contiene ceros iniciales . Dado que la cadena vacía no tiene una representación visual estándar fuera de la teoría del lenguaje formal, el número cero se representa tradicionalmente con un solo dígito decimal, el 0 .

El área de memoria rellena de ceros, interpretada como una cadena terminada en nulo , es una cadena vacía.

Las líneas de texto vacías muestran la cadena vacía. Esto puede ocurrir debido a dos saltos de línea consecutivos , como suele suceder en los archivos de texto . A veces se utiliza en el procesamiento de texto para separar párrafos , por ejemplo, en MediaWiki .

Véase también

Referencias

  1. Corcoran, John; Frank, William; Maloney, Michael (1974). "Teoría de cuerdas". Journal of Symbolic Logic . 39 (4): 625– 637. doi : 10.2307/2272846 . JSTOR 2272846 . S2CID 2168826 .  
  2. "Apuntes de clase de CSE1002 – Lexicográficos" (PDF) . Archivado del original (PDF) el 29/12/2009 . Consultado el 27/03/2010 .
  3. Hay dos maneras de crear "cadenas vacías" en R; la otra se enumera aquí como"".character(0)crea vectores de caracteres vacíos, que darán como resultado 0 cuando se cuenten.
  4. Otra forma de crear una cadena vacía es multiplicando una cadena por 0 o por un número entero negativo.
  5. "Cadena en std::string - Rust" . doc.rust-lang.org . Consultado el 30/11/2022 .
  6. "about_Quoting_Rules – PowerShell" . Microsoft Learn . Archivado del original el 14 de agosto de 2025. Consultado el 26 de agosto de 2025. PowerShell trata las comillas tipográficas, también llamadas comillas curvas o tipográficas, como comillas normales para cadenas de texto. No utilice comillas tipográficas para encerrar cadenas de texto.
  7. Todas las comillas «inteligentes» funcionan como comillas de apertura y cierre en cualquier combinación, excepto que las comillas simples deben ir acompañadas de comillas simples y las comillas dobles de comillas dobles. Por ejemplo,"Hello, world„es válido. No se admiten las comillas angulares. Tenga en cuenta que la comilla simple baja de estilo alemán que se muestra aquí es U+201A SINGLE LOW-9 QUOTATION MARK ; el carácter de aspecto similar U+002C , COMMA no funciona como comilla. La documentación oficial de PowerShell recomienda usar comillas rectas. [ 6 ]