Задать вопрос
  • Ругается антивирус на безвредную программу, как решить?

    @MichaelMih Автор вопроса
    Нашел решение. Сначало, при помощи cython компилируем код в C

    cython -3 script.py
    Следом, компилируем C в EXE
    https://docs.microsoft.com/ru-ru/cpp/build/walkthr...
    Ответ написан
    Комментировать
  • Как создать свой PL?

    Vindicar
    @Vindicar
    RTFM!
    Даже для простого ЯП тебе придётся решить минимум четыре задачи:
    1. Лексический анализ. Входной текст нужно превратить в цепочку токенов, например z = x + y превратится в что-то типа
    [ (token.IDENTIFIER, 'z'), (token.OPERATOR, '=') (token.IDENTIFIER, 'x'), (token.OPERATOR, '+') (token.IDENTIFIER, 'y') ]

    2. Синтаксический анализ. Тебе нужно превратить цепочку токенов в древовидную структуру. Корень дерева - программа целиком, промежуточные узлы - элементы программы (функции, составные операторы, сложные выражения и пр.), листья - отдельные элементы сложных выражений и примитивные операции без параметров (типа pass в питоне).
    Например цикл while будет иметь два дочерних узла: выражение-условие и тело цикла.
    3. Области видимости. Тебе нужно иметь возможность сопоставить имя(идентификатор) и сущность (переменную, функцию и т.п.).
    Самый простой способ - позволить узлу дерева описывать идентификаторы, которые известны в этом узле. Тогда при раскрытии идентификатора достаточно подняться вверх по дереву, пока не найдёшь нужное имя.
    4. Выполнение. Так как ты хочешь интерпретируемый язык, то выполнение будет сводиться к обходу дерева в глубину. Некоторые операторы типа break могут вмешиваться в этот порядок. Это описывается паттерном Интерпретатор из набора Банды Четырёх.

    Отдельные задачи в этом списке вполне себе гуглятся, и могут решаться по-разному.
    Ответ написан
    1 комментарий
  • Как создать свой PL?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    1 комментарий
  • Как подключиться к python программе на Heroku?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Во-первых, Heroku - не хостинг. Во-вторых, worker'ы предназначены для выполнения фоновых задач, поэтому платформа им порты не публикует.
    Ответ написан
    3 комментария
  • Как создать соединение через интернет, а не через имитатор локальной сети?

    Vindicar
    @Vindicar
    RTFM!
    В базовом случае у сервера должен быть внешний IP и открыт соответствующий порт.
    Если сервер за подконтрольным NAT (например, роутером), то порт должен быть проброшен через NAT.
    Если сервер за провайдерским NAT (который пользователю неподконтролен), то тут уже сложнее. Есть техники NAT traversal, но они не вполне тривиальны и обычно требуют наличия вспомогательного узла с внешним IP.
    Ответ написан
    Комментировать