/dev/stdout – Telegram
/dev/stdout
3.99K subscribers
19K photos
2.59K videos
74 files
3.16K links
cat /dev/random
Download Telegram
Forwarded from Склад Клюкыча (Клюква)
понедельник...
Я устал
👏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)

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