Публикации по теме 'compilers'


Создайте интерпретатор JS в JavaScript, используя Acorn в качестве парсера
Узнайте, как работает движок JS, создав собственный интерпретатор JS - на JS. В этом посте мы узнаем, как работает JS-движок, создав собственный JS-интерпретатор на JS! Как-то странно создать языковой интерпретатор с использованием этого языка, не правда ли? Тем не менее, я сделал это потому, что вы больше знаком с JS. Вы можете перевести код JS, который мы здесь напишем, на другой язык по вашему выбору. Возможно, это не обязательно, но знание того, как работает ваш повседневный..

Оптимизирующий компилятор JavaScript
JavaScript в C ++ для более быстрого JavaScript Сегодня я собираюсь провести смелый эксперимент. Придумываем оптимизирующий компилятор JavaScript для JavaScript. Оптимизировать по какой метрике? Производительность выполнения кода (например, сколько времени нужно, чтобы вычислить n-е простое число). Я начал с того, что прочитал статью Сурма , защитника разработчиков Google, Является ли WebAssembly волшебной производительностью, пикси-пылью? . Пойдите, посмотрите, это..

Как выполнить объектный файл: часть 2
Обработка переездов В предыдущем посте мы узнали, как анализировать объектный файл, а также импортировать и выполнять из него некоторые функции. Однако функции в нашем игрушечном объектном файле были простыми и самодостаточными: они вычисляли свои выходные данные исключительно на основе своих входных данных и не имели никакого внешнего кода или зависимостей данных. В этом посте мы будем опираться на код из части 1 , исследуя дополнительные шаги, необходимые для обработки кода с..

Анализ выражений в JavaScript
Подробный анализ утверждений и выражений (и различий между ними) В языках программирования у нас есть инструкции и выражения. Операторы выполняют действие, но выражения оценивают некоторое значение - оно может быть любого типа: Нить Число Логическое значение (истина или ложь) Объект Оператор - это инструкция, которую может выполнить интерпретатор. У нас есть: while заявления Операторы for loop операторы присваивания операторы объявления переменных Операторы if..

Интерпретатор байт-кода регулярных выражений: поиск иголок в стогах сена сеанса
Интерпретатор байт-кода регулярных выражений: поиск иголок в стогах сена сеанса Здесь, в Badoo, каждый день происходит 17 миллиардов событий, миллионы пользовательских сессий и огромное количество виртуальных свиданий. Каждое событие тщательно анонимизируется и сохраняется в реляционных базах данных для последующего анализа с использованием SQL и языков, подобных SQL. Современные распределенные базы данных, содержащие десятки терабайт данных, - настоящее чудо инженерного гения...

Компиляция VS Полифиллинг
Компиляция против полифиллинга Компиляция в JavaScript. Компиляция - это не что иное, как транспиляция . Транспилирование - это подмножество компиляции, при котором исходный код одного языка конвертируется в другой язык или в другую версию того же языка. Компиляция также означает не вводить новые функции во время преобразования. Полифиллинг - это способ добавить функциональность, которой нет изначально. Это означает, что если вы используете встроенную функциональность, которая..

Написание настраиваемого преобразователя AST TypeScript (часть 3)
Написание настраиваемого преобразователя AST TypeScript (часть 3) Это продолжение Части 2 и более глубокое погружение в парочку продвинутых приемов, которые я использовал при написании своих трансформеров. Импорт без TS Импорт без TS позволяет мне объявлять явные зависимости от статических ресурсов, таких как CSS / png / svg, других файлов, отличных от JS, и даже внешней инструментальной цепочки сборки. Это важно при работе с большой кодовой базой, так как легче отследить цепочку..