Помогите определить модуль python (препроцессор?) «Python -m dg»

На фоне этого изображения образ вы можете найти какой-то код, который выглядит как написанный на расширенном диалекте python, который нужно обрабатывать с помощью «python -m dg» для получения «нормального» кода на языке python. Google не имеет результатов для запроса «python -m dg», а yandex.ru имеет только одну страницу в кеше, в которой кратко упоминается один пример

python -m dg <<< 'sum $ map int $ str 2 ** 1000' 

который, по-видимому, эквивалентен

 sum(map(int, str(2**1000))) 

Вы знаете, что это такое? Я хочу взглянуть на этот инструмент, но не могу найти ссылки …

Увлекательный, но, как другие ответы, совершенно незнакомый и неизвестный язык. Как вы когда-либо находили это на фоне этого снимка экрана? Мне нужно было скрасить изображение в GIMP, чтобы посмотреть, о чем вы говорили.

Диалект немного Pythonic – он использует __init__() для инициализации объекта и, кажется, имеет что-то вроде цикла Python for (хотя используется только здесь с целыми числами?) – но он занимает как минимум столько же конструкций из других языков:

  1. doend разделители из Ruby.
  2. Из Smalltalk и Ruby аргументы метода просто перечисляются с разделителем пробелов после имени метода вместо того, чтобы быть разделенным пунктуацией.
  3. Язык по какой-то причине кажется неспособным обрабатывать abc несмотря на то, что порядок операций был слева направо для таких выражений по крайней мере с момента выпуска C примерно в 1970 году. Вместо этого этот нечетный язык заставляет вас вводить {ab}.c если только я неверно понять здесь особый случай.
  4. Лямбда-функции используют parens и стрелку.
  5. Регулярные выражения имеют прямую поддержку в синтаксисе, используя r/.../ .

Для тех, кто не может ясно видеть изображение, вот фрагмент из него, показывающий все вышеперечисленные пять функций (это происходит на одном уровне, внутри фигурных скобок, начало которых мы не видим:

 def __init__(self parent: nil) do {super}.__init__ parent; self.setLayout {QGridLayout}; transform = (t) -> {r/([^>])\n/.sub '\]<br />' t}; for c in (0 4) {self.layout}.setRowStretch c 1; for c in (0 3) {self.layout}.setColumnStretch c 1; {self.layout}.addWidget {QLabel {transform self.text}} 1 1; {self.layout}.addLayout { sublayout = {QHBoxLayout}; sublayout.addWidget {QLineEdit}; sublayout.addWidget {QPushButton '<…Russian text…>'}; return sublayout; } 2 1; {self.layout}.addWidget {QLabel {transform self.footer}} 3 1; end; 

Моя дикая догадка заключается в том, что этот язык компилируется непосредственно на C ++, так как под симпатичным синтаксисом я ничего здесь не вижу, что требует динамического языка.

dg – это настраиваемый язык, который компилируется в байт-код CPython 3.4 (или последний).

Ссылка на проект на GitHub: https://github.com/pyos/dg

Флаг -m для python относится к модулю dg.py (Попробуйте python -m this похоже на попытку import this в оболочку python.)

Похоже, dg.py является интерпретатором для определенного пользовательского языка. Верхняя половина вашего изображения выглядит как фрагмент кода на этом языке « dg ». Он работает на KDE и, кажется, использует библиотеку Qt. Невозможно найти его в Интернете.

Я думаю, что это имя ('dg') – просто рум. Поэтому не тратьте время на такие вещи.