Forth http://fforum.winglion.ru/ |
|
Quark: build 25 http://fforum.winglion.ru/viewtopic.php?f=23&t=2556 |
Страница 1 из 3 |
Автор: | Hishnik [ Вс мар 28, 2010 02:19 ] |
Заголовок сообщения: | Quark: build 25 |
В новой сборке реализованы два пункта. 1. Строки больше не обязаны иметь пробел после кавычки. Иными словами, " 123" и "123" означают строку, состоящую из трех символов 1, 2, 3. Возможность такой обработки регулируется переменной SMARTSTRING (истинное значение разрешает поиск обработку строк, начинающихся с кавычки, и не имеющих после нее пробела). 2. Добавлен вектор WINMSG и связанные с ним переменные MSG.PROCESSED WMSG MSG.WPARAM MSG.LPARAM. Это вектор вызывается каждый раз в процессе обработки сообщений. В переменные WMSG MSG.WPARAM MSG.LPARAM записываются соответственно тип сообщения и его параметры. Если вектор установил в ИСТИНУ переменную MSG.PROCESSED, то более это сообщение не обрабатывается (в том числе и с помощью DefWindowProc). Это позволяет полностью заменять обработчик сообщений Quark-Forth. |
Автор: | Hishnik [ Пн мар 29, 2010 21:32 ] |
Заголовок сообщения: | |
Кстати, кто бы чего ни говорил, а строки в привычном представлении программиста, без пробела после кавычки, вполне удобны и ликвидируют "мыслительную паузу" в виде "не забыть поставить пробел после кавычки". Пока ни в одном проекте проблемного поведения не обнаружено. |
Автор: | вопрос [ Пн мар 29, 2010 21:54 ] |
Заголовок сообщения: | |
Хищник писал(а): Кстати, кто бы чего ни говорил, а строки в привычном представлении программиста, без пробела после кавычки, вполне удобны и ликвидируют "мыслительную паузу" в виде "не забыть поставить пробел после кавычки". Пока ни в одном проекте проблемного поведения не обнаружено. Замечательно
|
Автор: | WingLion [ Вт мар 30, 2010 06:32 ] |
Заголовок сообщения: | |
Кстати, можно спокойно считать, что если слово, начинающееся с кавычки, не найдено в словаре, то это начало строки, которая кавычкой должна завершиться. И то же самое стоит сделать, для слов, начинающихся со скобки ( и со слеша \ тогда, и "проблема забывания пробела перед комментарием" пропадет. |
Автор: | chess [ Вт мар 30, 2010 09:15 ] |
Заголовок сообщения: | |
Хищник писал(а): Кстати, кто бы чего ни говорил, а строки в привычном представлении программиста, без пробела после кавычки, вполне удобны
Тогда последовательности типа этой Код: " hgjh" строками уже не будут что-ли?
|
Автор: | Hishnik [ Вт мар 30, 2010 09:27 ] |
Заголовок сообщения: | |
WingLion писал(а): Кстати, можно спокойно считать, что если слово, начинающееся с кавычки, не найдено в словаре, то это начало строки, которая кавычкой должна завершиться. Так и есть. WingLion писал(а): И то же самое стоит сделать, для слов, начинающихся со скобки ( и со слеша \
тогда, и "проблема забывания пробела перед комментарием" пропадет. А вот тут не было бы коллизий, но тоже можно подумать. Со скобки часто начинают низкоуровневые слова, например (DO) и ему подобные. Но вот комментарии до конца строки вполне подходят для подобной обработки. Еще ведь подсветка синтаксиса отмечает кварковские // (которые аналогичны \), но делает это независимо от того, есть после них пробел, или нет. |
Автор: | Hishnik [ Вт мар 30, 2010 09:30 ] |
Заголовок сообщения: | |
chess писал(а): Тогда последовательности типа этой Код:
" hgjh" строками уже не будут что-ли? Будут, конечно. Кавычку-то никто не отменял. Просто в " hgjh" отработает кавычка и положит строку hgjh, а если набрать "hgjh", то слово окажется не найдено и подхватится в NUMBER, который и увидит, что ненайденная последовательность начинается с кавычки, а значит, представляет собой строку. |
Автор: | вопрос [ Вт мар 30, 2010 11:01 ] |
Заголовок сообщения: | |
Хищник писал(а): chess писал(а): Тогда последовательности типа этой Код: " hgjh" строками уже не будут что-ли? Будут, конечно. Кавычку-то никто не отменял. Просто в " hgjh" отработает кавычка и положит строку hgjh, а если набрать "hgjh", то слово окажется не найдено и подхватится в NUMBER, который и увидит, что ненайденная последовательность начинается с кавычки, а значит, представляет собой строку. надо же, опять разночтение! (с пробелом строку как сделать с помощью одной кавычки?) |
Автор: | Hishnik [ Вт мар 30, 2010 11:11 ] |
Заголовок сообщения: | |
вопрос писал(а): надо же, опять разночтение! (с пробелом строку как сделать с помощью одной кавычки?)
" " Два пробела после кавычки. Первый нужен для выделения первой кавычки, второй обработается самой кавычкой. Это штатное поведение слова " |
Автор: | chess [ Вт мар 30, 2010 11:30 ] |
Заголовок сообщения: | |
вопрос писал(а): надо же, опять разночтение! (с пробелом строку как сделать с помощью одной кавычки?)
В QUARK реализовано два метода обработки строковых литералов: первый - стандартный с помощью слова "(кавычка) - тут пробелы после кавычки и пробела включаются в стороку второй - аналогичный обработке числовых литералов - тут нет начальных пробелов в строке Чтобы реализовать распознавание строк только одним методом надо отказаться от слова "(кавычка) и написать отдельный транслятор для обработки строк, что будет гораздо сложнее чем комбинировать два существующих метода. |
Автор: | chess [ Ср мар 31, 2010 11:37 ] |
Заголовок сообщения: | |
Хищник писал(а): Пока ни в одном проекте проблемного поведения не обнаружено.
Проблемное поведение будет только в случае если определить слово, начинающееся с "(кавычки), а затем определить строку без пробела после кавычки, которая начинается с этого слова. Код: : "spisok 1 ;
: s2 "spisok 2" ; : s3 "spisok 3 " ; так что вряд-ли дождетесь. пс. Это конечно при корректной реализации строк. |
Автор: | вопрос [ Ср мар 31, 2010 12:23 ] |
Заголовок сообщения: | |
chess писал(а): Хищник писал(а): Пока ни в одном проекте проблемного поведения не обнаружено. Проблемное поведение будет только в случае если определить слово, начинающееся с "(кавычки), а затем определить строку без пробела после кавычки, которая начинается с этого слова. Код: : "spisok 1 ; : s2 "spisok 2" ; : s3 "spisok 3 " ; так что вряд-ли дождетесь. пс. Это конечно при корректной реализации строк. ну я же говорил, что неоднозначность должна появляться, только не там её нашёл |
Автор: | _Harry [ Ср мар 31, 2010 17:10 ] |
Заголовок сообщения: | |
WingLion писал(а): И то же самое стоит сделать, для слов, начинающихся со скобки ( и со слеша \
А как быть с \EOF ?? Яркий пример того что не надо трогать устоявшиеся механизмы. Мне лично пробел не мешает и пауз в мыслительном процессе нет. Я его автоматом ставлю не задумываясь даже в ассемблерных командах |
Автор: | Hishnik [ Ср мар 31, 2010 18:07 ] |
Заголовок сообщения: | |
chess писал(а): Код: : "spisok 1 ; : s2 "spisok 2" ; : s3 "spisok 3 " ; так что вряд-ли дождетесь. А что тут не так? Во-первых, "spisok 2" состоит из двух слов - "spisok и 2", второе из которых будет не найдено. Во-вторых, некорректное поведение будет довольно быстро обнаружено при тестировании слов, и проблема решается простой постановкой пробела... это если уж так приспичило ввести слово, начинающееся с кавычки. Наконец, написано же в верхнем посте - SMARTSTRING есть. Пишем ноль, и нет такой обработки, остается только " как слово Форта. вопрос писал(а): ну я же говорил, что неоднозначность должна появляться, только не там её нашёл И где ж тут неоднозначность в правильном понимании этого термина? _Harry писал(а): Мне лично пробел не мешает и пауз в мыслительном процессе нет.
Мешает тем, кто начинает осваивать Форт. Когда в самых базовых вещах наблюдается слишком много "инаковости", это мешает переходить к собственно программированию. |
Автор: | WingLion [ Ср мар 31, 2010 18:29 ] |
Заголовок сообщения: | |
_Harry писал(а): А как быть с \EOF ??
Использовать там, где оно надо... И не втыкать куда не надо Я же писал: Если слово, начинающееся с кавычки (слеша/скобки), не найдено в словаре, то это и должно повлечь за собой новое поведение интерпретатора. Но никак не изменение поведения слов, которые с этих знаков начинаются. |
Страница 1 из 3 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |