Автор Тема: Online компилятор Oberon-07/11.  (Прочитано 165067 раз)

adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #285 : Октябрь 19, 2013, 01:35:04 pm »
А как быть, если:

указатель "p" задан в другом модуле (именно как указателевый тип без указания рекодрда). И унаследоваться надо от него? (может я тут чушь сморозил, но все еще пытаюсь для себя совместить КП и О7)

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #286 : Октябрь 19, 2013, 01:46:38 pm »
А как быть, если:

указатель "p" задан в другом модуле (именно как указателевый тип без указания рекодрда). И унаследоваться надо от него? (может я тут чушь сморозил, но все еще пытаюсь для себя совместить КП и О7)
Если тебе не экспортировали сам тип-RECORD, значит считается что нечего плодить иерархию наследования :-) То есть создатель базового типа считает что наследование вне его модуля запрещено.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #287 : Октябрь 19, 2013, 01:48:26 pm »
А как быть, если:

указатель "p" задан в другом модуле (именно как указателевый тип без указания рекодрда). И унаследоваться надо от него? (может я тут чушь сморозил, но все еще пытаюсь для себя совместить КП и О7)
Вообще, очень странно было бы наследоваться от opaque-типа.
Y = λf.(λx.f (x x)) (λx.f (x x))

adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #288 : Октябрь 19, 2013, 02:13:32 pm »
Если тебе не экспортировали сам тип-RECORD, значит считается что нечего плодить иерархию наследования :-) То есть создатель базового типа считает что наследование вне его модуля запрещено.
В КП там просто указатель на абстрактную запись (которую надо реализовать). И судя по всему, таким образом и происходит ее реализация (если я правильно суть уловил).

Посмотреть можно в модуле Models, который генерится автоматом при создании подсистемы в ББ. Тип

Op = POINTER TO RECORD (Stores.Operation)
  model: StdModel;
END;


Ну или я не понял, чего это такое

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #289 : Октябрь 19, 2013, 02:36:25 pm »
Если тебе не экспортировали сам тип-RECORD, значит считается что нечего плодить иерархию наследования :-) То есть создатель базового типа считает что наследование вне его модуля запрещено.
В КП там просто указатель на абстрактную запись (которую надо реализовать). И судя по всему, таким образом и происходит ее реализация (если я правильно суть уловил).

Посмотреть можно в модуле Models, который генерится автоматом при создании подсистемы в ББ. Тип

Op = POINTER TO RECORD (Stores.Operation)
  model: StdModel;
END;


Ну или я не понял, чего это такое

На самом деле тут нужно смотреть конкретную задачу и её уже решать. Вполне вероятно что решаться она на Обероне будет существенно иначе нежели на КП.

Вообще, в качестве примера использования Оберона (правда предыдущей ревизии) я бы советовал прочесть http://www.ozon.ru/context/detail/id/8218517/
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #290 : Октябрь 19, 2013, 02:47:10 pm »
Да, а багрепорт я написал.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #291 : Октябрь 19, 2013, 07:12:20 pm »
Vlad баг пофиксил, я страничку компиляторную обновил. Так что теперь все хорошо - компилятор в случае попытки унаследоваться от не того что нужно теперь ругается внятно, понятно и посылает по нужному адресу.
Y = λf.(λx.f (x x)) (λx.f (x x))

adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #292 : Октябрь 21, 2013, 09:17:46 am »
Извиняюсь, а чё значит ошибка:

"RECORD type is expected as a base type, got 'Model'"?

До исправления на эту строку вроде как не ругался (или может не доходил до нее).

И не совесем понял, ошибка вроде выдается, а код на яваскрипт вроде формируется (не успел разобраться, весь ли)

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #293 : Октябрь 21, 2013, 10:08:32 am »
Извиняюсь, а чё значит ошибка:

"RECORD type is expected as a base type, got 'Model'"?

До исправления на эту строку вроде как не ругался (или может не доходил до нее).

И не совесем понял, ошибка вроде выдается, а код на яваскрипт вроде формируется (не успел разобраться, весь ли)
это на каком коде?
Y = λf.(λx.f (x x)) (λx.f (x x))

adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #294 : Октябрь 21, 2013, 10:42:55 am »
Пока не скажу, на каком коде, решил отказаться от идеи совместить КП и О7. Поэтому предыдущий код удалил (версии пока не храню), буду отписываться по мере возникновения новых непоняток.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #295 : Октябрь 21, 2013, 11:21:09 am »
Пока не скажу, на каком коде, решил отказаться от идеи совместить КП и О7. Поэтому предыдущий код удалил (версии пока не храню), буду отписываться по мере возникновения новых непоняток.
Это существенно осложняет поиск ошибки в компиляторе.
Y = λf.(λx.f (x x)) (λx.f (x x))

adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #296 : Октябрь 21, 2013, 12:21:12 pm »
Это существенно осложняет поиск ошибки в компиляторе.
Что именно осложняет?

Такой вопрос возник, и что-то у меня не ругается на код вида

PROCEDURE (op: Op) Do
...

Но судя по всему, подобные процедуры не компилируются

adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #297 : Октябрь 21, 2013, 12:36:54 pm »
это на каком коде?
код, с данной ошибкой, отправил в ЛС.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #298 : Октябрь 21, 2013, 12:59:34 pm »
Это существенно осложняет поиск ошибки в компиляторе.
Что именно осложняет?
Отсутствие примера кода на котором комплятор странно себя ведет.

Такой вопрос возник, и что-то у меня не ругается на код вида

PROCEDURE (op: Op) Do
...

Но судя по всему, подобные процедуры не компилируются
Эмм... А тело у этой функции есть ?
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #299 : Октябрь 21, 2013, 12:59:58 pm »
это на каком коде?
код, с данной ошибкой, отправил в ЛС.
Спасибо!
Y = λf.(λx.f (x x)) (λx.f (x x))