Особенность лексического анализатора fpc

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

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

Ответить
spv
новенький
Сообщения: 71
Зарегистрирован: 26.09.2006 13:57:46
Откуда: Подмосковье

Особенность лексического анализатора fpc

Сообщение spv »

Здравствуйте.

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

Вкратце, вот такое оформление комментария:

{While not EndOfCells do
begin
CellVector:=random(8)




end; }
{--------------------------}


является правильным и ошибок не вызывает.

А вот такое (после end отсутствует фигурная скобка):

{While not EndOfCells do
begin
CellVector:=random(8)




end;
{--------------------------}


выдаёт ошибку unexpected end of file на последней строке модуля.

Использовался Lazarus 0.9.16 бета.

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

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

В любом случае, мне думается, убирать такую "особенность" из fpc не стоит (на случай, если кто решится сообщить разработчикам).


Так как в большом модуле это, IMHO, может вызвать некоторую запарку в отладке, связанную не столько с алгоритмом, сколько с оформлением (вот уж за что терпеть не могу Си и PHP с их разделением заглавных и строчных символов!), решил сообщить об этом на форуме.
spv
новенький
Сообщения: 71
Зарегистрирован: 26.09.2006 13:57:46
Откуда: Подмосковье

Сообщение spv »

Блин, извиняюсь. Ох уж эти смайлики...

Смайлик в сообщении выше- это восьмерка в скобках...
Аватара пользователя
mr.denton
новенький
Сообщения: 23
Зарегистрирован: 30.04.2006 03:23:07

Сообщение mr.denton »

а помоему все верно.
в паскале запрещены вложенные коментарии, вот лексер и ругается.
ev
долгожитель
Сообщения: 1789
Зарегистрирован: 27.04.2005 23:19:06
Откуда: Москва

Сообщение ev »

имхо запрещение вложенных коментов - бред :(
очень неудобно
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

В смысле - запрещено? FPC ведь вроде понимает вложенные комментарии - при сборке самого себя куча Warning'ов вылезает на тему "Comment level 2 found"...
spv
новенький
Сообщения: 71
Зарегистрирован: 26.09.2006 13:57:46
Откуда: Подмосковье

Сообщение spv »

Ну, не знаю... Сам fpc из исходников не собирал.

Что увидел, о том и написал.
Просто в дельфи такое проходило, а в fpc- нет...

Кстати, в приведенном выше примере вложенного коммента нет. Открывающая фигурная скобка есть, а закрывающей нет. В этом, видимо, и причина ругательств лексического анализатора...
Сквозняк
энтузиаст
Сообщения: 1159
Зарегистрирован: 29.06.2006 22:08:32

Сообщение Сквозняк »

ev писал(а):имхо запрещение вложенных коментов - бред :(
очень неудобно


Да нет, паскаль здесь не виноват, а за неудобства передавайте привет Вирту и другим классикам марксизма за их классовую ненависть к GOTO :) Любой лишний код элементарно исключается из выполнения этой командой. При помощи неё можно править не слишком понятные исходники, писать циклы со множеством условий, даже подобие объектов эмулировать. Не зря по умолчанию в компиляторе галочка стоит на нужном месте. Но раз нельзя его использовать, тратьте время и силы на эмуляцию, хотя компилятор в машинных кодах всё равно кучу аналогов GOTO наставит, но там это не будет видно.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

spv писал(а):Ну, не знаю... Сам fpc из исходников не собирал.

Что увидел, о том и написал.
Просто в дельфи такое проходило, а в fpc- нет...

Кстати, в приведенном выше примере вложенного коммента нет. Открывающая фигурная скобка есть, а закрывающей нет. В этом, видимо, и причина ругательств лексического анализатора...


Вложенный коммент как раз есть :) Две открывающие скобки и одна закрывающая. Дельфи считает закрывающую скобку концом внешнего комментария, поэтому фишка прокатывает. FPC считает закрывающую скобку концом внутреннего комментария, продолжает искать конец внешнего - и не находит.
Saemon Zixel
новенький
Сообщения: 78
Зарегистрирован: 20.09.2005 18:19:54
Откуда: Sochi

Сообщение Saemon Zixel »

spv писал(а):
Так как в большом модуле это, IMHO, может вызвать некоторую запарку в отладке, связанную не столько с алгоритмом, сколько с оформлением (вот уж за что терпеть не могу Си и PHP с их разделением заглавных и строчных символов!), решил сообщить об этом на форуме.


А вот такая штука в делфи у тебя запарку не вызовит:

Код: Выделить всё

function getxy : integer;
  readln(y);      {берём с клавы y}
  readln(x);      {берём с клавы x
  Result:=y*x;  {умножаем и возвращаем результат}
end;

fpc тебя сразу носом ткнёт, а делфи промолчит.

ЗЫ естественно пример мог быть и гораздо сложнее.
Аватара пользователя
Иван Шихалев
энтузиаст
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург
Контактная информация:

Сообщение Иван Шихалев »

Допустимость вложенных комментариев зависит от режима компиляции.
Ответить