В HydraScript мне понадобились две привычные операции со строками: получить длину и обратиться по индексу. Массивы уже умели и то и другое. Чтобы научить этому строки, нужно было поправить несколько мест в семантическом анализаторе: каждое по-своему решало, что разрешено делать с типом.Заодно появился повод разобраться, почему эти правила оказались именно там. Тип строки в интерпретаторе был, а за списком доступных ему операций приходилось идти в обработчики разных выражений. Добавляешь возможность строке, а её поведение собираешь по всему анализатору.HydraScript — мой интерпретируемый язык, написанный на C#. В нём статическая типизация, поэтому несовместимые операции нужно отсеять до исполнения. Для поддержки text[index] мало достать символ из .NET-строки: анализатор должен понять, допустимо ли выражение и какой у него тип. Читать далее
| # | Наименование новости | Тональность | Информативность | Дата публикации |
|---|---|---|---|---|
| 1 | Я удалил классы, но оставил объекты с методами | 0 | 8 | 24-09-2026 |
| 2 | Почему число это плохой адрес для инструкции? | 0 | 8.52 | 21-10-2026 |
| 3 | Почему "+=" сложнее реализовать, чем "+": опыт HydraScript | 0 | 11.23 | 21-09-2026 |
| 4 | Как я перенёс сборку лексера в compile-time | 0 | 7.63 | 27-09-2026 |
| 5 | Native AOT заставил меня переписать весь .NET проект | 0 | 8.36 | 22-09-2026 |
| 6 | Бенчмаркая поиск по строке: самописные циклы проигрывают от ×14 до ×154 | 0 | 8.91 | 15-07-2026 |
| 7 | Ленивый LINQ: разбираем yield и ленивые вычисления по кирпичикам | 0 | 7.44 | 21-07-2026 |
| 8 | Senpy или зачем визуальной новелле семантический линтер, если в Ren’Py уже есть встроенная проверка? | 0 | 12.7 | 23-10-2026 |
| 9 | DroidScript. Впечатления от года работы | 0 | 7.17 | 23-10-2026 |
| 10 | Трилемма Святого Грааля типизации: почему нельзя всё сразу | 0 | 8.44 | 29-07-2026 |