Автор Тема: OberonJS  (Прочитано 72068 раз)

Ivan Denisov

  • Jr. Member
  • **
  • Сообщений: 67
    • Просмотр профиля
Re: OberonJS
« Ответ #15 : Январь 24, 2017, 06:17:55 am »
Влад, к тебе первая просьба:

можешь поправить, чтобы компилятор обнаруживал пропущенные точки с запятой?

сейчас он создает код, и потом во время исполнения уже выдает ошибку.

Ivan Denisov

  • Jr. Member
  • **
  • Сообщений: 67
    • Просмотр профиля
Re: OberonJS
« Ответ #16 : Январь 24, 2017, 06:20:17 am »
А нет, он обнаруживает... но из-за того, что сверху приклеены другие модули, он неправильно строку показывает :)

Придется вычислять сдвиг и корректировать сообщения об ошибке.

Ivan Denisov

  • Jr. Member
  • **
  • Сообщений: 67
    • Просмотр профиля
Re: OberonJS
« Ответ #17 : Январь 24, 2017, 06:28:09 am »
Рекомендую модераторам таки выделить форум по OberonJS из общего раздела. Это все-таки какой-то продукт. Тогда и ссылку можно будет давать людям, мол проект обсуждается с разработчиком там то.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: OberonJS
« Ответ #18 : Январь 24, 2017, 05:13:43 pm »
А нет, он обнаруживает... но из-за того, что сверху приклеены другие модули, он неправильно строку показывает :)

Придется вычислять сдвиг и корректировать сообщения об ошибке.

Я бы все-таки предложил сделать по-правильному - чтение импортируемого модуля "on demand". Тогда не будет таких проблем. Мне кажется это не должно быть проблемой. Для HTML это будет что-то типа <script> секций, указывающих на исходные файлы модулей, oc.compile будет вытаскивать текст из соответствующей секции. Я могу помочь ближе к воскресенью, если у тебя не получится.

Ivan Denisov

  • Jr. Member
  • **
  • Сообщений: 67
    • Просмотр профиля
Re: OberonJS
« Ответ #19 : Январь 27, 2017, 08:30:17 am »
Немного продвинулся, почти доделал некий менеджер модулей.
http://models.molpit.org/model/49
Возможно менять несколько модулей и потом компилировать. И также к модулям возможно добавлять документацию.
Надо теперь будет сделать, чтобы модули автоматически выстаивались в правильном порядке при компиляции.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: OberonJS
« Ответ #20 : Январь 27, 2017, 06:16:04 pm »
Немного продвинулся, почти доделал некий менеджер модулей.
http://models.molpit.org/model/49

Выглядит прикольно. А что в итоге будет и для кого?

Возможно менять несколько модулей и потом компилировать. И также к модулям возможно добавлять документацию.
Надо теперь будет сделать, чтобы модули автоматически выстаивались в правильном порядке при компиляции.

Еще раз - надо делать on demand подгрузку, тогда такой проблемы не будет - оно естественным образом будет выстраиваться.

Ivan Denisov

  • Jr. Member
  • **
  • Сообщений: 67
    • Просмотр профиля
Re: OberonJS
« Ответ #21 : Январь 27, 2017, 07:45:36 pm »
Ну там может быть сложный граф зависимостей достаточно.... Например А, зависит от B, и С, но C, зависит от B, тогда получается, что сначала надо импортировать B, потом С, а потом А.  То есть все равно надо иметь все импорты, и потом строить очередь модулей. Или я не прав? Возможно все в произвольном порядке компилировать?

Ivan Denisov

  • Jr. Member
  • **
  • Сообщений: 67
    • Просмотр профиля
Re: OberonJS
« Ответ #22 : Январь 27, 2017, 07:49:34 pm »
Немного продвинулся, почти доделал некий менеджер модулей.
http://models.molpit.org/model/49

Выглядит прикольно. А что в итоге будет и для кого?

Изначально это задумывалось как коллекция моделей для открытого учебника по биофизике, тут и численные методы и разные графические примеры, машина тьюринга будет и нейросети. Самые разные задачи.

Но теперь я вижу, что тут же возможно портировать компилятор Александра для ARM. И тогда возможно будет программировать прошивки для микроконтроллеров онлайн. Это уже новая интересная задача в духе современных онлайн САПР.

Ivan Denisov

  • Jr. Member
  • **
  • Сообщений: 67
    • Просмотр профиля
Re: OberonJS
« Ответ #23 : Февраль 03, 2017, 04:49:24 pm »
Влад, а насколько легко сделать так, чтобы единицей компиляции был все таки модуль, а не множество модулей?
У тебя там как-то все монолитно сделано? Возможно ли использовать как-то трансилированные ранее модули?

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: OberonJS
« Ответ #24 : Февраль 07, 2017, 05:16:24 am »
Влад, а насколько легко сделать так, чтобы единицей компиляции был все таки модуль, а не множество модулей?
У тебя там как-то все монолитно сделано? Возможно ли использовать как-то трансилированные ранее модули?

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

Ivan Denisov

  • Jr. Member
  • **
  • Сообщений: 67
    • Просмотр профиля
Re: OberonJS
« Ответ #25 : Февраль 07, 2017, 07:34:16 am »
Техническая проблема с номерами строк. Решение сейчас сделал в виде парсинга ответа твоего компилятора и вычета числа строк базовых модулей. Но это такой костылище :)
if (errors != null & errors != '') {
var errArray = errors.match(/(line) ([0-9]+)(:*)/);
document.getElementById('compileErrors').textContent = errors.replace(/(line) ([0-9]+)(:*)/, "line ("+ (errArray[2] - prelen) + ") $3" );
} else {
document.getElementById('compileErrors').textContent = '';
}

Ivan Denisov

  • Jr. Member
  • **
  • Сообщений: 67
    • Просмотр профиля
Re: OberonJS
« Ответ #26 : Февраль 07, 2017, 08:08:08 am »
Сделал примерчик для математики.
https://models.molpit.org/model/52

Помогите, пожалуйста, разобраться со шрифтами! Как нарисовать текст?

Ivan Denisov

  • Jr. Member
  • **
  • Сообщений: 67
    • Просмотр профиля
Re: OberonJS
« Ответ #27 : Февраль 07, 2017, 08:12:24 am »
В целом альфа версия сайта готова :)
Регистрируйтесь, чтобы протестировать и написать замечания по редактору.

Ivan Denisov

  • Jr. Member
  • **
  • Сообщений: 67
    • Просмотр профиля
Re: OberonJS
« Ответ #28 : Февраль 07, 2017, 08:20:48 am »
Правда пока так и не сделал правильный разбор импорта, поэтому пока желательно ограничиваться одним модулем на модель. Модуль лучше назвать Init.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: OberonJS
« Ответ #29 : Февраль 07, 2017, 03:13:47 pm »
Помогите, пожалуйста, разобраться со шрифтами! Как нарисовать текст?

Раз уж ты связался с processing.js, то вот это не подходит? http://processingjs.org/reference/text_