В этом уроке мы рассмотрим доступные в скриптах типы данных и как с ними работать.
Подстатья
20 269
26
nazarpunk, потому что вот это 0.000000007 вообще никак не ожидается
30
добавляет неожиданную дробную часть
Почему неожиданную? А как же классика:
book A = 0.1 + 0.2 == 0.3
26
nazarpunk, ошибка на этапе запуска ;(
26
nazarpunk, в качестве эксперимента я попробую скормить это игре и посмотреть как оно себя поведет.
Уверее, что работать это не будет, интересно только как именно.
Из-за того, что нормальной компиляции нет, такие вещи могут вести себя очень непредсказуемо. Например выполнится до первой кавычки и отвалится до конца блока кода. А дальше опять всё будет выполняться
30
Альтернативного варианта записи строки не существует.
Тоесть так не сработает?
string A = """A""";
string AB = "A" "B";
На этом уроке мы рассмотрим операторы условного ветвления if/else и switch
Подстатья
18 189
26
nazarpunk, не работает. Хорошее исследование.
Теперь мы точно понимаем, почему начиная с ГПК движок вообще ругается на этот default как на дублирующуюся метку перехода GoTo.
Потому что он его не распознаёт как часть конструкции switch. А код в конце исполняет просто потому, что он вне кейса.
Надо поправить статью. Спасибо!
На этом уроке мы разберем предварительно объявление функций, а также назначение заголовочных файлов в Корсарах
Подстатья
8 135
26
nazarpunk, из того, что я разобрал: каждой функции присвоен так называемый токен. Он видит ключевое слово, получает ее токен, далее по нему решается что с этим делать - если это, предположим, инклуд, то надо подключить еще файл, если это ф-ция - то исполнить функцию.
Это надо садиться и целенаправленно разбирать этот их компайлер. Я более приоритетными вопросами озадачен, поэтому сильно не вникал пока что. Но в перспективе хочу разобраться, конечно. Штука интересная))
Какой-то предварительный анализ при запуске тоже есть, но до него я в коде не докопался. Можно прошляпить что-то по синтаксису (точку с запятой, например), а оно нормально запускается и еще и исполняет код.
А бывает напишешь обращения к функциям неправильно (лишние аргументы, например), а оно все равно работает. Но в точке исполнения этого обращения обрывает блок кода, из которого это вызвано, пишет в логи, но работает дальше.
А иногда можно заюзать какие-то конструкции, которые он не поддерживает. И тогда он ошибку при запуске выдает. Отсюда вывод, что какой-то анализ он таки делает при запуске, вот только я не знаю какой.
30
Это интерпретацией же называют?
Разница тонкая. Если он прям из букв исполняет, то интерпретация. Если предваритеьно превращает во внутреннее предстваление, то компиляция.
26
nazarpunk, чисто технически, имя класса этой читалки COMPILER.
Но как по мне - это толи парсер, толи интерпретатор (я не силен в таких штуках). Оно на ходу их читает, да. Можно прям в запущенной игре код менять и файлы кусками подключать/отключать.
Код не исполняется напрямую. Оно его читает, ищет знакомые слова и вызывает нужные функции. Это интерпретацией же называют?
30
что никакого компилятора нет
Вообще никакого? Код прям из текстовых файлов исполняется без компиляции?