Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];

Вниз

begin/end в начале/конце процедуры необязательные   Найти похожие ветки 

 
Igorek ©   (2004-07-05 18:05) [0]

- компилятор мог бы вырулить и без них. Как в случае с

with SomeObject do
 Result := SomeValue;


 
inic ©   (2004-07-05 18:07) [1]

Я тоже так думаю, наглядность чуть лучше, размер кода чуть меньше, мелочь а приятно, но кстати в c++ даже так нельзя


 
Igorek ©   (2004-07-05 18:07) [2]

уже надеваю каску на голову... (%-)))


 
Игорь Шевченко ©   (2004-07-05 18:08) [3]

Да они вообще необязательны. И компилятор мог бы все сам понять.
Но вот ведь незадача какая - грамматика языка не позволяет.


 
Jeer ©   (2004-07-05 18:09) [4]

А ты, ихохорек, Phyton поизучай - там еще интереснее.


 
Igorek ©   (2004-07-05 18:11) [5]


> Игорь Шевченко ©   (05.07.04 18:08) [3]
> Да они вообще необязательны. И компилятор мог бы все сам
> понять.
> Но вот ведь незадача какая - грамматика языка не позволяет.

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


 
inic ©   (2004-07-05 18:12) [6]

Надо письмо написать в Borland (серьезно)


 
Игорь Шевченко ©   (2004-07-05 18:12) [7]


> Так я к тому и веду, что грамматика ... как бы это выразиться
> ... ммм... дает простор для дальнейшего улучшения


Некоторые уже улучшают грамматику русского языка. В том числе и на этом сайте. Одна беда - их не всегда понимают.

ЗЫ: Это намек такой. Тонкий


 
Igorek ©   (2004-07-05 18:14) [8]


> Игорь Шевченко ©   (05.07.04 18:12) [7]
> ЗЫ: Это намек такой. Тонкий

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


 
Григорьев Антон ©   (2004-07-05 18:15) [9]

А вы попробуйте написать консольное приложение или любое другое приложение без VCL, в виде одного только dpr-файла. Там сначала будут описаны функции, а потом, между begin и end с точкой будет написано тело программы. А теперь вопрос на засыпку: если у функций не будет begin"ов и end"ов, как компилятор поймёт, что begin означает начало программы, а не начало составного оператора внутри функции?

А ещё это сильно усложнит реализацию компилятора. Сомневаюсь, что такой синтаксис можно будет описать простыми грамматиками, а, следовательно, компилятор нельзя будет реализовывать как конечный автомат.


 
Digitman ©   (2004-07-05 18:15) [10]


> Igorek ©   (05.07.04 18:05)  
> - компилятор мог бы вырулить и без них


да что там мелочиться ? давай еще и скобки фигурные из С/С++ повыкидываем ! а начерта они там сдались, спрашивается ?


> уже надеваю каску на голову


про броник тож не забудь
помидоры и яйца - они тож больно шмякают


 
Тимохов ©   (2004-07-05 18:20) [11]

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


 
DiamondShark ©   (2004-07-05 18:21) [12]


> Igorek ©   (05.07.04 18:05)  
> - компилятор мог бы вырулить и без них. Как в случае с

Ок. Флаг в руки.
С тебя формальное описание грамматики такого языка, и программа разбора текста на этом языке.


 
Тимохов ©   (2004-07-05 18:23) [13]


> С тебя формальное описание грамматики такого языка, и программа
> разбора текста на этом языке.

да это ему как два пальца.

нет уж - с тебя готовый конечный автомат.


 
Digitman ©   (2004-07-05 18:25) [14]


> Igorek ©   (05.07.04 18:05)


приснопамятное "казнить нельзя помиловать" помнишь ?
нефих там точки расставлять, кому надо он сам разберется - либо башки лишится, либо возвеселится-возрадуется


 
Григорьев Антон ©   (2004-07-05 18:25) [15]

Вообще, синтаксис Паскаля уже ругали. В том числе и его разработчик, Вирт. Так что исправлять есть что. Но неплохо бы, прежде чем начинать критиковать, познакомится с тем, что и почему критиковали другие. При этом окажется, что люди уже решили такие вопросы, сам факт существования которых вы ещё не осознали.


 
Игорь Шевченко ©   (2004-07-05 18:26) [16]

