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

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #270 : Октябрь 18, 2013, 10:47:00 am »
Или хотя бы так поставлю вопрос: будет ли компилиться код, написанный на Оберон7 в блекбоксе?

В принципе можно выделить общее для этих двух языков подмножество и делать переносимые между этими двумя языками программы, но это будет означать отказ от разных возможностей из этих языков, например от наследования записей или "Цикла Дейкстры".
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #271 : Октябрь 18, 2013, 11:47:29 am »
Без информации об импортированных модулях невозможна раздельная компиляция, а независимой (как в сях) обероны не поддерживают.
Такая информация в оберонах имеется только в самих модулях, значит без этих импортированных модулей компиляция невозможна.
Эта информация содержится в символьных файлах, которые в общем случае не привязаны к откомпилированному модулю. То есть, наличия символьного файла должно хватить для компиляции.

valexey_u

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

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #273 : Октябрь 18, 2013, 12:15:22 pm »
Без информации об импортированных модулях невозможна раздельная компиляция, а независимой (как в сях) обероны не поддерживают.
Такая информация в оберонах имеется только в самих модулях, значит без этих импортированных модулей компиляция невозможна.
Эта информация содержится в символьных файлах, которые в общем случае не привязаны к откомпилированному модулю. То есть, наличия символьного файла должно хватить для компиляции.

Ну конкретно в обсуждаемом онлайн-компиляторе этим объектных (символьных) файлов нет.
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #274 : Октябрь 18, 2013, 01:17:50 pm »
Но там и результат компиляции не объектный файл, а исходник, который интерпретируется. А для исполнения программы присутствие используемых модулей логично.
« Последнее редактирование: Октябрь 18, 2013, 01:19:26 pm от Valery Solovey »

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #275 : Октябрь 18, 2013, 01:18:47 pm »
Но там и компиляции по сути нет. Сразу исполнение. А для исполнения логично присутствие используемых модулей.
Конкретно компиляция там как раз есть.
Y = λf.(λx.f (x x)) (λx.f (x x))

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #276 : Октябрь 18, 2013, 01:20:53 pm »
Не успел поменять. : ). Ну, если составление коллажей из картинок считать компиляцией, то и здесь она тоже есть.
P.S. Мои Л.С. доходят?

DddIzer

  • Гость
Re: Online компилятор Oberon-07/11.
« Ответ #277 : Октябрь 18, 2013, 01:35:10 pm »
Но там и компиляции по сути нет. Сразу исполнение. А для исполнения логично присутствие используемых модулей.
Конкретно компиляция там как раз есть.
я для таких обозначения таких вещей использую слово трансляция.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #278 : Октябрь 18, 2013, 01:39:07 pm »
Ну, если составление коллажей из картинок считать компиляцией, то и здесь она тоже есть.
Это и есть компиляция в том самом смысле :-)
Цитировать
КОМПИЛЯЦИЯ
КОМПИЛЯЦИЯ (от лат. compilatio, букв. -ограбление) - сочинительство на основе чужих исследований или произведений (литературная К.) без самостоятельной обработки источников; работа, составленная таким методом.
Причем без разницы из каких кусочков ты собираешь результат - из кусочков js-кода или из кусочков машкодов. Принцип один и тот же. То есть я не вижу там никакой существенной разницы. Единственная сложность в случае машкодов/асма - это написание рантайма, а конкретно - GC. Больше там ничего интересного в общем то и нет.

Цитировать
P.S. Мои Л.С. доходят?
А ты какому пользователю пишешь?
Y = λf.(λx.f (x x)) (λx.f (x x))

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #279 : Октябрь 18, 2013, 02:27:51 pm »
Это и есть компиляция в том самом смысле :-)
Это определения общего случая. То есть, оно правильное, но я обычно использую частный случай, который на интуитивном уровне звучит примерно так "из читаемого набора байт получить нечитаемый". С парой уточнений.

[/quote]
А ты какому пользователю пишешь?
[/quote]Чёрт! Я отправлял на valexey.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #280 : Октябрь 18, 2013, 02:56:20 pm »
Это определения общего случая. То есть, оно правильное, но я обычно использую частный случай, который на интуитивном уровне звучит примерно так "из читаемого набора байт получить нечитаемый". С парой уточнений.
Погоди, я правильно понимаю, что ты только что код на js назвал "читаемым набором байт"? :-) Как по мне - это вполне себе нечитаемый набор байт, ну не более читаемыей чем асм скажем :-) Впрочем, сделать его совсем нечитаемым не просто, а очень просто. :-)

А если серьезно, то, по моему, в русскоязычной терминологии сложились довольно извращенные традиции. Если пойти к истокам, то мы увидим, что транслятор - это сложная штука - переводчик, вникающая в семантику написанного и делающая то, что не сводится к простой компиляции. Скажем fortran - это именно что formula translator (точнее - The IBM Mathematical Formula Translating System). На входе высокоуровневый код, выходе был машкод.

А вот компилятором я бы назвал (если забыть про извращенные терминологические традиции) штуку которая занимается трансляцией (переводом) на основе просто регулярных выражений - работающая чисто с синтаксисом, без разбора семантики исходного и целевого языков.

Исходя из этих определений - "компилятор" Вирта и Oberonjs это именно что трансляторы, ибо разборки с синтаксисом там занимают лишь малую часть кода - самое сложное и интересное таки в сементике.

А вот Сишный препроцессор - это именно что компилятор, ибо занимается тупой подстановкой на уровне синтаксиса.
Y = λf.(λx.f (x x)) (λx.f (x x))

adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #281 : Октябрь 19, 2013, 08:06:23 am »
что значит ошибка: TypeError: Object #<PointerType> has no method 'findSymbol' ?

И есть ли описание ошибок?

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #282 : Октябрь 19, 2013, 09:47:56 am »
что значит ошибка: TypeError: Object #<PointerType> has no method 'findSymbol' ?

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

adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #283 : Октябрь 19, 2013, 01:11:57 pm »
В принципе код брал из КП, понимаю, что без переделки он не валиден, просто хотелось бы более внятной ошибки:

Вот код (проблема в типе v):

MODULE test;
IMPORT JS;
 TYPE
    p = POINTER TO RECORD END;
    v = POINTER TO RECORD (p)
      m:INTEGER;
    END;
 
BEGIN

END test.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #284 : Октябрь 19, 2013, 01:20:22 pm »
В принципе код брал из КП, понимаю, что без переделки он не валиден, просто хотелось бы более внятной ошибки:

Вот код (проблема в типе v):

MODULE test;
IMPORT JS;
 TYPE
    p = POINTER TO RECORD END;
    v = POINTER TO RECORD (p)
      m:INTEGER;
    END;
 
BEGIN

END test.

p не является записью, запись не может быть наследована от указателя.
MODULE test;
IMPORT JS;
 TYPE
    r0 = RECORD END;
    r1 = RECORD (r0) m : INTEGER END;
    p = POINTER TO r0;
    v = POINTER TO r1;
 
BEGIN
END test.

PS. Но ошибочка в компиляторе все равно есть.
Y = λf.(λx.f (x x)) (λx.f (x x))