Какой инструмент предоставляет самый простой способ создания текстового внешнего DSL для простого перевода кода? - PullRequest
0 голосов
/ 20 марта 2019

В моем приложении я должен ввести некоторый код для конкретного домена, и я хотел бы создать DSL для этого.DSL просто должен иметь некоторые действительно базовые команды.

Пример кода DSL:

srccode{
    code: "if("
    func: insertInputData(1)
    code: "){\n    "
    func: insertOutputData(0)
    code: "\n}\n"
    cond: checkForOutputConnection(1):
        code: "else{\n    "
        func: insertOutputData(1)
        code: "\n}\n"
}

Этот код должен быть переведен в исходный код языка общего назначения (например, Python), например:

def getSrcCode():
    s = ""
    s += "if("
    s += insertInputData(1)
    s += "){\n    "
    s += insertOutputData(0)
    s += "\n}\n"
    if(outputConnected(1)):
        s += "else{\n    "
        s += insertOutputData(1)
        s += "\n}\n"
    return s

Так что на самом деле речь идет просто о простом переводе.

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

(это может быть неправильно, я не использовал ни одного из нихпока)

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

1 Ответ

0 голосов
/ 28 марта 2019

Это правда, что вы не можете избавиться от проекционного редактора в MPS, но с хорошим дизайном DSL, вы можете ограничить конечного пользователя и контролировать его поток.

Если вы решите дать шанс редактору проекций, этот плагин вам понадобится http://dslfoundry.com/first-prototype-of-plaintextflow-released/

Cheers!

...