Igorek ©   (05.07.04 18:14)


>  Не пояснишь, что имел ввиду конкретно?


Поясню. Твою "усовершенствованную" грамматику компилятор тоже не сможет понять.


 
Sha ©   (2004-07-05 18:26) [17]

Igorek, ты про вложенные процедуры слышал?


 
Тимохов ©   (2004-07-05 18:29) [18]

он это специально делает :)))

предлагаю дальнейшие темы для обсуждения:
1. Почему окна прямоугольные. Ничего не стоило MS сделать их сразу круглыми. Мне (Игорьку) это намного естественней.
2. Почему младший байт машинного слова идет раньше старшего. Это же естественно - идешь правее, значит дальше от начала памяти, т.е. старший байт и т.д. Почему борланд так реализовал?

ЗЫ Заявки на конкурс принимаются.


 
Тимохов ©   (2004-07-05 18:30) [19]


> Sha ©   (05.07.04 18:26) [17]

Кактегоричный ОФФ: Александр, как с вами связаться - несколько раз писал - не доходит. Мой timoha@vkkb.ru


 
Игорь Шевченко ©   (2004-07-05 18:30) [20]

Григорьев Антон ©   (05.07.04 18:25)


> Вообще, синтаксис Паскаля уже ругали.


Да, с удовольствием присоединюсь поругать, слово implementation без 100 грамм написать нельзя без ошибок :) (Это я не писал, это я из буфера скопировал :)))


 
Тимохов ©   (2004-07-05 18:32) [21]


> Игорь Шевченко ©   (05.07.04 18:30) [20]

implementation
implementation
implementaion
implementation
implementation
implememmmm блин.
А прав Игорь.


 
Переяслов Григорий   (2004-07-05 18:35) [22]

Кстати, был такой прикольный язык - clarion назывался. ;-)
Так вот там конец подпрограммы и модуля никак не обозначался вообще. Признаком конца процедуры было начало следующей ;-)
Правда, не было и вложенных подпрограмм.


 
Григорьев Антон ©   (2004-07-05 18:36) [23]


> Игорь Шевченко ©   (05.07.04 18:30) [20]
> Григорьев Антон ©   (05.07.04 18:25)
>
>
> > Вообще, синтаксис Паскаля уже ругали.
>
>
> Да, с удовольствием присоединюсь поругать, слово implementation
> без 100 грамм написать нельзя без ошибок :) (Это я не писал,
> это я из буфера скопировал :)))


А в стандартном Паскале такого слова вообще нет. А Object Pascal/Delphi с точки зрения Вирта вообще является извращением его идей (и это, ИМХО, справедливо).


 
Sha ©   (2004-07-05 18:38) [24]

>Тимохов ©   (05.07.04 18:30) [19] alshaГАВmail333ТОЧКАcom


 
Тимохов ©   (2004-07-05 18:39) [25]


> Sha ©   (05.07.04 18:38) [24]

:))))


 
DiamondShark ©   (2004-07-05 18:41) [26]


> Да, с удовольствием присоединюсь поругать, слово implementation
> без 100 грамм написать нельзя без ошибок :)

Пытаюсь вспомнить, когда я его последний раз руками набирал... Не могу.

ЗЫ
А что, TMultipleReadExclusiveWriteSyncronizer лучше что-ли?


 
DiamondShark ©   (2004-07-05 18:42) [27]

И, таки, ошибся...


 
Тимохов ©   (2004-07-05 18:42) [28]


> DiamondShark ©   (05.07.04 18:41) [26]

10 пальчиков, 240 в минуту.
и нет проблем.


 
vuk ©   (2004-07-05 18:43) [29]

to Григорьев Антон ©   (05.07.04 18:36) [23]:
>А Object Pascal/Delphi с точки зрения Вирта вообще является
>извращением его идей
Вообще говоря, Object Pascal (которай на MAC) при участии Вирта разрабатывался. Потом те же идеи Borland использовал в TP/OP.


 
DiamondShark ©   (2004-07-05 18:47) [30]


