Re[7]: *
От: Privalov  
Дата: 09.06.05 12:13
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

P>>

P>>

P>>WHILE a DO x; y; z END
P>>


P>>То есть здесь z и END — одна инструкция?


СГ>1) Можно ответить: Да! Семантика этой инструкции: "Выполнить z и перейти к началу цикла WHILE".

СГ>2) Можно ответить: END — это не инструкция, а часть составной инструкции WHILE DO END, ведь инструкции бывают как простыми так и составными.

x тоже часть составной инструкции, однако ";" после нее стоит.

СГ>Выбирайте что Вам больше нравится.


Мне нравится, когда ";" является частью инструкции, а не разделителем между ними.

СГ>Это очень просто. При условии не наделять каким-либо дополнительным смыслом символы пробела, табуляции и новой строки кроме смысла и так натурально им присущим, все представленные в том сообщении отдельные инструкции являются минимально возможными.


СГ>Вот смотрите, заменим все служебные слова на символ "*"

СГ>
СГ>REPEAT x UNTIL b                      = * x * b
СГ>WHILE a DO x END                      = * a * x *
СГ>IF a THEN x END                       = * a * x *
СГ>IF a THEN x ELSE y END                = * a * x * y *
СГ>IF a THEN x ELSIF b THEN y ELSE z END = * a * x * b * y * z *
СГ>CASE n OF a: x | b: y ELSE z END      = * n * a * x * b * y * z *
СГ>

СГ>между каждой "пользовательской" лексемой стоит не более одной звездочки. Меньше одной звездочки поставить нельзя — мы договорились пробельные символы не перегружать. Значит минимум достигнут. А то что этого достаточно, следует из смысла рассматриваемых инструкций.

Вместо REPEAT можно использовать WHILE, а вместо CASE — IF / ELSEIF / ELSE /END. Потому их можно выбросить => необходимость не доказана. О достаточности я пока молчу.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.