2013-04-01 8 views
1

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

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

раствор должен принимать эпсилон переходы, а также, например, S1-> а | e

любые идеи?

+1

Итак, вы нашли много разных алгоритмов. Почему бы вам не попытаться реализовать один из них? –

+2

Я считаю, что они сложнее и требуют определенного типа ввода, они также не поддерживают переходы epsilon. – Iordanis

+2

1) Они не так уж сложны. 2) «требует определенного типа ввода»; какой особый вклад они требуют (вы не можете жаловаться на такие вещи, не предоставляя доказательств). 3) Я думал, что алгоритм Эрли не возражал против правил эпсилона. Википедия http://en.wikipedia.org/wiki/Earley_parser, по-видимому, заявляет («альфа-бета-гамма ... [может быть] пустая строка»), что алгоритм Эрли допускает правила с переходами epsilon. Менее щедрый человек может подумать, что вы не сделали домашнее задание. –

ответ

2

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

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

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

Код находится на python.

 Смежные вопросы

  • Нет связанных вопросов^_^