Этот курс представляет собой дружелюбное для новичков введение в компиляторы. Мы будем постепенно разрабатывать интерпретатор для простого скриптового языка.
Мы рассмотрим:
Лексический анализ
Синтаксический анализ
Алгоритмы разбора
Промежуточное представление (AST)
Формальные языки и грамматики
Нотацию Бэкуса-Наура (BNF) и синтаксические диаграммы
Обнаружение и обработку ошибок
Генерацию кода
Создание собственной виртуальной машины (VM)
Генерацию байт-кода
Проверку типов
LLVM IR
Простую оптимизацию кода
…и многое другое!
Компиляторы всегда считались сложной темой, и их историческая связь с "драконами" (начиная с Книги о драконах) только добавляла этому мифу загадочности. Мы постараемся объяснять все с учетом уровня новичков. Этот курс можно назвать «первым курсом» по компиляторам для разработчиков, которые еще не писали интерпретаторы.
Что мы создадим
Мы будем разрабатывать компилятор для простого языка программирования под названием Pinky. Это будет условный скриптовый язык с синтаксисом, вдохновленным Lua и ALGOL W.
Основным языком курса станет Python, который позволит нам сосредоточиться на концепциях, специфичных для компиляторов, при этом оставаясь продуктивными. Кроме того, мы дадим полезные советы по реализации этих идей на языке C.
Необходимые инструменты
Все, что вам нужно, - это командная строка, простой текстовый редактор и интерпретатор Python. Эти инструменты кроссплатформенные, так что вы сможете работать как на Windows, так и на macOS или Linux.
Курс не требует предварительных знаний, но знание основ программирования (if-else, циклы, функции) поможет лучше освоить материал.
Посмотреть больше
Это пробный урок. Оформите подписку, чтобы получить доступ ко всем материалам курса. Премиум
Ограничение времени просмотра
Вы можете просматривать пробный урок только 10 минут. Получите полный доступ, чтобы смотреть без ограничений.
Gustavo Pezzi - преподаватель университета в Лондоне, Великобритания. Он получил несколько образовательных наград в качестве учителя и также является основателем pikuma.com. Густаво преподает основы информатики и математики; его академический путь включает такие учебные заведения, как Государственный университет Питтсбурга, Городской университет Лондона и Оксфордский университет.
"We are adding a new chapter on LLVM IR to our "Compilers & Interpreters" module. It will go live early next week." - pikuma on X
Prepare urself, I will notify you next week.
CourseHunter Team
Umaru
Yes, please let us know if we miss it
dasr43475
CourseHunter Team
Meownager , I am sorry for the harsh comments previously made by me on this course 🙁🙁
But all the text files under each module of the course is missing
Module Name Missing Files
-------------------------------------------------------------------------------
Introduction Your Favorite Programming Language
The Nature of Computation CPU Status Flags
The Nature of Computation CPU Components Quiz
The Nature of Computation Why the 68000?
Structure of a Program Types of Compilers
Scanning Tokens Why Not Just Use a RegEx?
Scanning Tokens Stropping
Scanning Tokens Different Languages & Comments
Scanning Tokens Watching our Memory Footprint
Parsing Expressions S-expressions
Displaying Errors Error Recovery Strategies
Interpreting Expressions Can We Subtract Strings?
Interpreting Expressions Chained Expressions
Program Statements Automatic Semicolon Insertion
Program Statements Delimiting Blocks & Dangling Else
Program State To "Var" or Not to "Var"?
Loop Statements Turing Completeness
Loop Statements The ALGOL Family of Languages
Emitting Instructions I Was Promised Bytes!
Emitting Instructions Where are Instructions Stored?
Writing a VM Unpacking Argument List
VM Jumps & Branches Encoding Stack Values with C
Stack & Register VMs P-Machine & P-Code
Type Systems & Type Checkers Purposes of a Type System
-------------------------------------------------------------------------------------------------------
All these are the missing files in the course archive
can you please kindly check and add those files please meownager 🙏🙏
Thanks in advance 😅🙏❤️
dasr43475
dasr43475
I am sorry , I gave space in between the two columns but the system stripped the whitespace and sadly now I cant edit and put semicolons or slash in between
Baktash
Update please
CourseHunter Team
Baktash
updated
Команда внимательно читает ваши комментарии и оперативно на них реагирует. Вы можете спокойно оставлять запросы на обновления или задавать любые вопросы о курсе здесь.
Курс поможет понять и решить все вопросы, связанные с экзаменом GATE. Компиляторы предоставляют вам теоретические и практические знания, необходимые для реализации языка программирования. Как только вы научитесь компиляторовать, вы в значительной степени узнаете внутренности многих языков программирования. Кроме того, вам станет легко судить о языке программирования по его основным функциям.
Мы строим небольшой компилятор из стандартных компонентов: токенизатор, анализатор и генератор кода. К концу мы успешно скомпилируем некоторый код на нашем языке, создавая вывод JavaScript, который мы можем выполнить. Большинство компиляторов сильно оптимизированы для скорости, но наши оптимизированы для удобства чтения и понимания.
В современных реализациях компиляторов стало популярным преобразовывать один высокоуровневый язык в другой. Примеры включают транспиляцию новых версий JavaScript в более старые или преобразование TypeScript в JavaScript. Такие компиляторы называются транспайлерами, и именно им посвящён этот курс.
Разработка компилятора с выводом статических типов
Building a Static Type-Inferring Compiler
В этом курсе вы научитесь создавать статическую систему проверки типов и генератор двоичного машинного кода! По пути вы также узнаете, как компиляторы могут заранее обнаруживать ошибки имён (например, необъявленные переменные), а также освоите основы создания форматтера кода. Курс не охватывает парсинг исходного кода или работу интерпретаторов - этим темам посвящены другие курсы, например, «Создание собственного языка программирования».
Prepare urself, I will notify you next week.
But all the text files under each module of the course is missing
Module Name Missing Files
-------------------------------------------------------------------------------
Introduction Your Favorite Programming Language
The Nature of Computation CPU Status Flags
The Nature of Computation CPU Components Quiz
The Nature of Computation Why the 68000?
Structure of a Program Types of Compilers
Scanning Tokens Why Not Just Use a RegEx?
Scanning Tokens Stropping
Scanning Tokens Different Languages & Comments
Scanning Tokens Watching our Memory Footprint
Parsing Expressions S-expressions
Displaying Errors Error Recovery Strategies
Interpreting Expressions Can We Subtract Strings?
Interpreting Expressions Chained Expressions
Program Statements Automatic Semicolon Insertion
Program Statements Delimiting Blocks & Dangling Else
Program State To "Var" or Not to "Var"?
Loop Statements Turing Completeness
Loop Statements The ALGOL Family of Languages
Emitting Instructions I Was Promised Bytes!
Emitting Instructions Where are Instructions Stored?
Writing a VM Unpacking Argument List
VM Jumps & Branches Encoding Stack Values with C
Stack & Register VMs P-Machine & P-Code
Type Systems & Type Checkers Purposes of a Type System
-------------------------------------------------------------------------------------------------------
All these are the missing files in the course archive
can you please kindly check and add those files please meownager 🙏🙏
Thanks in advance 😅🙏❤️