Quand utiliser les termes "délimiteur", de "terminator" et "séparateur"

Quelle est la sémantique derrière l'usage des mots "délimiteur", "terminateur" et "séparateur"? Par exemple, je crois qu'un terminator aurait lieu après chaque jeton et un séparateur entre chaque jeton. Est un délimiteur le même que l'un de ces, ou sont-ils simplement des formes d'un séparateur?

il en est de même pour les trois étiquettes, mais elles ne sont pas synonymes l'une de l'autre. Est-ce parce qu'ils sont tous vraiment différents?

17
demandé sur ネロク 2012-02-02 23:36:50

7 réponses

techniquement, un délimiteur va entre les choses, peut-être pour vous dire où un champ se termine et un autre commence, comme dans un fichier de valeurs séparées par des virgules (CSV).

un terminator va à la fin de quelque chose, terminant la ligne/input/whatever.

un séparateur peut être un délimiteur ou n'importe quoi d'autre qui sépare les choses. Considérer les espaces entre les mots dans la langue anglaise par exemple.

on pourrait soutenir qu'un personnage de newline est une ligne terminator, un délimiteur de lignes ou quelque chose qui sépare deux lignes. Pour cette raison, il y a quelques caractères de type newline différents dans la spécification Unicode.

11
répondu IanGilham 2012-02-02 19:44:03

Un délimiteur indique les limites de quelque chose, où il commence et où il finit. Par exemple:

"this is a string"

a deux délimiteurs, qui se trouvent être le caractère double citation. Les délimiteurs indiquent ce qui fait partie de la chose, et ce qui ne l'est pas.

un séparateur distingue deux choses dans une séquence:

one, two
1\t2
code();  // comment

le rôle d'un séparateur est de délimiter deux entités distinctes pour qu'elles puissent être distinguées. (Notez que je dis "deux", parce qu'en informatique nous parlons généralement du traitement d'une séquence linéaire de caractères).

Un terminator indique la fin d'une séquence. Dans un CSV, vous pourriez penser à la nouvelle ligne comme se terminant le disque sur une ligne, ou comme séparant un disque de la prochaine.

les limites des Tokens sont souvent dénotées par un changement dans les classes de syntaxe:

foo()

serait probablement tokenised word(foo),lparen,rparen - il n'y a pas de délimiteurs explicites entre les des jetons, mais un tokenizer reconnaîtrait le changement de classes grammaticales entre les caractères alpha et les caractères de ponctuation.

Les catégories ne sont pas complètement distinctes. Par exemple:

[red, green, blue]

pourrait (selon votre syntaxe) être une liste de trois éléments; les crochets délimitent la liste et le crochet de droite termine la liste et marque la fin du blue jeton.

pour ce qui est de L'utilisation de ces termes en tant que tags, ils sont simplement: tags pour indiquer le sujet d'un question. Il n'y a pas un seul vocabulaire contrôlé unifié pour les tags; quiconque a suffisamment de karma peut ajouter une nouvelle tags. Il existe suffisamment de différences terminologiques pour qu'il n'y ait jamais un seul vocabulaire contrôlé d'étiquette pour tous les sujets couverts.

18
répondu Ian Dickinson 2012-02-02 21:14:33

délimiteur est un ou deux marqueurs qui indiquent le début et la fin de quelque chose. Ils sont nécessaires parce que nous ne savons pas combien de temps ce "quelque chose" sera. On peut avoir soit: 1. seul délimiteur, ou 2. une paire de délimiteurs de paires

  • [a, b, c, d, e] chaque virgule (,) est un seul délimiteur. La gauche et la droite, entre parenthèses, ([,]) sont délimiteurs de paires.
  • "hello", les deux symboles de citation (") délimiteurs de paires

séparateur est synonyme de" délimiteur", mais d'après mon expérience, il se réfère habituellement à délimiteurs de champ. Un séparateur de champs agit comme un séparateur entre un champ et le suivant, qui est pourquoi est peut être bien comme "séparation".

  • <file1>␜<file2>␜<file3>, le fichier caractère séparateur (), malgré explicitement le nom ayant "separator", est à la fois un délimiteur et séparateur

terminator marque la fin d'un groupe de choses, encore nécessaires parce que nous ne savons pas combien de temps il est.

  • abdefa ici le caractère null est un terminator cela nous indique que la chaîne est terminée.
  • foo\n ici le caractère de saut de ligne \n est un terminator cela nous indique que la ligne est terminée.

les Termes, délimiteur, séparateur proviennent de l'idée classique du stockage, conceptuellement, étant composé de fichiers, dossiers, et les champs, (un fichier a de nombreux records, un enregistrement a de nombreux domaines). Dans ce contexte, un seul délimiteur et deux délimiteurs peuvent être appelés délimiteurs d'enregistrement et champ les délimiteurs. En raison de l'importance historique de la taxinomie fichiers-dossiers-champs, ces termes ont une utilisation plus répandue (voir la page Wikipédia pour Délimiteur).

  • ci-Dessous deux fichiers, chacun avec trois enregistrements avec chaque enregistrement de quatre champs:

    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
    

    Ici , et \n comme nous le savons, ce sont des délimiteurs simples, mais ils peuvent aussi être appelés délimiteurs d'enregistrement et champ les délimiteurs respectivement.


pour les structures complexes imbriquées, un terminateur peut aussi être un délimiteur/séparateur (ce ne sont pas des définitions mutuellement exclusives). À partir de l'exemple précédent, le === marqueur de l'intérieur, un fichier peut être considéré comme un terminator (c'est la fin du fichier). Mais quand nous regardons de nombreux fichiers, le === agit comme un séparateur/séparateur.

  • Examiner les lignes UNIX le fichier

    This is line 1\n
    This is line 2\n
    This is line 3\n
    

    Les retours à la ligne sont à la fois terminateurs (ils nous disent où la chaîne se termine) et sont délimiteurs (ils nous disent où chaque ligne commence et se termine). À partir de Wikipédia:

    deux façons de voir les nouvelles lignes, qui sont toutes deux auto-cohérentes, sont que les nouvelles lignes séparent les lignes ou qu'elles se terminent par des lignes.

il suffit de dire "terminator"" quand vous parlez à un élément individuel, (juste une chaîne 1234, juste une ligne abcd\n, etc.) -- et il ne sera pas clair si le terminator dans ce contexte pourrait aussi être un délimiteur dans une structure mère plus complexe.

2
répondu James Lawson 2017-02-08 10:10:35

questions et réponses intéressantes. En résumé, 1) délimiteur marque les "limites" de quelque chose, c.-à-d. le début et/ou la fin; 2) terminator est juste un terme spécial pour "délimiteur de fin"; 3) séparateur implique qu'il y a des éléments sur les deux côtés de celui-ci (contrairement à délimiteur).

