Придумал очень красивую штуку, чисто программистскую, остальным будет неинтересно.
Каждому программисту известно, что такое регулярные выражения. Каждому человеку, прошедшему базовый курс CS, известно, что базовые регулярные выражения (без backtracking-а)
хорошо моделируются недетерминированными конечными автоматамиВ интересах этой записи
(
Read more... )
Comments 24
Reply
Я еще думаю над тем, какие на самом деле языки так можно распознавать и нельзя ли из этого всё-таки извлечь пользу.
Reply
Reply
Reply
Регулярное выражение -- направленный граф (когда мы его рисуем в виде "синтаксических диаграмм", это очень наглядно). Пусть мы матчим не текст, а другой направленный граф. Некоторые вершины первого графа соответствуют некоторым вершинам второго графа. Нужно выяснить, существует ли последовательность вершин, являющаяся путём в обоих графах. Так, не так?
... Правовой нигилизм и компьютерная грамотность ...
Reply
Reply
Впрочем, в главном-то вы правы, аналогия действительно очень классная.
Reply
есть расширения протоколов/сессионных типов на КСГ, в частности http://rss.di.fc.ul.pt/tools/freest/
Reply
Можно из этого получить некий красивый паттерн того, как построить некий map/reduce-like API для depth/breadth-first search? Чтобы один и тот же подход юзать и для поиска пути, и для поиска каких-то паттернов, и может для каких-нибудь там частичных сумм весов узлов...
Reply
1. Для peephole выбора инструкций на уровне ассемблера.
2. Техника статического анализа, применяющая контекстно-свободный парсер к графу переходов функции (CFG) (regular path querying и context-free path querying соответственно)
Reply
Leave a comment