Компилятор с нуля | Часть 3: как работает стек; полноценная арифметика
В третьей части курса "Компилятор с нуля" разбираемся, что такое стек (Stack), как он работает и зачем стек нужен компилятору при обработке арифметических выражений. Расширим наш компилятор до полноценной арифметики: сложение, вычитание, умножение, деление и скобки. Разберёмся, как правильно реализовать приоритет операций и почему обычная леворекурсивная грамматика создаёт проблемы для рекурсивного нисходящего парсера. В этой серии: • что такое стек и принцип LIFO; • операции PUSH и POP; • как стек используется при вычислении выражений; • парсинг арифметических выражений; • что такое леворекурсивная грамматика; • как избавиться от левой рекурсии в грамматике; • как реализовать приоритет операций +, -, *, /; • как обрабатываются скобки; • построение AST - абстрактного синтаксического дерева; • генерация кода из AST; • как арифметическое выражение превращается в исполняемый код. Продолжаем шаг за шагом писать настоящий компилятор и разбираться, что происходит с программой между исходным кодом и машинными инструкциями. Исходный код курса: https://github.com/the-lenoz/compiler_lessons Это третья часть курса «Компилятор с нуля». Если что-то осталось непонятно — пишите в комментариях. Предлагайте и темы, которые стоит подробнее разобрать в следующих частях. #компилятор #compiler #стек #stack #parser #парсер #AST #грамматика #Python #программирование #computerscience
Название:
Компилятор с нуля | Часть 3: как работает стек; полноценная арифметика
Категория:
Разное