Что такое Subset Construction в дизайне компилятора? - PullRequest
0 голосов
/ 24 марта 2019

вот алгоритм: Я рассматриваю справочник Ulman по созданию компиляторов, который объясняет алгоритм реализации построения подмножеств для преобразования NFA в DFA. Объяснение там очень краткое. Я хотел бы иметь более полное понимание того, как этот процесс работает на более глубоком уровне. Может кто-нибудь предложить мне хорошую ссылку или веб-сайт, который мог бы прояснить эти трудно усваиваемые понятия?

Ответы [ 2 ]

0 голосов
/ 26 марта 2019

Это просто название алгоритма, который используется при разработке компилятора.

Когда вы разрабатываете язык, вы разрабатываете лексическую структуру языка, используя инструмент, известный как регулярные выражения. Регулярные выражения являются декларативными и действуют как генераторы, тогда как вам нужно что-то, что может действовать как распознаватель.

Чтобы это произошло, вы хотите прибыть на «машину», которая делает это, известную как конечный автомат. Вы можете создать недетерминированный конечный автомат из регулярного выражения, используя алгоритм, известный как Конструкция Томпсона .

Проблема с NFA, с которой вы сталкиваетесь, заключается в том, что из-за недетерминизма довольно сложно эмулировать программно. По этой причине мы хотим выполнить другое преобразование для перехода от NFA к DFA, и этот алгоритм известен как Подмножество .

0 голосов
/ 26 марта 2019

Compiler Construction - отличная книга, но ее содержание очень глубокое и, возможно, трудное для понимания (она рассчитана на общую область компиляторов, и для ее полной компоновки необходимо много часов).

Может кто-нибудь предложить мне хорошую ссылку или веб-сайт, который мог бы прояснить эти трудно усваиваемые понятия?

Вы должны попробовать с Компиляторы: принципы, методы и инструменты .

Моя первая реализация NFA для DFA изучала эту книгу.

...