Кодим на Rust: грамматика для калькулятора

Поделиться
HTML-код
  • Опубликовано: 15 сен 2024
  • Как разобрать выражения вида 25 + 8 / 4 + 5 * (127 + 9)?
    Пишем формальную грамматику для арифметических выражений с поддержкой приоритета операций, использую нотацию Бэкуса-Наура с использованием библиотеки LALRPOP.
    Получаем сгенерированный автомат с магазинной памятью для разбора этой контекстно-свободной грамматики на языке RUST! Проверяем парсер и получаем абстрактное синтаксическое дерево (AST), по которому вычисляем значение.
    Визуализация в следующем видео!
    Предыдущее видео: • Как написать свой язык...
    Исходный код: github.com/kgr...
    Документация по LALRPOP: lalrpop.github...
    Видео про красно-черное дерево: • Rust: Красно-Черное де...
    #rust #grammar

Комментарии • 4

  • @datadriventhinking5055
    @datadriventhinking5055 4 года назад +2

    Класс! В каких проектах и задачах данный парсер может пригодиться?

    • @kosayk007
      @kosayk007  4 года назад +3

      В приложении калькулятор, при написании своего языка программирования или среды типа matlab и т.п.

    • @datadriventhinking5055
      @datadriventhinking5055 4 года назад

      @@kosayk007 Спасибо)

  • @romanbush5164
    @romanbush5164 4 месяца назад

    а я изучаю antlr3. там наверно более удобно это сделано)