Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Темы - Rifat

Страницы: [1]
1
Сейчас в языке Oberon-07 последнее поле в записи не должно заканчиваться символом ";".
Например, RECORD a: INTEGER; b: INTEGER END - можно, а RECORD a: INTEGER; b: INTEGER; END - нельзя.
Это следует из синтаксиса языка:
RecordType  =  "RECORD" ["(" BaseType ")"] [FieldListSequence] "END".
BaseType  =  qualident.
FieldListSequence  =  FieldList {";" FieldList}.
FieldList  =  IdentList ":" type.
IdentList  =  identdef {"," identdef}.
Мне кажется, что это не всегда удобно, так как если, например, в структуре 10 полей, то последовательно добавляя поля, нужно всегда иметь в виду, что последнее поле не должно заканчиваться символом ";". Если случайно добавить этот символ, то будет ошибка компиляции. А если изначально было все правильно, а затем пришлось добавить еще несколько полей, то можно забыть поставить символ ";" после десятого поля.

В Компонентном Паскале точка с запятой после последнего поля не вызывает ошибку, это следует из синтаксиса.
Type  =   Qualident
     |  ARRAY [ConstExpr {"," ConstExpr}] OF Type
      | [ABSTRACT | EXTENSIBLE | LIMITED]
           RECORD ["("Qualident")"] FieldList {";" FieldList} END
      | POINTER TO Type
     | PROCEDURE [FormalPars].
FieldList    =   [IdentList ":" Type].

Кто как думает, почему в Oberon-07 нельзя ставить точку запятой после последнего поля, есть ли здесь какое-то скрытое рациональное зерно?
Нужно ли изменять синтаксис языка Oberon-07M чтобы можно была ставить точку с запятой после последнего поля?

Страницы: [1]