nazarpunk, из того, что я разобрал: каждой функции присвоен так называемый токен. Он видит ключевое слово, получает ее токен, далее по нему решается что с этим делать - если это, предположим, инклуд, то надо подключить еще файл, если это ф-ция - то исполнить функцию.
Это надо садиться и целенаправленно разбирать этот их компайлер. Я более приоритетными вопросами озадачен, поэтому сильно не вникал пока что. Но в перспективе хочу разобраться, конечно. Штука интересная))
Какой-то предварительный анализ при запуске тоже есть, но до него я в коде не докопался. Можно прошляпить что-то по синтаксису (точку с запятой, например), а оно нормально запускается и еще и исполняет код.
А бывает напишешь обращения к функциям неправильно (лишние аргументы, например), а оно все равно работает. Но в точке исполнения этого обращения обрывает блок кода, из которого это вызвано, пишет в логи, но работает дальше.
А иногда можно заюзать какие-то конструкции, которые он не поддерживает. И тогда он ошибку при запуске выдает. Отсюда вывод, что какой-то анализ он таки делает при запуске, вот только я не знаю какой.
nazarpunk, чисто технически, имя класса этой читалки COMPILER.
Но как по мне - это толи парсер, толи интерпретатор (я не силен в таких штуках). Оно на ходу их читает, да. Можно прям в запущенной игре код менять и файлы кусками подключать/отключать.
Код не исполняется напрямую. Оно его читает, ищет знакомые слова и вызывает нужные функции. Это интерпретацией же называют?
nazarpunk, в качестве эксперимента я попробую скормить это игре и посмотреть как оно себя поведет.
Уверее, что работать это не будет, интересно только как именно.
Из-за того, что нормальной компиляции нет, такие вещи могут вести себя очень непредсказуемо. Например выполнится до первой кавычки и отвалится до конца блока кода. А дальше опять всё будет выполняться
nazarpunk, никак не понять. Тут ссылочный тип проприетарный, еще и на костылях.
С этим сложности, да. Поэтому макимально всем рекомендуется подписывать типы данных в названии переменных, чтоб хоть как-то снизить жопную боль.
nazarpunk, или я что-то не понял, или твой out это просто переданная ссылка, в которую ты данные закидываеш, а не используеш.
Если да - то да, передача ссылок присутствует и такие финты делать можно.
nazarpunk, ну общество же. Отсюда и слово такое "общепринятый".
Так разве кто-то отрицает специфичность SQL? Да, он очень специфичен. Но на нем и задачи выполняются не совсем классического направления программирования.
nazarpunk, не проверял, кстати. Но я не думаю, что там такие примитивные ошибки есть.
Я сильно в ихний "компайлер" не вникал, пока что. Только поверхностно смотрел.
nazarpunk, луа на своем франзуском диалекте и своими проприетарными проблемами.
1С вон вообще на русском написан. Его тоже будем в один ряд с типовыми ЯП ставить?
nazarpunk, совместно с Rasarak удалось разгадать тайну работы bool в этой шайтан-машине:
int a;
if (a == true) {} // при таком обращении 1 возвращает true, а все остальные числа - false
if (a) {} // а при таком - 0 возвращает false, a все остальные числа true
Ред. avuremybe
» Корсары / Заголовочные файлы
А бывает напишешь обращения к функциям неправильно (лишние аргументы, например), а оно все равно работает. Но в точке исполнения этого обращения обрывает блок кода, из которого это вызвано, пишет в логи, но работает дальше.
А иногда можно заюзать какие-то конструкции, которые он не поддерживает. И тогда он ошибку при запуске выдает. Отсюда вывод, что какой-то анализ он таки делает при запуске, вот только я не знаю какой.
Ред. avuremybe
» Корсары / Заголовочные файлы
» Корсары / Типы данных
Уверее, что работать это не будет, интересно только как именно.
Из-за того, что нормальной компиляции нет, такие вещи могут вести себя очень непредсказуемо. Например выполнится до первой кавычки и отвалится до конца блока кода. А дальше опять всё будет выполняться
» Корсары / Передача данных
С этим сложности, да. Поэтому макимально всем рекомендуется подписывать типы данных в названии переменных, чтоб хоть как-то снизить жопную боль.
Ред. avuremybe
» Корсары / Передача данных
Если да - то да, передача ссылок присутствует и такие финты делать можно.
» Корсары / Массивы
» Корсары / Директивы
Я сильно в ихний "компайлер" не вникал, пока что. Только поверхностно смотрел.
» Корсары / Массивы
Про нумерацию с единицы ты уже упомянул.
Есть еще кейворды на французском, типа nil :D
» Корсары / Условные операторы
Интересно. Завтра обязательно проверю
» Корсары / Массивы
По ней можно такие же статьи писать, с красными плашками
» Корсары / Директивы
Чтоб читателя не нагружать лишней информацией.
Ред. avuremybe
» Корсары / Условные операторы
» Корсары / Массивы
1С вон вообще на русском написан. Его тоже будем в один ряд с типовыми ЯП ставить?
Ред. avuremybe
» Администрация XGM / Очередные баги с ЕХР
Такое впечатление, что оно игнорит именно ответы на другой комментарий.
» Корсары / Условные операторы
» Корсары / Условные операторы
» Корсары / Условные операторы
Ред. avuremybe
» Корсары / Объекты
Прокрутить к ресурсу
» Корсары / Условные операторы
Кстати, сложениями и умножениями можно
закостылитьпобороть ограничение на И + ИЛИгде операция И - это a x b; операция ИЛИ - это a+b-(a x b)
Ред. avuremybe
» Корсары / Условные операторы
Прокрутить к ресурсу
» Корсары / Типы данных
Ред. avuremybe
» Корсары / Типы данных
Прокрутить к ресурсу
» WarCraft 3 / Баланс. Почему в Warcraft 3 рост брони НЕ идёт по убывающей полезности. Развенчиваем мифы.
» Корсары / Объекты
Прокрутить к ресурсу
» Корсары / Массивы
Для ситуаций, когда очень нужно и без этого никак - вполне себе решение.