Веб приложение, предоставляющее API и веб-интерфейс для изучения алгоритмов построения LR-автоматов.
Ниже представлен LR(1)-автомат, построенный для грамматики:
S -> AA
A -> aA | b
Лог построения этого автомата:
[0] COMMENT buildLrAutomaton: Построим LR-автомат lr(1)
[1] COMMENT extendGrammar: Расширяем исходную грамматику.
[2] ACTION addState: Добавляем состояние '∇'.
...
[58] ACTION addTransition: Добавляем переход из состояния 'a2' в состояние 'a2' по символу 'a'.
[59] COMMENT startAddNewTransitions: Просматриваем состояние 'A3'
[60] COMMENT startAddNewTransitions: Просматриваем состояние 'A4'
LALR-автомат, построенный по той же грамматике:
Чтобы собрать программу, нужно предварительно установить:
git clone git@github.com:Fenya2/lrviz.git
cd lrviz
mvn packageПосле успешной сборки исполняемый jar-файл будет находиться в директории target/.
Для экспорта изображений графов на сервере должен быть установлен пакет Graphviz.
sudo apt install graphvizПриложение запускается следующей командой:
java -jar PATH_TO_APPгде PATH_TO_APP - путь к исполняемому jar-файлу приложения
Note
jar-файл приложения можно собрать самостоятельно или же загрузить со страницы релизов приложения
По умолчанию запущенное приложение доступно из браузера по адресу http://localhost:8080.
Веб-интерфейс приложения представляет собой SPA-приложение, использующее REST API. Документация к API находится на странице http://localhost:8080/api/docs/guide.html.
Note
Также приложение развернуто в публичной сети и доступно по адресу https://llr.su.
При возникновении вопросов можно создать issue или связаться со мной:
- Email: fenya74.09@gmail.com
- Telegram: @fenya00
Tip
Проект вдохновлен https://github.com/schnorr/ellerre

