Полезное
10 мая 2025
В предыдущих частях мы построили полноценную систему разбора и вычисления математических выражений: реализовали токенизацию, синтаксический разбор с помощью трёх различных парсеров, поддержку унарных операторов, функций с переменным числом аргументов и проверку синтаксических ошибок. Всё это позволило получать корректные выражения в виде постфиксной записи (RPN) и эффективно их вычислять. Однако постфиксная форма плохо подходит для отображения: её структура непрозрачна, а порядок выполнения операций неочевиден без подготовки. В этой части мы научимся преобразовывать выражение из RPN обратно в человекочитаемую инфиксную форму.
Читать далее (внимание, статья с личного блога Перминова Андрея)
Парсим математические выражения на чистом Javascript. Часть 5: парсер Пратта
04 мая 2025
В этой статье мы познакомимся с парсером Пратта – элегантной техникой синтаксического анализа, которая позволяет компактно и эффективно разбирать выражения с различными приоритетами и ассоциативностью операторов. В отличие от рекурсивного спуска, парсер Пратта не требует предварительно заданной иерархии в виде отдельных методов: вся логика сосредоточена в обработчиках токенов, которые знают, как себя вести в зависимости от контекста.
Читать далее (внимание, статья с личного блога Перминова Андрея)
Парсим математические выражения на чистом Javascript. Часть 4: парсер рекурсивного спуска
04 мая 2025
В предыдущих частях мы разобрали токенизацию математических выражений, научились вычислять выражения в обратной польской записи и построили алгоритм сортировочной станции для перевода в RPN. Однако существует и другой, более выразительный способ синтаксического анализа – рекурсивный спуск. Этот метод лежит в основе множества настоящих парсеров, и его мощь в том, что он тесно связан с формальными грамматиками. В отличие от сортировочной станции, здесь правила синтаксиса можно выразить напрямую в виде вложенных функций, каждая из которых соответствует определённому уровню приоритета операций.
Читать далее (внимание, статья с личного блога Перминова Андрея)
Парсим математические выражения на чистом Javascript. Часть 3: алгоритм сортировочной станции
03 мая 2025
В предыдущей статье мы реализовали калькулятор выражений, записанных в обратной польской записи – структуру, идеально подходящую для быстрого и однозначного вычисления выражений. Однако остаётся вопрос: как получить RPN из привычной инфиксной записи (с операциями, скобками, переменными и функциями)? Один из классических ответов на этот вопрос – алгоритм сортировочной станции (Shunting Yard Algorithm), предложенный Дейкстрой. Именно его мы сегодня и реализуем.
Читать далее (внимание, статья с личного блога Перминова Андрея)
03 мая 2025
В этой части мы познакомимся с обратной польской записью (Reverse Polish Notation, RPN) – универсальным представлением выражения, не требуещее скобок и знания приоритетов операций, и реализуем калькулятор, вычисляющий выражения, записанные в формате RPN.
Читать далее (внимание, статья с личного блога Перминова Андрея)
Парсим математические выражения на чистом Javascript. Часть 1: токенизация
02 мая 2025
Во многих задачах – от калькуляторов до интерпретаторов и даже научных редакторов – возникает необходимость обрабатывать математические выражения. Казалось бы, можно просто использовать eval, но у него есть множество недостатков. Именно поэтому мы реализуем собственный парсер выражений, полностью управляемый и расширяемый.
Читать далее (внимание, статья с личного блога Перминова Андрея)
Как создать линейную диаграмму на чистом Javascript и SVG
10 мая 2025
Линейная диаграмма – это один из самых наглядных и популярных способов отобразить изменение числовых значений с течением времени. Её часто используют для визуализации трендов, показателей роста, температуры, курса валют и любых других данных, где важна последовательность и динамика. В этой статье вы узнаете, как с нуля реализовать линейную диаграмму на чистом JavaScript и SVG. Без сторонних библиотек, только нативный код и простая логика.
Читать далее (внимание, статья с личного блога Перминова Андрея)
Как создать столбчатую диаграмму на чистом Javascript и SVG
22 апреля 2025
Столбчатые диаграммы — один из самых простых и наглядных способов показать сравнение значений. В этой статье мы создадим такую диаграмму самостоятельно!
Читать далее (внимание, статья с личного блога Перминова Андрея)
Как создать пончиковую диаграмму на чистом Javascript и SVG
22 апреля 2025
Линейная диаграмма – это один из самых наглядных и популярных способов отобразить изменение числовых значений с течением времени. Её часто используют для визуализации трендов, показателей роста, температуры, курса валют и любых других данных, где важна последовательность и динамика. В этой статье вы узнаете, как с нуля реализовать линейную диаграмму на чистом JavaScript и SVG. Без сторонних библиотек, только нативный код и простая логика.
Читать далее (внимание, статья с личного блога Перминова Андрея)
Как создать граф с помощью нашего онлайн редактора
26 мая 2022
В 2021 году мы написали свой собственный редактор графов. В 2022 году мы наконец написали к нему инструкцию. Из неё вы узнаете, как создать граф, какие алгоритмы можно запустить на графах, в какие форматы можно сохранить граф и многие другие особенности редактора.