Синтаксис строк

Windows лучше чем Linux! Чем? Ясно же написано — чем Linux!
Раздуй свой холивар сегодня, потому что завтра это может сделать уже кто-то другой!

Какой способ записи строк кажется вам наиболее удобным?

1-ый
5
26%
2-ой
9
47%
3-ий
5
26%
 
Всего голосов : 19

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Синтаксис строк

Сообщение Хакер » 21.07.2007 (Сб) 18:43

Положим, для некоторого полу-скрипта, полу-конфигурационного файла требуется синтаксис для обозначения строк.

Например
Код: Выделить всё
SomeParameter="foo"
SomeOption="bar"


Так получается, что может потребоваться использовать символ 34 (кавычка) в строке.

У меня пока три варианта (кстати, другие варианты принимаются) как избежать проблем парсинга при использовании кавычки:

1) VB-Style. Т.е. SomeOption="Click ""Cancel"" button!"
Мне, если честно, такой способ не нравится.

2) C-Style. Т.е. SomeOption="Click \"Cancel\" button!"
Нравится куда больше чем сп.1. При этом, возможно использование экранирующего слэша для вставки символов по их коду (в т.ч. и юникодных символов).

Но при использовании этого способа придётся обычные обратные слеши экранировать. А это означает, что виндовые пути придётся записывать так:
SomePath="c:\\windows\\system32\\drivers\\foo\\bar\\"
Это мне также жутко не нравится :)

3) HTML-Style. Т.е. SomeOption="Click "Cancel" button!"
Никаких недостатков у этого способа не вижу. К тому же, этот способ записи также позволяет вставить Unicode-символ в строку.
Однако, поскольку полу-конфиги полу-скрипты никакого прямого отношения к HTML не имеют (и пользоваться ими будут люди, скорее всего, далёкие от HTML) - не факт, что способ сам по себе хороший.

Какой из способов кажется вам более привлекательным? С учётом того, что пользователям придётся постоянно иметь дело с этими полу-скриптами полу-конфигами. (Чтобы было легче учитывать, представьте, что один из этих синтаксисов вам бы пришлось постоянно использовать в VB)
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Сообщение Q2W » 21.07.2007 (Сб) 20:12

А как насчёт perl-варианта?
SomeOption="Click \"Cancel\" button!"
SomeOption='Click "Cancel" button!'

SomePath="c:\\windows\\system32\\drivers\\foo\\bar\\"
SomePath='c:\windows\system32\drivers\foo\bar\\'

И с одинарными кавычками:
SomeOption='Click \'Cancel\' button!'

Суть - в одинарных кавычках нужно экранировать только одинарные кавычки и иногда бэкслеш.
Я знаю верный путь

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 21.07.2007 (Сб) 20:13

Увы, нельзя (одинарные кавычки используются для других целей)
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.07.2007 (Сб) 20:16

При третьем способе надо экранировать все амперсенды. Ничем не лучше второго выходит.

Зачем вообще ограничитель строк? Нельзя всё от знака равенства до конца строки считать одним значением? Будет BAT-style :-D
Изображение

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 21.07.2007 (Сб) 20:19

tyomitch
Нельзя.
Пример:
Код: Выделить всё
ext="exe"
file=path + "\data\final" + ext


При третьем способе надо экранировать все амперсенды. Ничем не лучше второго выходит.


Лучше тем, что виндовые пути записываешь как обычно. А амперсанды надо не экранировать, а заменяь на &
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.07.2007 (Сб) 20:34

BAT-style удобен тем, что при типичном использовании не нужно ни ограничителей строк, ни экранирования, ни оператора конкатенации...

ext=exe
file=%path%\data\final%ext%

Да, проценты в строках приходится удваивать.

Мои 2 тиына.
Изображение

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 21.07.2007 (Сб) 20:36

нет :) в данном скриптовом языке есть строковые функции, макросы и множество всяких прелестей, так что подобный синтаксис ну совсем не подходит.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.07.2007 (Сб) 20:43

Ну я же не могу так -- ничего не зная про твой язык, советовать.

Но в батниках тоже есть функции, они как-то справляются с неограниченными строками.

Общая идея -- ограничивать не строки, а всё остальное (переменные, функции и т.п.), потому что в их именах может быть не всё подряд, и можно обойтись без экранирования.
Изображение

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 21.07.2007 (Сб) 20:46

Ну я же не могу так -- ничего не зная про твой язык, советовать.


Я ж говорю, представтье что вы имеете дело с VB.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 21.07.2007 (Сб) 21:11