> А Object Pascal/Delphi с точки зрения Вирта вообще является
> извращением его идей (и это, ИМХО, справедливо).

На костёр еретиков!
Адрес святой инквизиции:
http://www.delphikingdom.com/asp/talktopic.asp?ID=285


 
pasha_golub ©   (2004-07-05 19:09) [31]

Ну, не знаю, для меня implementation как имя второе. ;-) А вот {} не люблю, их так потом в листинге трудно выискивать.


 
Юрий Зотов ©   (2004-07-05 19:30) [32]

> Igorek ©   (05.07.04 18:05)

<оператор> ::= <простой оператор> | <составной оператор>
<простой оператор> ::= <оператор if> | <оператор while> ...
<составной оператор> ::= begin <список операторов> end
<список операторов> ::= <оператор> | <оператор> ; <список операторов>

Если написанное Вам знакомо, то сабж, вероятно, не возник бы. А если незнакомо, то советую СНАЧАЛА почитать теорию языков, а уж ПОТОМ ругать компилятор. Или хвалить - потому что ПОСЛЕ прочтения может и такое получиться.


 
Anatoly Podgoretsky ©   (2004-07-05 19:33) [33]

Digitman ©   (05.07.04 18:15) [10]
И броне трусы иначе тоже больно.


 
Igorek ©   (2004-07-05 20:58) [34]


> Игорь Шевченко ©   (05.07.04 18:12) [7]
> Некоторые уже улучшают грамматику русского языка. В том
> числе и на этом сайте. Одна беда - их не всегда понимают.
>
> ЗЫ: Это намек такой. Тонкий


> Игорь Шевченко ©   (05.07.04 18:26) [16]
> Igorek ©   (05.07.04 18:14)
> >  Не пояснишь, что имел ввиду конкретно?
>
> Поясню. Твою "усовершенствованную" грамматику компилятор
> тоже не сможет понять.

Я не имел ввиду Паскаль на русский перевести.

2 Григорьев Антон ©   (05.07.04 18:15) [9]
> А вы попробуйте написать консольное приложение или любое
> другое приложение без VCL, в виде одного только dpr-файла.
> Там сначала будут описаны функции, а потом, между begin
> и end с точкой будет написано тело программы. А теперь вопрос
> на засыпку: если у функций не будет begin"ов и end"ов, как
> компилятор поймёт, что begin означает начало программы,
> а не начало составного оператора внутри функции?

Вот разбираем мы исходник. Разобрали заголовок процедуры - ожидаем тело. Если дальше идет begin - разбираем тело до соотв. end. Если сразу идет выражение - разбираем. Потом уже ожидаем или заголовок новой процедуры или начало программы. Правда остается проблема forward declaration. Но и ее при желании можно решить - например (;) после заголовка означает конец обьявлению процедуры(тела не предвидется).

> А ещё это сильно усложнит реализацию компилятора. Сомневаюсь,
> что такой синтаксис можно будет описать простыми грамматиками,
> а, следовательно, компилятор нельзя будет реализовывать
> как конечный автомат.
Сложность компилятора - дело десятое. Как писал когда-то Страуструп, когда он разрабатывал синтаксис С++, то выбрал проще синтаксис - сложнее компилятор, а не наоборот.
А реализуемость синтаксического анализатора в виде конечного автомата, наскольколько я помню, зависит не от сложности, а от однозначности грамматики.

> DiamondShark ©   (05.07.04 18:21) [12]
> Ок. Флаг в руки.
> С тебя формальное описание грамматики такого языка, и программа
> разбора текста на этом языке.

Неа. Времени нету. А я за это денег не получу. Так что потрепаться - пожалуйста. А вот реализация - увольте.

> Sha ©   (05.07.04 18:26) [17]
> Igorek, ты про вложенные процедуры слышал?

Слышал. Вот как раз сегодня писал конвертер из одной БД - в другую. Так у меня вложенность процедур достигала 4 в глубину.
Но не вижу проблемы в контексте сабжа.

