Pull to refresh

Comments 14

Бляяя, XCode, Swift, Close-Source, я свернул куда-то не туда, пойду обратно в Linux habr

Так говорите, как будто это что-то плохое...

Говорят что диллема, о которой не говорят, лет на 10. Не менее. Которая будет сопровождаться втыканием палок в колеса..и пр. От сопровождения этой инфраструктуры отказались даже российские производители антивирусов. Тогда зачем эта головная боль?)

Так Swift же с открытыми исходниками. С community proposals, и этим вот всем. Или Вас закрытость Xcode напрягает?

Вот таким лёгким движением Swift превращается в Rust

Вообще (в идеале) работа с синтаксическими деревьями и создание синтаксических макросов до должны быть сложнее чем работа с HTML DOM и простейший JavaScript. Но увы, эта вообще не сильно развита, очень немногие языки поддерживают, а те которые поддерживают - делают это слишком сложно, и пока нет общепринятых сразу для многих языков подходов и договоренностей, хотя-бы об именах и синтаксисе. Не вдаваясь глубоко, первое впечатление - в Swift тоже всё как-то переусложнено.

исправляю: НЕ сложнее, чем HTML.

да, конечно, опечатка вышла))

А зачем в синтаксическом дереве хранить скобки и двоеточия, если это чисто лексические элементы и они по идее должны уходить в саму структуру дерева? Т.е. к примеру скобки - это то что формирует дочернюю ноду определенного типа.

Либо это предварительный AST либо планируется это как-то использовать.

Синтаксическое дерево строится при компиляции кода на этапе его парсинга и используется для синтаксического анализ кода: оно проверяется на корректность с точки зрения «грамматики» Swift. 

Как раз для проверки кода на корректность синтаксическое дерево содержит все элементы кода

Документация

Чтоб декларацию в отладке можно было напечатать, надо использовать генерик вместо `some ... `. При таком обкостыливании всё норм

В objective-C можно было прямо внутри кода написать что-то вроде:

#define A B

Swift макросы же по умолчанию добавляются через внешнюю зависимость. Можно ли это как-то скрыть внутри билда при отправке в app store?

При сборке приложения макросы как зависимость (сам package) используются на этапе линковки, из этого этапа убрать их нельзя - будет ругаться компилятор на импорт либы, и на объект, к которому присоединен макрос в случае attached макроса из-за отсутствия необходимой реализации.

Библиотеки SwiftSyntax на этапе линковки не отображаются, так что должны использоваться только на этапе компиляции. 

При создании архива приложения будет сгенерирован отдельный dSYM файл для макроса, других следов его присутствия я не нашла (что логично, но перепроверить стоило). Так что в финальный ipa файл макрос как внешняя зависимость не входит - входит только сгенерированный код.

Пока искала информацию, нашла статью, как можно использовать макросы без SPM (с использованием двоичного файла). Возможно будет полезно.

Sign up to leave a comment.