А если саму строку ограничить не кавычками, а чем нибудь другим?
Типа так: ext=`exe`
Или ещё чем, что не используется в данном языке.
Salus populi suprema lex

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 21.07.2007 (Сб) 21:14

То что строка будет ограничиваться двойными кавычками - факт. И менять это никто не будет :)
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 21.07.2007 (Сб) 22:12

Хакер писал(а):То что строка будет ограничиваться двойными кавычками - факт. И менять это никто не будет :)

Ну так тогда и ограничивай двойными кавычками, а не знаком дюйма :)
Salus populi suprema lex

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 21.07.2007 (Сб) 22:22

Не, ну давайте серьёзно. Время идёт - работа стоит. Выбирайте одно из трёх.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Сообщение Q2W » 21.07.2007 (Сб) 22:29

Хакер писал(а):Выбирайте одно из трёх.

Дык результаты опроса чем тебя не устраивают?
Я знаю верный путь

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 21.07.2007 (Сб) 22:31

1) 5 голосов это как-то мало
2) Там больше всего голосов за вариант, который мне не очень-то нравится :)
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Сообщение Q2W » 21.07.2007 (Сб) 22:38

1) Ну тогда жди.
2) Тогда исключи его из списка вариантов. В конечном счёте всёравно тебе выбирать.
Я знаю верный путь

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 21.07.2007 (Сб) 22:39

Q2W
1) Жду :)
2) Ну зачем же. Если подобная тенденция и дальше будет прослеживаться, его и выберем. А то вдруг всё ещё поменяется.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 21.07.2007 (Сб) 22:57

Ну тогда сишный вариант, так как при первом напрягает считать палочки :), а третий вариант - слишком много символов вместо кавычки - лично мне было бы удобнее экранировать её (и слеши в путях).
Salus populi suprema lex

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.07.2007 (Сб) 23:02

Ещё один дубовый BAT-style-овый вариант: использовать для экрана символ ^ как малоупотребимый.
Изображение

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 21.07.2007 (Сб) 23:19

tyomitch
А чем в степень возводить!?
Изображение

Конь
Постоялец
Постоялец
 
Сообщения: 650
Зарегистрирован: 02.06.2006 (Пт) 6:49
Откуда: г. Красноярск

Сообщение Конь » 22.07.2007 (Вс) 0:22

Вообще, когда кавычка нужна, пишу Chr(34) =)
Подпись находится в стадии разработки...

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 22.07.2007 (Вс) 0:28

Конь
+1, я тоже так обычно делаю. Для меня лично сильно повышается читабельность.

Конь
Постоялец
Постоялец
 
Сообщения: 650
Зарегистрирован: 02.06.2006 (Пт) 6:49
Откуда: г. Красноярск

Сообщение Конь » 22.07.2007 (Вс) 0:33

Аналогично. Да и не так уж и часто приходится кавычки ставить.
Подпись находится в стадии разработки...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 22.07.2007 (Вс) 7:07

keks-n писал(а):А чем в степень возводить!?

Возводить строки в степень -- это ново...
Изображение

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 22.07.2007 (Вс) 7:44

Конь
Amed
В константах Chr(34) не шибко то поюзаешь.

И вы предлагаете мне вообще запретить символ кавычки в строках, чтобы всегда юзали Chr(34)?
tyomitch
Его глюкануло немного :)
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Конь
Постоялец
Постоялец
 
Сообщения: 650
Зарегистрирован: 02.06.2006 (Пт) 6:49
Откуда: г. Красноярск

Сообщение Конь » 22.07.2007 (Вс) 8:06

Хакер
Зачем запрещать? Никто не запрещает, делай как душе угодно :)
С кавычками в константах не встречался, но раз может такое случиться, мне больше нравится экранирование.
Подпись находится в стадии разработки...

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 22.07.2007 (Вс) 14:25

В принципе согласен з tyomitch как вариант можна использовать какой-нибудь другой символ для экранирования. Ну например / или ^ или ~ ...
الفيجوال بيسك الرابح

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 22.07.2007 (Вс) 14:26

~ в путях бывает часто.
Изображение

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 22.07.2007 (Вс) 19:26

Да я ему уже другой символ предлагал. Не хочет.
Изображение

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 23.07.2007 (Пн) 9:43

Первая и последняя кавычка -- ограничители.
Все, что между ними, берется как есть, Mid$(Text,2,Len(Text)-2).
Lasciate ogni speranza, voi ch'entrate.

След.

Вернуться в Holy Wars@VBStreets

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11

    TopList