delimiter - Cuándo usar los términos "delimitador", "terminador" y "separador"
terminology semantics (8)
¿Cuál es la semántica detrás del uso de las palabras "delimitador", "terminador" y "separador"? Por ejemplo, creo que se producirá un terminador después de cada token y un separador entre cada token. ¿Un delimitador es lo mismo que cualquiera de estos, o son simplemente formas de un delimitador?
SO tiene los tres como etiquetas, pero no son sinónimos el uno del otro. ¿Esto es porque todos son verdaderamente diferentes?
Delimitador
Hay un par de sentidos para delimiter
:
Como el espacio utilizado en las oraciones (frontera).
Un delimitador es como una frontera, existe entre países .
En ese sentido, debe haber dos países para tener una frontera.
Un espacio suele existir entre palabras, pero no al final. El espacio delimita palabras pero noterminate
oraciones (colección de palabras). La frase:Esta es una oración corta.
Tiene cuatro espacios, actúan como delimitadores de palabras. No hay espacio final.
De hecho, generalmente hay dos delimitadores adicionales que no tienen nombre: el principio y el final de la oración. Como los^
y$
utilizados en expresiones regulares para marcar el inicio y el final de una cadena de texto.
Y, en el lenguaje humano, hay signos de puntuación (punto, coma, punto y coma, dos puntos, etc.) que sirven también como delimitadores de palabras (además de espacios)Como se utiliza en las citas (límite).
Una frase como:"Esta es una frase corta".
Está
delimited
(inicio y final) por las comillas dobles (“”
). En este sentido es como "delimitadores equilibrados" ( corchetes equilibrados en Wikipedia ).
Algunos pueden argumentar que la frontier
y el límite son esencialmente los mismos y, en ciertas condiciones, en realidad son correctos.
Separador
Es exactamente lo mismo que el primer sentido (arriba) de un delimitador (una frontera).
Por lo tanto, un separator
es un sinónimo de delimitador en muchos usos informáticos.
Terminador
Demarcar el final de un "campo" individual.
Al igual que las nuevas líneas en un archivo de texto Unix. Cada línea termina con una nueva línea ( /n
).
En un archivo de texto Unix adecuado, todas las líneas se terminan (incluso la última). Los párrafos similares se terminan con una nueva línea en el lenguaje humano.
O, más estrictamente , como el NUL ( /0
) es el terminador de una cadena C :
Una cadena se define como una secuencia contigua de unidades de código terminadas por la primera unidad de código cero (a menudo llamada unidad de código NUL).
Por lo tanto, un carácter terminador también es un delimitador, pero también debe aparecer al final.
Etiquetas
tiene etiquetas solo para delimitadores y separadores
delimiter Un delimitador es una secuencia de uno o más caracteres utilizados para especificar el límite entre regiones independientes e independientes en texto sin formato u otras secuencias de datos.
separator Un carácter que separa partes de una cadena.
La etiqueta de terminación solo se aplica a un emulador de terminal de shell:
terminator Terminador es un emulador de terminal GPL.
Y, sí, delimitador y separador son muchas veces equivalentes.
excepto los paréntesis, llaves, corchetes y delimitadores balanceados similares.
"palabra 1", "palabra 2" / NULL
- Las palabras están delimitadas por comillas,
- separados por la coma,
- y todo termina en / NULL.
Esta respuesta está en el contexto de CSV porque todas las respuestas proporcionadas se centran en el idioma inglés en su lugar.
Los delimitadores son todos los elementos mencionados en la especificación CSV dada que describen los límites de las cosas, los separadores son un nombre común para los delimitadores de campo, los terminadores son un nombre común para los delimitadores de registros.
Delimitador es una parte de la especificación de formato CSV, define límites y no tiene que ser un carácter imprimible.
Los terminadores, separadores y calificadores de campo son delimitadores, pero no son necesarios para especificar un formato CSV; por ejemplo, delimitador de 50 columnas significa que cada 50 columnas son un valor; los caracteres de 0 a 49 en cada línea (generalmente con espacios en blanco) son el valor del campo0 y los caracteres de 50-99 son el valor de field1, etc.
El terminador es un delimitador que generalmente se representa mediante Avance de línea ( LF
), Retorno de carro ( CR
) o combinación (por ejemplo, CRLF
) y marca el final de un solo registro CSV.
Separator es un delimitador que está representado por un carácter impreso (por ejemplo, un punto y coma) y marca la división entre los campos CSV, se ha introducido para almacenar valores de longitud dinámicos. Las especificaciones de formato CSV sin separador suelen tener una longitud de campo constante.
El calificador de campo es un delimitador que generalmente se usa en pares en lugar de secuencia de escape, es un carácter imprimible que no está permitido en el valor del campo (a menos que la especificación del formato CSV provea la secuencia de escape) y marca el comienzo y el final de un campo. Se introdujo para almacenar valores que contienen separadores.
La secuencia de escape es un carácter (o un conjunto de caracteres) que marca todo lo que sigue a la secuencia de escape como no significativo y, por tanto, como parte del valor del campo (por ejemplo, la barra diagonal inversa puede especificar el separador inmediatamente siguiente como parte del valor). Esta secuencia puede escapar de uno o varios caracteres.
Interesante pregunta y respuestas. Para resumir, 1) el delimitador marca los "límites" de algo, es decir, principio y / o final; 2) terminador es solo un término especial para "delimitador final"; 3) el separador implica que hay elementos en ambos lados (a diferencia del delimitador).
El mejor ejemplo que puedo pensar para un delimitador de inicio son los marcadores de inicio de comentario en los lenguajes de programación ("#", "//", etc.).
El mejor ejemplo que se me ocurre para un terminador (delimitador final) es el carácter de nueva línea en Unix. Es un nombre inapropiado: siempre termina una línea (posiblemente vacía) pero no siempre comienza una nueva línea, es decir, cuando es el último carácter de un archivo. Quizás un mejor ejemplo común sea el período simple para las oraciones.
El mejor ejemplo que se me ocurre para un separador es la coma simple. Tenga en cuenta que la coma nunca aparece en inglés sin texto tanto antes como después de ella.
Es interesante observar que ninguno de estos está necesariamente limitado a un solo carácter. De hecho, awk (o tal vez solo gawk?) En Unix permite que FS (separador de campo) sea cualquier expresión regular.
Además, aunque "cualquier cantidad de espacio en blanco que no sea cero" se considera un "delimitador de palabras" en, por ejemplo, el comando wc, también hay especificadores de "límite de palabra" de ancho cero en las expresiones regulares (por ejemplo, / b). Es interesante reflexionar sobre si dichos elementos / límites de ancho cero también podrían considerarse "delimitadores". Tiendo a pensar que no (demasiado de un estiramiento).
Los terminadores son separadores cuando comienzas con vacío. A B C; es en realidad A; B; C; vacío.
Técnicamente, un delimitador va entre las cosas, tal vez para decirle dónde termina un campo y comienza otro, como en un archivo de valores separados por comas (CSV).
Un terminador va al final de algo, terminando la línea / entrada / lo que sea.
Un separador puede ser un delimitador o cualquier otra cosa que separe las cosas. Considere los espacios entre palabras en el idioma inglés, por ejemplo.
Podría argumentar que un carácter de nueva línea es un terminador de línea, un delimitador de líneas o algo que separa dos líneas. Por esta razón, hay algunos caracteres diferentes de tipo de nueva línea en la especificación Unicode.
Un delimitador es uno o dos marcadores que muestran el comienzo y el final de algo. Se necesitan porque no sabemos cuánto durará ese "algo". Podemos tener: 1. un solo delimitador , o 2. un par de delimitadores de pares
-
[a, b, c, d, e]
cada coma (,
) es un solo delimitador . Los corchetes izquierdo y derecho, ([
,]
) son delimitadores de pares . -
"hello"
, los dos símbolos de comillas ("
) son delimitadores de pares
Un separador es un sinónimo de "delimitador", pero desde mi experiencia generalmente se refiere a los delimitadores de campo . Un delimitador de campo actúa como un divisor entre un campo y el que lo sigue, por lo que se puede considerar como "separarlos".
-
<file1>␜<file2>␜<file3>
, el carácter separador de archivos (␜
), a pesar de que explícitamente el nombre que tiene "separador", es tanto un delimitador como un separador
Un terminador marca el final de un grupo de cosas, otra vez necesario porque no sabemos cuánto tiempo es.
-
abdefa/0
, aquí el carácter nulo/0
es un terminador que nos dice que la cadena ha finalizado. -
foo/n
, aquí el carácter de nueva línea/n
es un terminador que nos dice que la línea ha finalizado.
Los términos, delimitador, separador se originan a partir de la idea clásica de almacenamiento, conceptualmente, se compone de archivos, registros y campos (un archivo tiene muchos registros, un registro tiene muchos campos). En este contexto, un delimitador único y los delimitadores de pares pueden denominarse delimitadores de registro y delimitadores de campo . Debido a la importancia histórica de la taxonomía de archivos-registros-campo, estos términos tienen un uso más generalizado (consulte la página de Wikipedia para Wikipedia''s ).
A continuación se muestran dos archivos, cada uno con tres registros y cada registro tiene cuatro campos:
martin,rodgers,33,28000/n timothy,byrd,22,25000/n marion,summers,35,37000/n === lucille,rowe,28,33000/n whitney,turner,24,19000/n fernando,simpson,35,40900/n
Aquí, y
/n
como sabemos son delimitadores individuales, pero también pueden llamarse delimitadores de registro y delimitadores de campo respectivamente.
Para estructuras anidadas complejas, un terminador también puede ser un delimitador / separador (no son definiciones mutuamente excluyentes). Del ejemplo anterior, el marcador ===
desde dentro de un archivo podría considerarse un terminador ( es el final del archivo ). Pero cuando observamos muchos archivos, el ===
actúa como un delimitador / separador.
Considere líneas en un archivo UNIX
This is line 1/n This is line 2/n This is line 3/n
Las nuevas líneas son ambos terminadores (nos dicen dónde termina la cadena) y son delimitadores (nos dicen dónde comienza y termina cada línea). De Wikipedia :
Dos formas de ver las nuevas líneas, que son autoconsistentes, son que las nuevas líneas sean líneas separadas o que terminen líneas.
Realmente solo tendrá que decir "terminador" cuando esté hablando en un elemento individual (solo una cadena 1234/0
, solo una línea abcd/n
, etc.) - y no estará claro si el terminador en este contexto también podría ser un delimitador en una estructura padre más compleja.
Un delimitador denota los límites de algo, dónde comienza y dónde termina. Por ejemplo:
"this is a string"
tiene dos delimitadores, los cuales son el carácter de comillas dobles. Los delimitadores indican qué es parte de la cosa y qué no lo es.
Un separador distingue dos cosas en una secuencia:
one, two
1/t2
code(); // comment
La función de un separador es demarcar dos entidades distintas para que puedan distinguirse. (Tenga en cuenta que digo "dos" porque en ciencias de la computación generalmente estamos hablando de procesar una secuencia lineal de caracteres).
Un terminador indica el final de una secuencia. En un CSV, puede pensar que la nueva línea termina el registro en una línea o que separa un registro de la siguiente.
Los límites de token a menudo se denotan por un cambio en las clases de sintaxis:
foo()
probablemente sería tokenised como word(foo)
, lparen
, rparen
; no hay ningún delimitador explícito entre los tokens, pero un tokenizer reconocería el cambio en las clases de gramática entre caracteres alfa y de puntuación.
Las categorías no son completamente distintas. Por ejemplo:
[red, green, blue]
podría (según su sintaxis) ser una lista de tres elementos; los corchetes delimitan la lista y el corchete derecho termina la lista y marca el final de la ficha blue
.
En cuanto al uso de SO de esos términos como etiquetas, son solo eso: etiquetas para indicar el tema de una pregunta. No hay un solo vocabulario controlado unificado para las etiquetas; Cualquier persona con suficiente karma puede agregar una nueva etiqueta. Existen suficientes diferencias en la terminología que nunca podría tener un solo vocabulario de etiquetas controlado en todos los temas que cubre SO.