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

adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #375 : Февраль 01, 2019, 04:45:44 pm »
Указал полные пути, где вроде требовалось, сейчас ругается на то, что не найден модуль cast.js. Глянул, он есть в архиве в bin, но его нет в src. Он должен автоматом создаваться? Или надо использовать вместо src именно bin ? Куда тогда распаковать архив, он почему-то имеет только файлы без папок

adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #376 : Февраль 03, 2019, 04:35:52 am »
Разобрался, из bin выложил все в src\js, стало компилироваться

adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #377 : Февраль 03, 2019, 04:43:22 am »
После сообщения ОК, выдало также такую строку. Не знаю, насколько она критична. Она наверное к коду компилятора относится

(node:48872) [DEP0016] DeprecationWarning: 'GLOBAL' is deprecated, use 'global'

adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #378 : Февраль 04, 2019, 04:52:07 am »
Что-то не могу сообразить, как биндиг к библиотеке node.js написать? Модуль должен по другому называться? Или надо называть нужным именем, а затем просто удалять скомпилинный файл биндинга на js ?

adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #379 : Февраль 04, 2019, 04:53:32 am »
или require будет искать именно среди модулей node.js, а не в локальном проекте?

adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #380 : Март 20, 2019, 01:59:40 pm »
Подскажите, пожалуйста, на что ругается (знаю, что-то не так с методом push)

MODULE vscodeOber;

    IMPORT JS;

    TYPE
       
        AnyOb = RECORD END;
        Any* = POINTER TO AnyOb;
       
        Disposable* = POINTER TO RECORD (AnyOb)
            PROCEDURE push* (disposable: Disposable)
        END;

    VAR
   
    PROCEDURE Disposable.push* (disp: Disposable);
    BEGIN
    END Disposable.push;

BEGIN

END vscodeOber.

Ошибка:
TypeError: internal compiler error while parsing line 12:         END;
Cannot read property 'exported' of undefined
    at checkMethodExport (C:\git\adva\vsc_oberon\oberonjs\js\EberonContextType.js:85:29)
    at Record.handleMessage (C:\git\adva\vsc_oberon\oberonjs\js\EberonContextType.js:101:4)
    at FieldList.Node.handleMessage (C:\git\adva\vsc_oberon\oberonjs\js\ContextHierarchy.js:49:22)
    at MethodHeading.Node.handleMessage (C:\git\adva\vsc_oberon\oberonjs\js\ContextHierarchy.js:49:22)
    at MethodHeading.endParse (C:\git\adva\vsc_oberon\oberonjs\js\EberonContextType.js:184:19)
    at C:\git\adva\vsc_oberon\oberonjs\parser.js:101:19
    at C:\git\adva\vsc_oberon\oberonjs\parser.js:51:8
    at C:\git\adva\vsc_oberon\oberonjs\parser.js:98:8
    at C:\git\adva\vsc_oberon\oberonjs\parser.js:36:9
    at C:\git\adva\vsc_oberon\oberonjs\parser.js:36:9
The terminal process terminated with exit code: 1


adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #381 : Март 22, 2019, 06:27:49 am »
Вопрос снят, переделал на процедуры. Простейший пример расширения для vscode на обероне заработал, дальше думаю будет проще. В принципе нашел ранее вариант использовать 1с для написания таск для vscode (о котором тут вроде упоминали - onescript). До сих пор использовал именно task, но думаю расширениями некоторые вещи будут более удобными, чем задачами. Хотя попробую переделать уже имеющийся код, и станет понятно, как лучше (по скорости написать для таск на 1с для меня быстрее)

adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #382 : Март 23, 2019, 10:09:19 am »
Если указываю открытый массив в свойстве указателя на запись, то ошибка выводится не внятная:
MODULE error;
    IMPORT JS;

    TYPE

        Options* = POINTER TO RECORD
            cwd: ARRAY OF CHAR;
        END;

BEGIN
END error.

ошибка:
File "lib\error.ob", line 6: END expected (MODULE)
При указании размера, ошибок не выдает:

MODULE error;
    IMPORT JS;

    TYPE

        Options* = POINTER TO RECORD
            cwd: ARRAY 100 OF CHAR;
        END;

BEGIN
END error.

Это можно поправить?

kkkk

  • Full Member
  • ***
  • Сообщений: 135
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #383 : Март 31, 2019, 02:19:08 am »
Что Вы хотите поправить? Если добавить внятности ошибки, то можно, но вряд ли автор транслятора будет это делать. Если возможность использовать открытые массивы в записях, то нет - это не соответствует языку.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #384 : Апрель 21, 2019, 08:27:34 pm »
Подскажите, пожалуйста, на что ругается (знаю, что-то не так с методом push)

Такие штуки надо как баги сабмитать: https://github.com/vladfolts/oberonjs/issues/51
Посмотрю на досуге.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #385 : Апрель 21, 2019, 08:32:57 pm »
Что Вы хотите поправить? Если добавить внятности ошибки, то можно, но вряд ли автор транслятора будет это делать. Если возможность использовать открытые массивы в записях, то нет - это не соответствует языку.

Да, над синтаксическими ошибками там серьезную работу надо делать, сходу не пофиксать. Поскольку грамматики опредяется в а-ля DSL, то парсер очень тупой и не может четко сказать, что ему не понравилось (только то, что вот этот конструкт не соответсвует грамматике).