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

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

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

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

Сообщение spv » 25.10.2006 21:39:26

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

Скорее всего, я не первый, кто наткнулся на такую особенность, как мне думается, лексического анализатора 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 » 25.10.2006 21:45:14

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

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

Сообщение mr.denton » 26.10.2006 00:45:47

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

Сообщение ev » 26.10.2006 20:07:04

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

Сообщение Sergei I. Gorelkin » 26.10.2006 20:52:07

В смысле - запрещено? FPC ведь вроде понимает вложенные комментарии - при сборке самого себя куча Warning'ов вылезает на тему "Comment level 2 found"...
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1400
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение spv » 27.10.2006 00:19:51

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

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

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

Сообщение Сквозняк » 27.10.2006 10:47:08

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


Да нет, паскаль здесь не виноват, а за неудобства передавайте привет Вирту и другим классикам марксизма за их классовую ненависть к GOTO :) Любой лишний код элементарно исключается из выполнения этой командой. При помощи неё можно править не слишком понятные исходники, писать циклы со множеством условий, даже подобие объектов эмулировать. Не зря по умолчанию в компиляторе галочка стоит на нужном месте. Но раз нельзя его использовать, тратьте время и силы на эмуляцию, хотя компилятор в машинных кодах всё равно кучу аналогов GOTO наставит, но там это не будет видно.
Сквозняк
энтузиаст
 
Сообщения: 1112
Зарегистрирован: 29.06.2006 22:08:32

Сообщение Sergei I. Gorelkin » 27.10.2006 11:44:49

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

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

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


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

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

Сообщение Saemon Zixel » 28.10.2006 19:20:38

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


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

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

ЗЫ естественно пример мог быть и гораздо сложнее.
Saemon Zixel
новенький
 
Сообщения: 78
Зарегистрирован: 20.09.2005 18:19:54
Откуда: Sochi

Сообщение Иван Шихалев » 01.11.2006 12:42:53

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


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

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

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

Рейтинг@Mail.ru