> Юрий Зотов ©   (05.07.04 19:30) [32]
> <оператор> ::= <простой оператор> | <составной оператор>
> <простой оператор> ::= <оператор if> | <оператор while>
> ...
> <составной оператор> ::= begin <список операторов> end
> <список операторов> ::= <оператор> | <оператор> ; <список
> операторов>
>
> Если написанное Вам знакомо, то сабж, вероятно, не возник
> бы. А если незнакомо, то советую СНАЧАЛА почитать теорию
> языков, а уж ПОТОМ ругать компилятор. Или хвалить - потому
> что ПОСЛЕ прочтения может и такое получиться.

Представьте себе знакомо. И не понаслышке - приходилось и самому грамматики писать. И разбирать. И кое-что покруче.
Так вот, в контексте того, что вы привели:
1) счас в паскале тело процедуры есть <составной оператор>
2) я предлагаю сделать его (тело) - <оператор>


 
YurikGL ©   (2004-07-05 20:59) [35]

А мне пролог нравился...


 
YurikGL ©   (2004-07-05 21:00) [36]

А мне пролог нравился...


 
Igorek ©   (2004-07-05 21:06) [37]


> Тимохов ©   (05.07.04 18:29) [18]
> он это специально делает :)))

Возможно подсознательно. Но не со зла. :-)))
Устал немного.
Сегодня перекидывад БД, которую принесли с одного гос. учреждения в новый (уже наш) формат. Блин, у них ни нормализации, ни целосности, ни вообще корректности. Только хлеб народный зря едят. Пришлось ручками поле за полем переносить.


 
DiamondShark ©   (2004-07-05 21:25) [38]


> Igorek ©   (05.07.04 20:58) [34]


> > Ок. Флаг в руки.
> > С тебя формальное описание грамматики такого языка, и программа
> > разбора текста на этом языке.
>
> Неа. Времени нету. А я за это денег не получу. Так что потрепаться
> - пожалуйста. А вот реализация - увольте.

Неа. На таком уровне даже потрепаца не получица. Трепаца без того, чтобы отвечать за слова надо в одиночку. Перед зеркалом.


 
Тимохов ©   (2004-07-06 10:32) [39]


> DiamondShark ©   (05.07.04 21:25) [38]

класс!


 
Юрий Зотов ©   (2004-07-06 11:08) [40]

> Igorek ©   (05.07.04 20:58) [34]

> Так вот, в контексте того, что вы привели:
> 1) счас в паскале тело процедуры есть <составной оператор>
> 2) я предлагаю сделать его (тело) - <оператор>

В контексте того, что я привел,
<оператор> ::= <простой оператор> | <составной оператор>

И тогда Ваше предложение сводится к следующему:
<тело программы> ::= <простой оператор> | <составной оператор>

Поскольку второй вариант уже вполне успешно реализован и именно его Вы критикуете, то надо полагать, что Вы предлагаете первый:
<тело программы> ::= <простой оператор>

Таким образом, Ваша программа будет состоять только из одного простого оператора. Я не думаю, что такая программа сможет делать что-то серьезное. Ну разве что этот оператор будет, например, таким:
if True then
begin
 ...
end

И если теперь отсюда выбросить очевидно избыточную первую строчку, то получим как раз то, что имеем и сейчас.

Igorek, разговоры о грамматике "на пальцах" - это несерьезно. Приведите несколько строчек, описывающих то, что Вы предлагаете, в виде БНФ - вот тогда можно будет говорить, а не болтать.



Страницы: 1 2 3 вся ветка

Форум: "Потрепаться";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.57 MB
Время: 0.034 c
4-1086934510
bars
2004-06-11 10:15
2004.07.25
Узнать символ соответствующий нажатой клавише


14-1088853395
menart
2004-07-03 15:16
2004.07.25
Опять суббота!


4-1086796374
DelphiN!
2004-06-09 19:52
2004.07.25
Как поменять запятую(разделитель) на точку в "Языках и стандартах


1-1089358029
Sur
2004-07-09 11:27
2004.07.25
JPG+EOF+SomeText


4-1086894546
mike.dld
2004-06-10 23:09
2004.07.25
RRGGBB





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский