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

Madzi

  • Jr. Member
  • **
  • Сообщений: 86
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #75 : Июнь 20, 2013, 02:47:27 pm »
Я имел ввиду из официально опубликванных на сайте университета. Черновики не в счет.
Тем не менее черновики содержат наиболее передовые мысли (траекторию развития продукта).

Так что я начал перевод черновика на гуглах (для последующего обсуждения и дополнения). Если есть желающие присоединится - присылайте PM с гугловской электронкой.

Как будем обсуждать ?

Там у Вирта такие перлы (недо)понимания имеются. Например, хотите реализовывать модуль SYSTEM - реализуйте, но можете не реализовывать. Или тип T является расширением типа T0, если он равен типу T0.

Вообщем, welcome.

Jordan

  • Sr. Member
  • ****
  • Сообщений: 282
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #76 : Июнь 20, 2013, 05:03:10 pm »
Как написать компилятор языка оберон 07, без самого стандарта на язык оберон 07. :)

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #77 : Июнь 20, 2013, 05:55:06 pm »
Как написать компилятор языка оберон 07, без самого стандарта на язык оберон 07. :)
Ну так несколько его компиляторов уже написаны, значит это возможно ))
to iterate is human, to recurse, divine

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

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #78 : Июнь 20, 2013, 06:19:47 pm »
Тем не менее черновики содержат наиболее передовые мысли (траекторию развития продукта).

Я смотрел черновик и "откатился" к репорту 2011. Потому что домысливать/исправлять в черновике надо больше, и все равно не угадаешь чего там Вирт хотел. По поводу обсуждения - я уже пытался вот здесь: https://sites.google.com/site/oberonreport/question-list-regarding-to-oberon-07-report-to-be-clarified-by-wirth

Madzi

  • Jr. Member
  • **
  • Сообщений: 86
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #79 : Июнь 20, 2013, 07:18:16 pm »
Тем не менее черновики содержат наиболее передовые мысли (траекторию развития продукта).

Я смотрел черновик и "откатился" к репорту 2011. Потому что домысливать/исправлять в черновике надо больше, и все равно не угадаешь чего там Вирт хотел. По поводу обсуждения - я уже пытался вот здесь: https://sites.google.com/site/oberonreport/question-list-regarding-to-oberon-07-report-to-be-clarified-by-wirth

По поводу твоих вопросов:
1. однозначно нельзя (не VAR параметр не может участвовать в присвоении слева)

2. В целом присвоение таким переменным возможно, но не для параметров процедур.

3. В данном случае строка является выражением, которые допустимы как формальный параметр процедуры.

4. Недопустимо, открытые массивы могут существовать только в форме параметров процедуры, чтобы в них можно было передавать массивы разной длины. Создать же открытый массив нельзя (и присвоить ему тоже).

5. В присвоении участвуют переменные одного типа. ARRAY 4 OF CHAR и ARRAY 8 OF CHAR - разные типы, но копирование между ними должно существовать (можно написать цикл, но процедура COPY рассматривается как низкоуровневая реализация такого цикла).

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #80 : Июнь 20, 2013, 07:23:08 pm »
Тем не менее черновики содержат наиболее передовые мысли (траекторию развития продукта).

Я смотрел черновик и "откатился" к репорту 2011. Потому что домысливать/исправлять в черновике надо больше, и все равно не угадаешь чего там Вирт хотел. По поводу обсуждения - я уже пытался вот здесь: https://sites.google.com/site/oberonreport/question-list-regarding-to-oberon-07-report-to-be-clarified-by-wirth

По поводу твоих вопросов:
1. однозначно нельзя (не VAR параметр не может участвовать в присвоении слева)

2. В целом присвоение таким переменным возможно, но не для параметров процедур.

3. В данном случае строка является выражением, которые допустимы как формальный параметр процедуры.

4. Недопустимо, открытые массивы могут существовать только в форме параметров процедуры, чтобы в них можно было передавать массивы разной длины. Создать же открытый массив нельзя (и присвоить ему тоже).

5. В присвоении участвуют переменные одного типа. ARRAY 4 OF CHAR и ARRAY 8 OF CHAR - разные типы, но копирование между ними должно существовать (можно написать цикл, но процедура COPY рассматривается как низкоуровневая реализация такого цикла).
Нет, так не пойдет :-) Любое утверждение должно подкрепляться ссылкой на выдержку из Oberon-07/11 report.
Y = λf.(λx.f (x x)) (λx.f (x x))

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #81 : Июнь 20, 2013, 08:13:45 pm »
По поводу твоих вопросов:
1. однозначно нельзя (не VAR параметр не может участвовать в присвоении слева)

Там речь не о VAR параметре, а об указателях. Если смотреть prior art - то "константный указатель" (не-VAR массив/рекорд) и "указатель на константу" (нет такого в обероне) совсем разные вещи. По константному указателю менять объект можно (C++).

2. В целом присвоение таким переменным возможно, но не для параметров процедур.

Просто надо нормально прописать ссылки, чтоб не скакать по репорту в догадках.

3. В данном случае строка является выражением, которые допустимы как формальный параметр процедуры.

В репорте про это - ни слова. И вообще с описанием "что такое строка" очень плохо.

4. Недопустимо, открытые массивы могут существовать только в форме параметров процедуры, чтобы в них можно было передавать массивы разной длины. Создать же открытый массив нельзя (и присвоить ему тоже).

А вот ребята на другом форуме (ссылка пробегала) думают с точностью до наоборот.

5. В присвоении участвуют переменные одного типа. ARRAY 4 OF CHAR и ARRAY 8 OF CHAR - разные типы, но копирование между ними должно существовать (можно написать цикл, но процедура COPY рассматривается как низкоуровневая реализация такого цикла).

Процедура COPY рассматривается (буквально) как "v := x". Все. Почему и возник вопрос - может она таки чем-нибудь отличается от такого определения (например, копирует массивы разных размеров и если да, то как). В своем компиляторе я ее таки реализовал (из любви к букве репорта), но делает она именно то, что прописано в репорте - v := x.
« Последнее редактирование: Июнь 20, 2013, 08:16:52 pm от vlad »

adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #82 : Июнь 21, 2013, 01:56:00 am »
По поводу компилятора (который онлайн):
Не знаю, правильно ли выражаюсь (не силен в терминологии):
1) его можно будет встроить в код (плагин), работающий на js? Если да, то насколько это сложно, и вкратце механизм бы (ну или где об этом почитать)
2) в нем можно использовать любые файлы js скриптов? (имею в виду не браузер, а если встроить в свое ПО из п.1.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #83 : Июнь 21, 2013, 03:19:43 am »
По поводу компилятора (который онлайн):
Не знаю, правильно ли выражаюсь (не силен в терминологии):
1) его можно будет встроить в код (плагин), работающий на js? Если да, то насколько это сложно, и вкратце механизм бы (ну или где об этом почитать)
2) в нем можно использовать любые файлы js скриптов? (имею в виду не браузер, а если встроить в свое ПО из п.1.
Сам компилятор написан на обычном js и он из оберона генерирует обычный же js-код. Соответственно с ним (компилятором) и с тем что он сгенерировал (из обероновских модулей) можно делать в точности то же самое что и с рукописным js-кодом.

Соответственно браузеру для выполнения этого кода никаких плагинов не нужно.

Если у вас есть десктоп-приложение, которое исполняет js-код, то оно же сможет и исполнять тот код который получается после компиляции/трансляции Оберона-07/11, ибо на выходе там обычный js-код.

Из Оберона, через "псевдомодуль" JS можно дергать любой js-код. А про файлы js ничего не знает (да и модулей в js не существует).
Y = λf.(λx.f (x x)) (λx.f (x x))

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #84 : Июнь 21, 2013, 05:35:55 am »
А есть документация на этот компилятор и его библиотеки? В частности, на псевдомодуль JS...
to iterate is human, to recurse, divine

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

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #85 : Июнь 21, 2013, 05:40:45 am »
А есть документация на этот компилятор и его библиотеки? В частности, на псевдомодуль JS...
А нет библиотек (помимо оберонрепортовских) :-) Есть только JS.  А в JS есть только вызов произвольной же js-функции. JS.jsFunctionName(arg1,arg2,...);

Для чего-то более заковыристого можно воспользоваться тем, что в js есть функция eval.
Y = λf.(λx.f (x x)) (λx.f (x x))

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #86 : Июнь 21, 2013, 05:44:24 am »
А есть документация на этот компилятор и его библиотеки? В частности, на псевдомодуль JS...
А нет библиотек (помимо оберонрепортовских) :-) Есть только JS.  А в JS есть только вызов произвольной же js-функции. JS.jsFunctionName(arg1,arg2,...);

Для чего-то более заковыристого можно воспользоваться тем, что в js есть функция eval.

"Дубовые требования" будете реализовывать?
to iterate is human, to recurse, divine

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

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #87 : Июнь 21, 2013, 06:00:07 am »
А есть документация на этот компилятор и его библиотеки? В частности, на псевдомодуль JS...
А нет библиотек (помимо оберонрепортовских) :-) Есть только JS.  А в JS есть только вызов произвольной же js-функции. JS.jsFunctionName(arg1,arg2,...);

Для чего-то более заковыристого можно воспользоваться тем, что в js есть функция eval.

"Дубовые требования" будете реализовывать?
В планах вроде нет. С одной стороны дубовые требования заточаны под другой язык - под Оберон-2, а с другой они совершенно не достаточны в качестве стандартной либы. Ну и наконец он и совершенно не учитывают специфику js-окружения и вообще браузерного бытия.

Но ты можешь попробовать реализовать :-) Они же не в компилятор вшиваются.
Y = λf.(λx.f (x x)) (λx.f (x x))

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #88 : Июнь 21, 2013, 09:34:02 am »
А куда багрепорты слать? (Только без всяких там регистраций в гитхабах и прочей мутотени)...
to iterate is human, to recurse, divine

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

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #89 : Июнь 21, 2013, 10:17:27 am »
А куда багрепорты слать? (Только без всяких там регистраций в гитхабах и прочей мутотени)...
Регистрация на какой-нибудь багзилле все равно нужна, так что да, на гитхаб. Сюда: https://github.com/vladfolts/oberonjs/issues

В общем то всё аналогично багрепортам gpcp.
Y = λf.(λx.f (x x)) (λx.f (x x))