Форум: "Потрепаться";
Текущий архив: 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.033 c