/dev/stdout
4.07K subscribers
19.7K photos
2.72K videos
79 files
3.28K links
cat /dev/random
Download Telegram
Forwarded from Склад Клюкыча (Клюква)
Forwarded from kiri
понедельник...
Forwarded from kiri
😭1
Forwarded from kiri
1
Forwarded from kiri
"Nah, I'd freeze"
Forwarded from kiri
Forwarded from kiri
Forwarded from kiri
Forwarded from kiri
Forwarded from kiri
Forwarded from kiri
so true
Forwarded from kiri
Я устал
👏1
Думаю что повторю на 500 подписчиков
👏1
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from gavr_sas
Очень быстрый гайд по написанию фронтенда языка, пишем лексер(токенайзер), он нужен чтобы превращать неразборчивую писанину в цепочки токенов, типа
s_aS =
0.3432345f
в
[Identifier Equel Float]

Чтобы потом с ними можно было удобнее работать, сохраняем в токенах номер строки и начальную позицию токена, чтобы выдавать юзверам адекватные ошибки

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

Нам понадобится набор базовых функций
1) step — поглащает следующие n символов, то есть
ab^cde
^ - курсор

step(2) вернет cd
abcd^e

2) peek — как step но не поглащает, нужна чтобы проверять что там впереди
ab^cde, peek(2) -> cd, ab^cde

3) check(str: string, distance: int): bool — хелпер чтоб проверять что в переди то что мы ожидаем, использует peek

4) match — ровно тоже самое что check, но поглащает строку
^if(sas)
match("if") -> true, if^(sas)

Воот, это база, следующий выпуск завтра