Меряемся концами строк: terminator vs separator

Здесь обсуждаются темы, косвенно связанные с Far.
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Меряемся концами строк: terminator vs separator

Post by HaRT »

AleXH wrote:Если я правильно понимаю, то это баг - 0x0D0A в конце файла должны интерпретироваться как пустая строка, но этого не происходит - за пустую строку считаются только 0x0D0A0D0A.
Нет, единственная пара CR-LF в конце файла завершает последнюю непустую строку, а не образует новую пустую; а вот CR-LF-CR-LF — это уже пустая строка в конце файла.
Last edited by HaRT on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Добавлена ссылка на исходную тему
Фар есть инструмент, а не нянька. © 2009 DrKnS
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: Regular Expression Search and Replace (RESearch)

Post by AleXH »

HaRT
Не вижу логики - если стоит <CR><LF>ля-ляля<EOF> никто же не будет отрицать, что "ля-ляля" символы последней строки? - именно так это выглядит в редакторе. Но важнее то, что Line Feed по определению создаёт новую строку, так как все символы за ним есть символы новой строки. Стало быть <CR><LF><EOF> - пустая строка.
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Regular Expression Search and Replace (RESearch)

Post by HaRT »

AleXH
Да вы, батенька, теоретик. Что ж, извольте:
CR-LF — это завершение строки (line terminator), а не разделитель строк (lines separator). Строка без терминатора неполноценная (gcc, например, на такую строку выдаёт предупреждение). К счастью, в одном файле такая недо-строка может быть только одна.
Да и из чисто практических соображений чрезвычайно неудобно считать CR-LF-EOL пустой строкой.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Regular Expression Search and Replace (RESearch)

Post by Shmuel »

В редакторе Фара строка рассматривается как последовательность StringText и StringEOL. При замене в редакторе пустой строкой считается сочетание пустого StringText и непустого StringEOL. Следовательно, ля-ля<CR><LF><EOF> пустой строки не содержит.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Regular Expression Search and Replace (RESearch)

Post by John Doe »

...но выглядит в редакторе фара именно как пустая строка.
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: Regular Expression Search and Replace (RESearch)

Post by AleXH »

HaRT
Терминатор говорите? Я как-то всю жизнь полагал, что возвращают каретку в начало для того, что бы начать новую строку от левого поля, а не для того, чтобы закончить предыдущую ))) - для этого переводить каретку нет необходимости. В качестве терминатора <CR> стал использоваться при вводе текста в терминале, но ввод текста, и текстовой файл это разные вещи, мы же говорим о замене в текстовом файле.

Что считает FAR за пустую строку, и как он её определяет это уже к разработчикам. <EOF> включает в себя ещё и функцию <EOL>, и то что лежит между <LF> и <EOL> есть строка, и если она пуста, значит она пуста.
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Regular Expression Search and Replace (RESearch)

Post by HaRT »

AleXH wrote:<EOF> по-сути включает в себя ещё и функцию <EOL>
Чушь!
AleXH wrote:то что лежит между <LF> и <EOL> есть строка
Как я уже отметил, неполноценная строка. Кто такие использует, тот ССЗБ.
Фар есть инструмент, а не нянька. © 2009 DrKnS
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: Regular Expression Search and Replace (RESearch)

Post by AleXH »

Почему чушь? Вы хотите сказать, что конец текстового файла не подразумевает одновременный и конец строки? ;)

Кто такие супер-супер-зе-бест я не знаю :) Но откуда произошли понятия <CR><LF> я помню, а вы замещаете исконный смысл понятий ересью.
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

Re: Regular Expression Search and Replace (RESearch)

Post by Maximus5 »

Я собственно не понимаю о чем спор.
Считается ли строкой то что между <LF> и <EOF>?
Да, считается. Колорер ее красит? Красит. Значит фар говорит, что строка есть, более того, дает с ней что-то делать. Что эта строка содержит? Пустоту. Логика подсказывает, что это пустая строка.
AlexII
Posts: 270
Joined: Mon 10 Apr, 2006 00:53
Location: станица Григорополисская
Has thanked: 147 times
Contact:

Re: Regular Expression Search and Replace (RESearch)

Post by AlexII »

AleXH wrote:Вы хотите сказать, что конец текстового файла не подразумевает одновременный и конец строки?
Не подразумевает.
AleXH wrote:Кто такие супер-супер-зе-бест я не знаю :)
AleXH wrote:Но откуда произошли понятия <CR><LF> я помню, а вы замещаете исконный смысл понятий ересью.
Тут все помнят. А ежели кто не помнит — умеет пользоваться Wikipedia: Newline, Carriage return, End-of-file.

Если следовать Вашей извращённой логике, то «A»+«B\0x0D\0x0A» — это две строки, а не одна.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Regular Expression Search and Replace (RESearch)

Post by DrKnS »

А вот в пустом файле (ну или в пустом редакторе) - сколько строк?
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

Re: Regular Expression Search and Replace (RESearch)

Post by Maximus5 »

AlexII wrote:Если следовать Вашей извращённой логике, то «A»+«B\0x0D\0x0A» — это две строки, а не одна.
Скажу вам по очень большому секрету, что это не одна строка. И даже не две. А три.
Attachments
123.7z
(114 Bytes) Downloaded 120 times
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

Re: Regular Expression Search and Replace (RESearch)

Post by Maximus5 »

DrKnS wrote:А вот в пустом файле (ну или в пустом редакторе) - сколько строк?
По всей видимости она пустая строка ), по крайней мере так написано в статусной строке редактора - "1/1"
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: Regular Expression Search and Replace (RESearch)

Post by AleXH »

Открыв в ЛЮБОМ текстовом редакторе текстовой файл из трёх байтов "310D0A", и нажав курсор вниз мы видим, что он встал на новую строку, но она пока ещё пуста. Удалив последние 0x0D0A, и оставив только 0x31, мы видим, что курсор вниз уже не сдвигается, так как новая строка ещё не создана.
Last edited by AleXH on Tue 27 Sep, 2011 10:58, edited 3 times in total.
2useven10
Posts: 5204
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Re: Regular Expression Search and Replace (RESearch)

Post by 2useven10 »

Всё остальное - измышление (ересь) программиста писавшего компилятор, и решившего "прикрутить" <LF> в качестве терминатора строк.
Post Reply

Return to “Операционные системы, командные оболочки и прочее”