Когда использовать термины "разделитель", "Терминатор" и " разделитель"
какова семантика использования слов "разделитель", "Терминатор"и " разделитель"? Например, я считаю, что Терминатор будет происходить после каждого токена и разделителя между каждым токеном. Является ли разделитель таким же, как и любой из них, или это просто формы разделителя?
все три как теги, но они не являются синонимами друг друга. Это потому, что все они действительно разные?
7 ответов
технически разделитель идет между вещами, возможно, для того, чтобы сказать вам, где заканчивается одно поле и начинается другое, например, в файле с разделителями-запятыми (CSV).
Терминатор идет в конце чего-то, завершая линию/вход/что угодно.
разделитель может быть разделителем или чем-либо еще, что разделяет вещи. Рассмотрим, например, пробелы между словами в английском языке.
вы можете возразить, что символ новой строки Терминатор, разделитель линий или что-то, что разделяет две линии. По этой причине в спецификации Unicode есть несколько различных символов типа новой строки.
разделитель обозначает границы чего-либо, где оно начинается и где заканчивается. Например:
"this is a string"
имеет два разделителя, оба из которых являются символом двойной кавычки. Разделители указывают, что является частью вещи, а что нет.
разделитель различает две вещи в последовательности:
one, two
1\t2
code(); // comment
роль разделителя заключается в разграничении двух различных сущностей, чтобы их можно было различать. (Обратите внимание, что я говорю "Два", потому что в информатика мы обычно говорим об обработке линейной последовательности символов).
Терминатор указывает конец последовательности. В CSV можно считать, что новая строка завершает запись в одной строке или отделяет одну запись от другой.
границы токенов часто обозначаются изменением классов синтаксиса:
foo()
вероятно tokenised как word(foo)
, lparen
, rparen
- нет никаких явных разделителей между токены, но токенизатор распознает изменение классов грамматики между Альфа-и пунктуационными символами.
категории не совсем различны. Например:
[red, green, blue]
может (в зависимости от вашего синтаксиса) быть список из трех элементов; скобки разделяют список, а правая скобка завершает список и отмечает конец blue
маркер.
Что касается использования этих терминов в качестве тегов, они просто: теги, чтобы указать тему вопрос. Для тегов нет единого единого контролируемого словаря; любой, у кого достаточно кармы, может добавить новый тег. Существует достаточно различий в терминологии, чтобы вы никогда не могли иметь один управляемый словарь тегов во всех темах, которые так охватывают.
A разделитель это один или два маркера, которые показывают начало и конец чего-то. Они нужны, потому что мы не знаем, как долго это "что-то" будет. Мы можем иметь: 1. а один разделитель, или 2. пара пара-разделители
-
[a, b, c, d, e]
каждой запятой (,
) является один разделитель. Левая и правая скобки ([
,]
) являются пара-разделители. -
"hello"
, два символа кавычки ("
) составляют пара-разделители
A разделитель является синонимом "разделителя", но из моего опыта он обычно относится к поле разделители. Разделитель поля действует как разделитель между одним полем и следующим за ним, поэтому его можно рассматривать как "разделение".
-
<file1>␜<file2>␜<file3>
, в файл разделитель (␜
), несмотря на явное имя, имеющее "разделитель", является как разделитель и разделитель
A Терминатор отмечает конец группы вещей, снова нужны, потому что мы не знаем, как долго это.
-
abdefa
, вот нулевой символэто Терминатор говорит нам, что строка закончилась.
-
foo\n
здесь символ новой строки\n
это Терминатор это говорит нам, что линия закончилась.
термины, разделитель, разделитель происходят из классической идеи хранения, концептуально, состоящей из файлы, записи и поля, (файл имеет много записей, запись имеет много полей). В этом контексте один разделитель и разделители пар могут называться запись разделители и поле разделители. Из-за исторического значения таксономии файлов-записей-полей эти термины имеют более широкое использование (см. страницу Википедии для разделитель).
-
Ниже приведены два файла, каждый с тремя записями с каждой записью, имеющей четыре поля:
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
здесь
,
и\n
как мы знаем, являются одиночными разделителями, но их также можно назвать запись разделители и поле разделители соответственно.
для сложных вложенных структур Терминатор также может быть разделителем / разделителем (они не являются взаимоисключающими определениями). Из предыдущего примера,===
маркер изнутри файла можно считать Терминатором (это конец файла). Но когда мы смотрим на многие файлы,===
действует как разделитель/сепаратор.
-
рассмотрим строки в UNIX файл
This is line 1\n This is line 2\n This is line 3\n
новые строки-это оба разделители (они говорят нам, где строка заканчивается) и разделители (они говорят нам, где каждая строка начинается и заканчивается). От Википедия:
два способа просмотра новых строк, оба из которых являются самосогласованными, заключаются в том, что новые строки либо разделяют строки, либо заканчивают строки.
на самом деле вам нужно только сказать "Терминатор", когда вы говорите на одном отдельном элементе, (только одна строка 1234
, только одна строка abcd\n
, etc.) -- и будет неясно, может ли Терминатор в этом контексте также быть разделителем в более сложной родительской структуре.
интересный вопрос и ответы. Подводя итог, 1) разделитель отмечает "пределы" чего-либо, т. е. начало и/или конец; 2) Терминатор-это просто специальный термин для "конечного разделителя"; 3) разделитель влечет за собой наличие элементов по обе стороны от него (в отличие от разделителя).
лучший пример, который я могу придумать для разделителя start, - это маркеры start-comment на языках программирования("#", "//", etc.).
лучший пример, который я могу придумать для Терминатора (конечный разделитель), - это новая строка персонаж в Unix. Это неправильное название - он всегда завершает (возможно, пустую) строку, но не всегда начинает новую строку, т. е. когда это последний символ в файле. Возможно, лучшим распространенным примером является простой период для предложений.
лучший пример, который я могу придумать для разделителя, - это простая запятая. Обратите внимание, что запятая никогда не появляется на английском языке без текста как до, так и после него.
интересно отметить, что ни один из них не ограничивается один-характер. В факт awk (или, может быть, только gawk?) в Unix позволяет FS (разделитель полей) быть любым регулярным выражением.
кроме того, хотя "любое ненулевое количество пробелов" считается "разделителем слов", например, в команде wc, в регулярных выражениях также есть спецификаторы "границы слова" нулевой ширины (например, \b). Интересно задуматься, могут ли такие элементы/границы нулевой ширины также считаться "разделителями". Я склонен думать, что нет (слишком много стрейч).
этот ответ находится в контексте CSV, потому что все предоставленные ответы сосредоточены на английском языке.
разделители все элементы, упомянутые в данной спецификации CSV, которые описывают границы вещи, разделители является общим именем для разделителей полей,разделители является общим именем для разделителей записей.
разделитель является частью спецификации формата CSV, он определяет границы и не обязательно быть печатным персонажем.
Терминаторы, разделители и квалификаторы полей являются разделителями, но не обязательно указывать формат CSV, например, разделитель 50 столбцов означает, что каждые 50 столбцов являются одним значением-символы от 0-49 в каждой строке (обычно заполненные пробелом) являются значением field0, а символы от 50-99-значением field1 и т. д.
Terminator-это разделитель, который обычно представлен либо лентой (LF
), Возврат Каретки (CR
) или комбинация (например,CRLF
) и отмечает конец одной записи CSV.
Separator-это разделитель, который представлен печатным символом (например, точкой с запятой) и отмечает разделение между полями CSV, он был введен для хранения динамических значений длины. Спецификации формата CSV без разделителя обычно имеют постоянную длину поля.
Field qualifier-это разделитель, обычно используемый в парах вместо escape-последовательности, это печатаемый символ, который не допускается в значении поля (если данная спецификация формата CSV не предоставляет escape-последовательность) и отмечает начало и конец поля, оно было введено для хранения значений, содержащих разделители.
Escape-последовательность-это символ (или набор символов), который помечает все, что следует за escape-последовательностью, как несущественное и поэтому как часть значения поля (например, обратная косая черта может указывать следующий разделитель как часть значения). Эта последовательность может избежать одного или нескольких символов.
"слово 1", "Слово 2" \NULL
- слова разделены кавычками,
- разделены запятыми,
- и все это завершается \NULL.