Skip to content

sc0dyx/pseudogen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚡ pseudogen — Pseudocode && Blockscheme Generator

Автоматизированный конвейер для студентов, превращающий исходный код в идеальные блок-схемы строго по ГОСТ 19.701-90 и чистый псевдокод. Больше никакой ручной отрисовки стрелочек в Visio или Draw.io. Генерируй схемы в один клик и получай свои заслуженные 9 и 10 на лабах!


🔥 Фичи

  • Полная всеядность: Автоматически распознает и парсит файлы на C++ (.cpp, .hpp) и Python (.py).
  • Тотальный клининг текста: Вырезает плюсовый и питонячий мусор (int main(), std::, endl, ;).
  • ГОСТ-оформление: Автоматически форматирует ввод/вывод в стиле Ввод: ... / Вывод: ..., разворачивает инкременты (i++ -> i = i + 1) и ставит красивые математические знаки (×, ÷, ).

🛠 Установка и Запуск

pip install git+https://github.com/sc0dyx/pseudogen.git

Или другую версию (которую вам надо)

pip install git+https://github.com/sc0dyx/pseudogen.git@0.2.2

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

1. Генерация текстового псевдокода

pseudogen -i input.cpp -g default.pgen -o output.txt -t pseudocode

2. Генерация ГОСТ блок-схемы (JSON)

pseudogen -i лаба.cpp -o schema.json -t blockscheme

(Для Python-файлов просто скорми .py вместо .cpp — скрипт сам переключит парсер под капотом).

Важно

  • Генератор блок-схем из кода на Python и C++. Изначально создавался для автоматизации рутинного оформления лабораторных работ по программированию.
  • Многие преподаватели требуют, чтобы программа имела ровно одну точку входа и одну точку выхода – никаких скрытых выходов через return в середине функции, никаких преждевременных завершений. Кроме того, в учебных задачах часто запрещены операторы break и continue – логика должна быть выражена только через структуры if-elif-else и циклы с условиями. Эти правила восходят к принципу SISO (Single Input, Single Output) — «один вход, один выход», который был сформулирован в конце 1960-х годов и лёг в основу структурного программирования.

Текущие ограничения

❌ Не поддерживаются break и continue – генератор ожидает, что выход из цикла происходит только по условию.

❌ Не поддерживается return в середине функции – предполагается единственная точка выхода.

❌ Ограниченная поддержка C++ – парсер C++ всё ещё уступает Python-версии

❌ Нет автоматического выравнивания блоков – координаты блоков пока фиксированы, схему может потребоваться «разъехать» вручную в редакторе.

❌ Нет поддержи do while в с++

❌ Нет поддержки функций


🚀 Как получить готовую картинку?

  1. Сгенерируй JSON-файл схемы с помощью команды выше.
  2. Зайди на сайт: Редактор блок-схем programforyou.ru
  3. И загрузи свой JSON.
  4. Забирай идеальную схему со стрелочками!

Пример

Написал я вот такой код на С++

#include <iostream>

int main(){
  std::cout << "Начало счетчика" << std::endl;
  for (int i = 0; i < 10; i++){
    std::cout << i << std::endl;
  }
  std::cout << "Конец счётчика" << std::endl;
  return 0;
}

файл назвал example.cpp

 ⚙  scodyx@localhost  ~/git/pseudogen   main  python3 -m src.pseudogen -i example.cpp -o output.json -t blockscheme   

[C++] Diagram has been saved as output.json
Upload it here: https://programforyou.ru/block-diagram-redactor
 ⚙  scodyx@localhost  ~/git/pseudogen   main 

теперь загружаем файл output.json на сайт

image

и вот результат

pseudogen_demo

🏛 Credits & Благодарности

Проект вобрал в себя лучшие идеи из заброшенных студенческих репозиториев и взлетел благодаря кодовой базе истинного мастера кодинга:

  1. GachiLord (ГачиЛорд) — настоящий Dungeon Master статического анализа. Спасибо ему за базовую логику парсинга, реализованную в проектах Python2FlowChart и PyChart. Оригинальный код перенёс суровый fisting со стороны Python 3, был полностью очищен от багов с импортами, избавлен от циклического наследования и адаптирован под монолитную архитектуру. Boy Next Door одобряет! ♂️ 👑

Сделано студентом для студентов. Пользуйтесь, кайфуйте и закрывайте дедлайны по щелчку пальцев! 🍻

Планируем переписать python код на С++ (скоро ... )

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors