Расширение доступно для использования без компиляции - PullRequest
0 голосов
/ 11 мая 2018

Я хотел проверить, нужно ли компилировать код перед использованием только что созданного расширения. В качестве теста я создал образец расширения

extension String {
    func checkExtension() {

    }
}  

Когда я это сделал, я не сохранял изменения в файле Swift и не компилировал код. Но checkExtension был доступен для переменной String.

Запрос : Как SDK узнает без компиляции, что расширение создано и его функции можно использовать в соответствующем классе?

1 Ответ

0 голосов
/ 11 мая 2018

Компилятор Swift Front End позаботится об этом.

Таким образом, компилятор делится на передний и задний.

Front End : заботится о лексическом анализе, синтаксическом анализе (разборе), семантическом анализе

Back End : оптимизация, машинно-зависимая оптимизация,Генерация кода.(иногда анализ и оптимизация называются промежуточным звеном)

В архитектуре компилятора Swift они называют лексический анализатор и синтаксический анализатор парсером.который строит AST (абстрактное синтаксическое дерево).Который используется, чтобы знать, к чему принадлежат, и AST используется для нахождения ошибки, когда мы вводим неправильно, и Auto Complete и т.д. Расширение Simillarly swift работает таким образом.

Backend вступает в игру, когда мы сами создаем или компилируем.Который мы чаще всего называем компилятором, когда говорим о компиляторах.Но в большинстве IDE всегда есть действующий конец.

Ссылка: https://swift.org/compiler-stdlib/#compiler-architecture

...