Что такое BNF для регулярного выражения (чтобы написать полный или частичный парсер)
Вопрос
Мне интересно анализировать регулярные выражения (не путать с использованием регулярных выражений для разбора). Существует ли BNF для регулярных выражений Java 1.6 (или других языков?)
[ПРИМЕЧАНИЕ. Существует аналогичный старый вопрос , который не привел к ответу для Java.] р>
РЕДАКТИРОВАТЬ , чтобы объяснить, почему мне нужно это сделать. Мы реализуем неглубокий парсер для обработки естественного языка, который сначала идентифицирует и маркирует токены. Затем они затем обрабатываются с помощью регулярного выражения. Мне нужно знать, какие группы были захвачены регулярным выражением (автомат захватывает только последнюю из каждой скобки), и я также хочу аннотировать регулярное выражение комментариями.
Решение 3
Согласно SO-ответам, явного регулярного выражения не существует.
Другие советы
Здесь они указывают на попытки описания регулярных выражений Perl в BNF:
http: // www. cs.sfu.ca/~cameron/Teaching/384/99-3/regexp-plg.html р>
http://www.faqts.com/knowledge_base /view.phtml/aid/25718/fid/200 р>
Я не вижу ни одной специально для Java 1.6; но вот начало, которое, возможно, вы можете построить полный BNF из:
http: // www.users.pjwstk.edu.pl/~jms/qnx/help/watcom/wd/regexp.html#RegularExpressionBNF р>
... используя документацию по Java 1.6 для Pattern: