Как Swift вдохнул новую жизнь в синтаксический анализ

Автор книги iOS Core Animation: Advanced Techniques и создатель iCarousel и SwiftFormat Ник Локвуд хорошо знаком с преимуществами синтаксического анализа, особенно с возможностями, открывающимися для тех, кто умеет писать синтаксические анализаторы.

Недавно выступая на FrenchKit в Париже, в марте он направляется в Лондон, чтобы рассказать на iOSCon о написании синтаксических анализаторов с использованием Swift, мультипарадигменного языка Apple со статической типизацией.

С момента написания iOS Core Ник видел, как Swift уже (и будет все больше) открывать синтаксический анализ для более широкого круга разработчиков iOS.

«В отличие от естественных (разговорных) языков, большинство языков программирования имеют так называемые «регулярные» грамматики, что позволяет легко и однозначно анализировать их с помощью техники, называемой «рекурсивный спуск», — объясняет он.

«Обычно синтаксический анализ состоит из двух этапов: лексический анализ (разбивка входных данных на отдельные слова и символы) и синтаксический анализ (преобразование этих слов в осмысленные операторы или команды).

«Swift отлично подходит для выполнения обоих этих шагов (намного лучше, чем Objective-C) благодаря сочетанию очень хорошей поддержки Unicode, быстрых и эффективных структур данных, распределенных по стеку, и строгой типизации.

«Если вам удобно писать парсеры, это открывает множество интересных возможностей для написания приложений. Например, вы больше не ограничены использованием встроенных форматов, таких как Plists и JSON, для хранения данных, но вместо этого можете легко добавить поддержку эзотерических форматов, которые в настоящее время не имеют реализаций Swift, или даже создать свои собственные доменные языки. (DSL), специально оптимизированные для вашего приложения.

«То же самое относится и к сценариям. Вместо того, чтобы выбирать между жестким кодированием всей вашей бизнес-логики в Swift (с длительным циклом перекомпиляции для каждого небольшого изменения) или использованием тяжеловесного, раздутого языка сценариев, такого как JavaScript, вы можете изобрести новый язык, который идеально подходит для описания конкретных структур данных. и операции в вашем приложении, которые можно интерпретировать с гораздо меньшими затратами, чем JSVM».

Несмотря на то, что синтаксический анализ рекурсивного спуска имеет обширную историю, Ник отмечает, что внедрение Swift открыло эту технику большему количеству разработчиков iOS, избавив их от необходимости изучать второй язык, такой как C++.

«Я также чувствую, что само создание Swift и открытость, с которой его создатели и сопровождающие были готовы обсудить его развитие с сообществом, открыли нам глаза на идею о том, что языки программирования — это не то, что передается из башни из слоновой кости. , но на самом деле это то, что обычные разработчики могут понять, внести свой вклад и даже создать с нуля.

«Я надеюсь, что создание DSL станет более популярным способом решения повседневных проблем кодирования, потому что идея о том, что вы можете создавать новые инструменты, которые точно подходят к вашей проблеме, вместо того, чтобы пытаться подогнать под них уже существующие решения, очень перспективна. освобождение».

🌆Ник Локвуд обсуждает синтаксический анализ со Свифтом на iOSCon London в марте. 👍 Чтобы получать новости и статьи от Skills Matter, подпишитесь на нашу рассылку здесь.