Простой парсер CFG с эпсилон-переходом

Я наткнулся на множество различных алгоритмов (CYK и Earley), чтобы проверить, является ли строка частью CFL, чей CFG предоставляется. Я ищу что-то простое для понимания и реализации. То, что мне нужно знать, это если строка находится в CFG или нет. CFG дается обычно в форме

S->S1 S2
S1->S1 a | a
S2->S2 b | b

Предполагается, что решение принимает эпсилон-переходы, например, S1-> a | е

есть идеи?

1 ответ

Решение

Я нашел действительно прямой подход к этому проекту

https://code.google.com/p/cykparser/downloads/list

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

Код в Python.

Другие вопросы по тегам