Skip to content

Slava314/fl-project-ebnf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 

Repository files navigation

EBNF + ANTLR project

Работали с формальной системой определения синтаксиса EBNF и генератором парсера ANTLR.

Синтаксис языка

  1. Повторение *()
  2. Опциональный оператор ?()
  3. Конкатенация (),()
  4. Альтернатива ()|()
  5. Скобки для группировки ( )
  6. Однострочные комментарии %
  7. Многострочные комментарии #{ }#
  8. Пробельная вложенность - четное количество пробелов (0 пробелов — 0 уровень, 2 пробела — 1, …)
  9. Идентификаторы — состоит из цифр 0-9, английский букв [a-zA-Z] и нижнего подчеркивания и пробелов между словами, в начале разрешается иметь только букву
  10. Литералы — цифры, английские буквы и нижнего подчёркивания, в двойных кавычках
  11. Описание определения : Идентификатор -> определение В правой части пробелы могут быть в любом количестве
  12. Каждая строка заканчивается символом ;
  13. Конец файла обозначается символами EOF
  14. Пустое правило имеет вид rule1 = ;

Особенность языка

Язык чувствителен к пробелам. В языке реализована вложенность блоков (по аналогии с языком Python). Следующий уровень вложенность -- 2 пробельных символа. Правила во вложенном блоке являются вспомогательными для правила на уровень выше.

Сборка проекта

  1. Скачать ANTLR -- https://github.com/antlr/antlr4/blob/master/doc/getting-started.md
  2. Скачать модуль для python -- pip install antlr4-python3-runtime
  3. Генерация парсера -- antlr4 -Dlanguage=Python3 -visitor ebnf.g4
  4. Передача тестовых файлов -- python3 visitor.py test.txt

Задача участников

Воробьев Вячеслав

  1. Написана грамматика для языка с помощью ANTLR
  2. Написан парсер на Python, который строит AST и выводит в текстовом виде
  3. Обработаны ошибки при парсинге и сделаны проверки на корректность

Шеремеев Андрей

  1. Поддержка языка в среде разработки VSCode Реализованы:
  • подсветка синтаксиса
  • поддержка snippet'ов с автоматической вставкой конструкций языка
  • анализ синтаксиса на автодополнение правил, объявленные выше и находящиеся в зоне видимости данного правила
  • анализ синтаксиса на использование необъявленных ранее правил
  1. Написаны тесты для языка

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published