le meilleur exemple que je puisse imaginer pour un délimiteur de démarrage est les marqueurs start-comment dans les langages de programmation("#", "//", etc.).

le meilleur exemple que je puisse imaginer pour un terminator (délimiteur de fin) est la nouvelle ligne personnage dans Unix. C'est un terme erroné -- il termine toujours une ligne (éventuellement vide) mais ne démarre pas toujours une nouvelle ligne, c'est-à-dire quand c'est le dernier caractère d'un fichier. Peut-être un meilleur exemple commun est la période simple pour les phrases.

le meilleur exemple que je puisse imaginer pour un séparateur est la virgule simple. Notez que la virgule n'apparaît jamais en anglais sans texte avant et après.

Intéressant de noter qu'aucun de ces est nécessairement limitée à un seul caractère. Dans fait awk (ou peut-être seulement gawk?) dans Unix permet à FS (field separator) d'être n'importe quel regexp.

en outre, bien que" toute quantité non nulle d'espace "soit considéré comme un" délimiteur de mots "dans la commande wc, il y a aussi des spécificateurs de" limite de mots " de largeur zéro dans regexps (par exemple \B). Il est intéressant de se demander si de tels éléments ou limites de largeur nulle pourraient également être considérés comme des "délimiteurs". J'ai tendance à penser que non (trop d'un tronçon).

0
répondu Jeff Y 2015-09-26 17:24:53

les terminateurs sont des séparateurs lorsque vous commencez avec vide. A;b;c;est en fait A; B; C; vide.

0
répondu Samuel Danielson 2016-03-10 05:58:50

cette réponse est dans le contexte de CSV parce que toutes les réponses fournies se concentrent plutôt sur la langue anglaise.

Délimiteurs ce sont tous des éléments mentionnés dans le CSV spécifications qui décrivent les limites de choses, séparateurs est un nom commun pour le champ des délimiteurs terminateurs est un nom commun pour les séparateurs d'enregistrements.


le délimiteur fait partie de la spécification de format CSV, il définit les limites et ne doit pas être un personnage imprimable.

les terminateurs, les séparateurs et les qualificatifs de champ sont des délimiteurs, mais ils ne sont pas nécessaires pour spécifier un format CSV, p. ex. 50 colonnes délimiteur signifie que chaque 50 colonnes est une valeur - les caractères de 0 à 49 dans chaque ligne (habituellement remplis avec de l'espace blanc) sont la valeur de la zone 0 et les caractères de 50 à 99 sont la valeur de la Zone 1, etc.

Terminator est un délimiteur qui est habituellement représenté soit par des lignes (LF), le Transport Retour (CR) ou une combinaison (par exemple CRLF) et marque la fin de l'enregistrement unique CSV.

Separator est un délimiteur qui est représenté par un caractère imprimé (par exemple un point-virgule) et marque la division entre les champs CSV, il a été introduit pour stocker les valeurs de longueur dynamique. Les spécifications de format CSV sans séparateur ont généralement une longueur de champ constante.

le qualificatif de champ est un délimiteur habituellement utilisé en paire au lieu de séquence d'évasion, il est imprimable caractère qui n'est pas autorisé dans le champ Valeur (à moins que la spécification de format CSV fournit la séquence d'échappement) et marque le début et la fin d'un champ, il a été introduit pour stocker des valeurs contenant des séparateurs.

Escape sequence est un caractère (ou un ensemble de caractères) qui marque tout ce qui suit la séquence d'échappement comme non significatif et donc comme une partie de la valeur de champ (par exemple backslash pourrait spécifier le séparateur immédiatement après comme une partie de la valeur.) Cette séquence peut échapper à un ou plusieurs caractères.

0
répondu cprn 2016-03-16 18:00:31

"mot 1", "mot 2" \NULL

  1. les mots sont délimités par des guillemets,
  2. séparés par la virgule,
  3. et le tout se termine par \NULL.
0
répondu Zsolt Szilagy 2017-02-08 10:17:16