Size: a a a

2020 October 03

M

MrSmith in Go Get A Job
Скобки считают не для подсчета
источник

M

MrSmith in Go Get A Job
А для контекста
источник

M

MrSmith in Go Get A Job
Вы просто не можете построить парсер контексто зависимой грамматики не считая скобки
источник

x

x-foby in Go Get A Job
Или сможете
источник

M

MrSmith in Go Get A Job
Опять же если я правильно помню парсер это или конечный автомат или конечный автомат с магазинной памятью
источник

M

MrSmith in Go Get A Job
x-foby
Или сможете
В реальности нет
источник

M

MrSmith in Go Get A Job
Вы не можете определить может быть у вас тут функция или нет потому что не понимаете закончилась ли декларация предидушец
источник

M

MrSmith in Go Get A Job
Ну простой пример вам
источник

x

x-foby in Go Get A Job
Парсинг обычно реализовываться на рекурсиях. Вы встретили открывающую скобку — парсите до ближайшей закрывающей в пределах текущей "парсящей" функции.
Ничего считать не надо.
источник

M

MrSmith in Go Get A Job
Все же советую прочитать книгу
источник

M

MrSmith in Go Get A Job
Могу дать вам
источник

M

MrSmith in Go Get A Job
x-foby
Парсинг обычно реализовываться на рекурсиях. Вы встретили открывающую скобку — парсите до ближайшей закрывающей в пределах текущей "парсящей" функции.
Ничего считать не надо.
Это desert parser
источник

AK

Anton Kucherov in Go Get A Job
x-foby
Не, я понял, о чём речь, и как раз про это и говорю)
Если мы пишем что-то, работает с кодом, то обычно мы пишем простой парсер, который принимает поток токенов, и падаем, если токен для текущей ситуации неожиданный.
Поэтому скобки никто не считает)

Хотя МБ есть какие-то практические задачи, где надо именно скобки посчитать, но в работе с кодом такой задачи не могу представить)
Открывающая и закрывающая скобка это ведь отдельные токены? Как определить что блок кода закончился и начался новый блок кода?
источник

M

MrSmith in Go Get A Job
Если вы что то не считали не значит что в стеке вызовов за вас это не посчитано
источник

M

MrSmith in Go Get A Job
Не пытайтесь обмануть Хомского
источник

M

MrSmith in Go Get A Job
Anton Kucherov
Открывающая и закрывающая скобка это ведь отдельные токены? Как определить что блок кода закончился и начался новый блок кода?
Состояния
источник

M

MrSmith in Go Get A Job
Просто для калькулятора хватает скобок
источник

M

MrSmith in Go Get A Job
Мне кажется проще книгу прочитать первые три главы да и все
источник

x

x-foby in Go Get A Job
Anton Kucherov
Открывающая и закрывающая скобка это ведь отдельные токены? Как определить что блок кода закончился и начался новый блок кода?
Я там чуть выше написал)
Рекурсии решают этот вопрос)

Вы получаете скобку, со скобки может начинаться ограниченное количество операций, запускаете функцию, которая принимает токены до токена закрывающей скобки. Если внутри попадается ещё одна открывающая, вы рекурсивно запускаете эту же функцию. Таким образом вы либо успешно парсите весь код, либо натыкаетесь на какой-то неожиданный токен, например на EOF, ожидая закрывающую скобку, и взрываетесь.
Всё достаточно просто)
источник

AK

Anton Kucherov in Go Get A Job
x-foby
Я там чуть выше написал)
Рекурсии решают этот вопрос)

Вы получаете скобку, со скобки может начинаться ограниченное количество операций, запускаете функцию, которая принимает токены до токена закрывающей скобки. Если внутри попадается ещё одна открывающая, вы рекурсивно запускаете эту же функцию. Таким образом вы либо успешно парсите весь код, либо натыкаетесь на какой-то неожиданный токен, например на EOF, ожидая закрывающую скобку, и взрываетесь.
Всё достаточно просто)
источник