31
Общий раздел / [Oberon-07/11] Импорт типов.
« : Октябрь 23, 2013, 11:37:49 pm »
Только что напоролся на один нюанс, который раньше замечен не был. Вот такой код, с точки зрения грамматики Oberon'a не валиден оказывается:
Конкретно не валидно вот это:
Справа тут может быть только StructType:
Ибо:
И никак не может быть qualident:
Вот такие пироги.
Код: [Выделить]
MODULE B;
IMPORT A;
TYPE
Boo = A.Foo;
END B.
Конкретно не валидно вот это:
Код: [Выделить]
Boo = A.Foo
Справа тут может быть только StructType:
Код: [Выделить]
StrucType = ArrayType | RecordType | PointerType | ProcedureType.
ArrayType = ARRAY length {"," length} OF type.
RecordType = RECORD ["(" BaseType ")"] [FieldListSequence] END.
PointerType = POINTER TO type.
ProcedureType = PROCEDURE [FormalParameters].
Ибо:
Код: [Выделить]
TypeDeclaration = identdef "=" StrucType.
DeclarationSequence = [CONST {ConstDeclaration ";"}]
[TYPE {TypeDeclaration ";"}]
[VAR {VariableDeclaration ";"}]
{ProcedureDeclaration ";"}.
И никак не может быть qualident:
Код: [Выделить]
qualident = [ident "."] ident
Вот такие пироги.