|
|
|
О служебных словах в Делфи
|
|||
|---|---|---|---|
|
#18+
Нравится мне делфи, но вот непонятно мне с их политикой служебных слов языка. 1. break, continue, exit являются названиями процедур! а не ключевыми словами. Но позвольте это никакие не подпрограммы! Я даже могу создать свою break и она перетрет стандартную, для вызова стандартной придется писать system.break . Правда есть особенность: нельзя писать break() для этой системной "процедуры". 2. название типа string ключевое слово, а, например, integer нет. Зачем? где логика? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 12:07:19 |
|
||
|
О служебных словах в Делфи
|
|||
|---|---|---|---|
|
#18+
авторЯ даже могу создать свою break и она перетрет стандартную, для вызова стандартной придется писать system.break. F1->Scope, Qualified identifiers ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 12:40:52 |
|
||
|
О служебных словах в Делфи
|
|||
|---|---|---|---|
|
#18+
NafНравится мне делфи, но вот непонятно мне с их политикой служебных слов языка. Есть такое. Из поганой серии "так исторически сложилось". NafНо позвольте это никакие не подпрограммы! Я даже могу создать свою break 2. название типа string ключевое слово, а, например, integer нет. Зачем? где логика? Точно так же Вы можете создать свою WriteLn. Если говорить о теории, есть два разных термина: служебные слова (keywords) и зарезервированные слова (reserved words). Первое - это слова, которые в определенном контексте несут некий особый смысл. Второе - слова, которые не могут быть использованы в качестве идентификаторов. Эти два множества не совпадают, и в случае Турбо-Паскаля с наследниками довольно сильно различаются. Дело в том, что Паскаль, каким его написал Вирт, использует очень много того, что называется "магией компилятора" - то есть неких особых фокусов, недоступных для повторения использующему компилятор программисту. В Борланде когда-то взяли курс на уменьшение этой магии (и курс, в общем, правильный). Так, в частности, integer перестал быть чем-то особенным, а стал самым обычным Код: plaintext 1. объявленным в модуле System. В результате он не является ни ключевым, ни зарезервированным словом - обычный тип, ничем не отличающийся от аналогичного пользовательского. Со string такой фокус не пройдет, на него завязана куча особенностей - во-первых, типы string[N], во-вторых, бодяга с ShortString/AnsiString. break/continue/exit пострадали в результате этой же компании - точнее, если мне не изменяет память, они были сразу добавлены как "магические процедуры", ключевые, но не зарезервированные слова. Другие примеры non-reserved keywords - ну например on, index, message, read, write, store, default. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 12:47:58 |
|
||
|
О служебных словах в Делфи
|
|||
|---|---|---|---|
|
#18+
pkarklin авторЯ даже могу создать свою break и она перетрет стандартную, для вызова стандартной придется писать system.break. F1->Scope, Qualified identifiers Я знаю что такое идентификатор, но философски почему это не служебные слова? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 12:48:15 |
|
||
|
О служебных словах в Делфи
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 12:51:58 |
|
||
|
О служебных словах в Делфи
|
|||
|---|---|---|---|
|
#18+
break/continue/exit пострадали в результате этой же компании - точнее, если мне не изменяет память, они были сразу добавлены как "магические процедуры", ключевые, но не зарезервированные слова. они были добавлены в turbopascal 6 или 7 версии (кроме exit кажется) ну и почему бы не сделать их зарезервированными, все равно это не процедуры, а в help именно так написано ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 12:58:32 |
|
||
|
О служебных словах в Делфи
|
|||
|---|---|---|---|
|
#18+
авторвсе равно это не процедуры С чего бы это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 13:00:45 |
|
||
|
О служебных словах в Делфи
|
|||
|---|---|---|---|
|
#18+
pkarklin авторвсе равно это не процедуры С чего бы это? Потому что процедура это подпрограмма, имеет точку входа и точку выхода, а это оператор, позволяющий производить безусловный переход в точку определенную контекстом программы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 13:21:40 |
|
||
|
О служебных словах в Делфи
|
|||
|---|---|---|---|
|
#18+
Гм... exit - процедура, которая передает управление вне текущей процедуры. Т.е. точка выхода у нее "не там же, где точка входа". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 13:28:05 |
|
||
|
О служебных словах в Делфи
|
|||
|---|---|---|---|
|
#18+
Nafне нашел там такого (Delphi 7) Ну, с тех пор много воды утекло. Сейчас глянул в turbo.tpl от пятерки - integer там лежит среди всего остального. Nafони были добавлены в turbopascal 6 или 7 версии (кроме exit кажется) break и continue в шестерке, exit по-моему в тройке. Nafну и почему бы не сделать их зарезервированными Потому что всеми силами сокращали список зарезервированного. Тогда и Write/WriteLn стали процедурами, хотя всегда считались операторами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 13:45:55 |
|
||
|
О служебных словах в Делфи
|
|||
|---|---|---|---|
|
#18+
pkarklinГм... exit - процедура, которая передает управление вне текущей процедуры. Т.е. точка выхода у нее "не там же, где точка входа". если не там же значит не процедура а управляющий оператор >>Тогда и Write/WriteLn стали процедурами, хотя всегда считались операторами. Вот они то как раз процедуры а не операторы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 14:33:09 |
|
||
|
О служебных словах в Делфи
|
|||
|---|---|---|---|
|
#18+
NafВот они то как раз процедуры а не операторы Как только Вы напишите процедуру, способную быть вызванной следующим образом: Код: plaintext 1. 2. 3. 4. я соглашусь с этим мнением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 14:48:55 |
|
||
|
О служебных словах в Делфи
|
|||
|---|---|---|---|
|
#18+
Вот они то как раз процедуры а не операторы Тогда уж, WriteLn, скорее фунция...) System.pas Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 15:01:45 |
|
||
|
О служебных словах в Делфи
|
|||
|---|---|---|---|
|
#18+
softwarer NafВот они то как раз процедуры а не операторы Как только Вы напишите процедуру, способную быть вызванной следующим образом: Код: plaintext 1. 2. 3. 4. я соглашусь с этим мнением. согласен: "магический" синтаксис! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 15:07:53 |
|
||
|
О служебных словах в Делфи
|
|||
|---|---|---|---|
|
#18+
Naf Код: plaintext 1. вобщем то не могли найти, хотя бы потому что integer != word ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 17:11:27 |
|
||
|
О служебных словах в Делфи
|
|||
|---|---|---|---|
|
#18+
Если это очередной флейм - тогда и я скажу. Все эти writeln - да фиг с ними, всё равно я ими практически не пользуюсь. break - процедура или подпрограмма - не всё ли равно? ОЧЕНЬ плохо, что break и т.д. - незарезервированные слова. Я как-то наткнулся - один программист назвал SpeeButton чем-то вроде exit - так я чуть с ума не сошёл, пока нашёл, в чём дело. Но за то, что придумали begin - поубивал бы нафиг!!! взорвал бы вместе со всем подъездом! а теперь народ умудряется обычный elseif в 5 строк рисовать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 17:27:20 |
|
||
|
О служебных словах в Делфи
|
|||
|---|---|---|---|
|
#18+
Андрей Спильный Naf Код: plaintext 1. вобщем то не могли найти, хотя бы потому что integer != word Очень странный аргумент :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 18:03:51 |
|
||
|
О служебных словах в Делфи
|
|||
|---|---|---|---|
|
#18+
Вот, кстати, еще прелестный фрагмент кода из VCL: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2007, 12:40:49 |
|
||
|
О служебных словах в Делфи
|
|||
|---|---|---|---|
|
#18+
авторIn addition to the words above, private, protected, public, published, and automated act as reserved words within object type declarations, but are otherwise treated as directives. The words at and on also have special meanings. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2007, 16:41:14 |
|
||
|
О служебных словах в Делфи
|
|||
|---|---|---|---|
|
#18+
Угу. Такое впечатление, что идеологи Борланда заботились в первую очередь о том, как бы половчее осложнить жизнь разработчикам лексических и синтаксических анализаторов Паскаля. Вполне уверенно идут по пути классического Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2007, 16:47:05 |
|
||
|
О служебных словах в Делфи
|
|||
|---|---|---|---|
|
#18+
softwarerВот, кстати, еще прелестный фрагмент кода из VCL: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Да уж... странный компилятор... Даже тот, который я все никак не допишу на курсовой, такое бы не пропустил, если бы классы поддерживал :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2007, 17:18:54 |
|
||
|
О служебных словах в Делфи
|
|||
|---|---|---|---|
|
#18+
Pu4koffДаже тот, который я все никак не допишу на курсовой, такое бы не пропустил Это не критерий. Проблема в обратном - дополнительные усилия нужны как раз при написании компилятора, который такое разрешает и правильно обрабатывает (хотя это тоже несложно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2007, 17:58:59 |
|
||
|
О служебных словах в Делфи
|
|||
|---|---|---|---|
|
#18+
softwarer Это не критерий. Проблема в обратном - дополнительные усилия нужны как раз при написании компилятора, который такое разрешает и правильно обрабатывает (хотя это тоже несложно). Это понятно, но зачем было прилагать эти усилия - вот в чем вопрос ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2007, 19:20:30 |
|
||
|
О служебных словах в Делфи
|
|||
|---|---|---|---|
|
#18+
softwarer Pu4koffДаже тот, который я все никак не допишу на курсовой, такое бы не пропустил Это не критерий. Проблема в обратном - дополнительные усилия нужны как раз при написании компилятора, который такое разрешает и правильно обрабатывает (хотя это тоже несложно). Мне кажется, что здесь побочный эффект лени, чтобы не разбираться с резервированым именем они просто почти все идентификаторы в середине выражения считают не резервироваными словами. Вариант, который ты привел с Protected навевает на это. Так было проще писать компилятор. Чистое ИМНО, так дикая идея. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2007, 20:40:30 |
|
||
|
О служебных словах в Делфи
|
|||
|---|---|---|---|
|
#18+
Процетирую себя на эту же тему :) Удачи, Дмитрий -- AnyDAC ( www.da-soft.com ) - быстрый прямой доступ к Oracle, MySQL, MSSQL, MSAccess, IBM DB2, Advantage DS, Sybase ASA, DbExpress, ODBC.http://] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2007, 21:13:54 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=34532122&tid=2042278]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
235ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 186ms |
| total: | 490ms |

| 0 / 0 |
