Логика компилятора

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Логика компилятора

Сообщение Сквозняк » 28.03.2012 23:33:04

Код: Выделить всё
begin
end.
коммент и прочий текст

Компилятор входящий в fp считает такой код синтаксически верным, а fpc - нет. Зачем нужна такая фича - проверка синтаксиса текста не входящего в программу?
Сквозняк
энтузиаст
 
Сообщения: 1126
Зарегистрирован: 29.06.2006 22:08:32

Re: Логика компилятора

Сообщение SSerge » 29.03.2012 05:32:25

А зачем нужно писать текст, нарушающий синтаксис языка программирования?

Сквозняк писал(а): Зачем нужна такая фича - проверка синтаксиса текста не входящего в программу?


Ну хотя бы затем, чтобы если вы случайно поставите точку после end где нибудь в середине программы, вам не пришлось долго гадать, что ж всё компилируется без ошибок, но ничего не работает
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Логика компилятора

Сообщение Сквозняк » 29.03.2012 06:31:30

SSerge писал(а):А зачем нужно писать текст, нарушающий синтаксис языка программирования?
Чтобы завтра/послезавтра мучительно не вспоминать на чём остановился и что собирался запилить. Краткосрочные заметки прямо посреди кода - компилятор выдаст ошибку и укажет места с комментариями. Более долгосрочные "указатели на данные в памяти человека" логично писать после программы. Но если оформлять коменты как коменты то изменяется цвет текста и читать его уже не так удобно.

Ну хотя бы затем, чтобы если вы случайно поставите точку после end где нибудь в середине программы, вам не пришлось долго гадать, что ж всё компилируется без ошибок, но ничего не работает
Таких "компилируется но не работает" на дню бывает много раз и ничего страшного - не плюсы, счёт времени при компиляции идёт на секунды. И не каждая точка после end приведёт к успешной компиляции. Но если считать текст после точки кодом, то нехватает фичи: коменты после точки выделять другим цветом, не таким блёклым, заодно и конец кода выделится.
Сквозняк
энтузиаст
 
Сообщения: 1126
Зарегистрирован: 29.06.2006 22:08:32

Re: Логика компилятора

Сообщение SSerge » 29.03.2012 07:19:24

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

{$IFDEF BLLLLL}
...
{$ENDIF}

Сквозняк писал(а):Чтобы завтра/послезавтра мучительно не вспоминать на чём остановился и что собирался запилить. Краткосрочные заметки прямо посреди кода - компилятор выдаст ошибку и укажет места с комментариями. Более долгосрочные "указатели на данные в памяти человека" логично писать после программы. Но если оформлять коменты как коменты то изменяется цвет текста и читать его уже не так удобно.


Для этих целей западные программеры почему-то обычно предпочитают обычные комментарии, начинающиеся с TODO:

Во многих редакторах есть даже специальные средства для управления такими комментами.
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Логика компилятора

Сообщение zub » 29.03.2012 09:18:38

//Телепатия вкл. (в смысле дальше мои непроверенные предположения)
Насколько помню текст за end. разрешен в {$mode delphi} и запрещен в {$mode objfpc}. Возможно при запуске fp и fpc по умолчанию разные $mode изза разных конфигов?
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Логика компилятора

Сообщение Сквозняк » 29.03.2012 15:32:12

Насколько помню текст за end. разрешен в {$mode delphi} и запрещен в {$mode objfpc}.

По умолчанию fpc компилит в {$MODE FPC}
Код: Выделить всё
var
i: integer;
begin
i:=1000000000000000;
writeln(i);
end.
Вывод показывает 16 битный интегер. В коде исходники на трёх паскалях, похоже fpc переносит правила из одного диалекта в другой. fp вообще не так компилирует, он недокладывает код в лазарусные формы, поэтому, если они есть в зависимостях, для сборки работоспособного бинарника нужно пересобрать программу через fpc.
Во многих редакторах есть даже специальные средства для управления такими комментами.
Такая мелочь не стоит переезда на другие редакторы, к тому же похоже на метку, будет отвлекать.
{$IFDEF BLLLLL}
...
{$ENDIF}
Несуществующая платформа, это то что надо - просто и элегантно, главное название выбрать позабористее чтобы никто такую не добавил в будущем :wink:
Сквозняк
энтузиаст
 
Сообщения: 1126
Зарегистрирован: 29.06.2006 22:08:32

Re: Логика компилятора

Сообщение Brainenjii » 29.03.2012 15:40:10

А настроить редактор так чтобы комментарии отличались, но были легко читаемы, нельзя?
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: Логика компилятора

Сообщение Сквозняк » 29.03.2012 22:03:53

Конечно можно, теоретически. Но в fp такой "лёгкий" код с лесом указателей что проще использовать несколько хаков и не заморачиваться. Трюк с директивой компилятора вполне устраивает, трудиться над вкомпиливанием фичи во все редакторы, как-то неохота. Надо полезное дело делать а не искать экзотические способы сачконуть.
Сквозняк
энтузиаст
 
Сообщения: 1126
Зарегистрирован: 29.06.2006 22:08:32

Re: Логика компилятора

Сообщение Padre_Mortius » 30.03.2012 18:59:15

Сквозняк, для таких целей используется функционал To-Do в lazarus (компонент todolistlaz). В итоге получаем комментарии в стиле
Код: Выделить всё
{ TODO 5 -omortius -ctest : vjdfkvnkfdnvbjkdfnbvfdl }

Для вставки TODO нужно выбрать пункт главного меню "Код" и "Вставить элемент списка ToDo"
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Логика компилятора

Сообщение Сквозняк » 31.03.2012 02:47:52

для таких целей используется функционал To-Do в lazarus
Код пишется несколькими редакторами. Самое солжное не в лазарусе, он там никак не сможет ничего ускорить или сделать понятнее(для ускорения нужно закрыть на недельку лор с одноклассниками). В лазарусе пишется только гуй, по мере возникновения потребностей в новом элементе меню. Ну ещё надо будет накопать лазарусную функцию для препятствия периодической потери фокуса мыши и клавы в запускаемом opengl окне - есть в лазарусе такая неприятная фича.
Сквозняк
энтузиаст
 
Сообщения: 1126
Зарегистрирован: 29.06.2006 22:08:32


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

Рейтинг@Mail.ru