Что такое BNF для регулярного выражения (чтобы написать полный или частичный парсер) - PullRequest
11 голосов
/ 17 сентября 2009

Меня интересует в разборе регулярных выражений (не путать с использованием регулярных выражений для разбора). Существует ли BNF для регулярных выражений Java 1.6 (или других языков?)

[ПРИМЕЧАНИЕ: существует аналогичный старый вопрос , который не привел к ответу на Java.]

РЕДАКТИРОВАТЬ Чтобы объяснить, почему мне нужно это сделать. Мы реализуем неглубокий парсер для обработки естественного языка, который сначала идентифицирует и маркирует токены. Затем они затем обрабатываются с помощью регулярного выражения. Мне нужно знать, какие группы были захвачены регулярным выражением (автомат захватывает только последнюю из каждой скобки), и я также хочу аннотировать регулярное выражение комментариями.

Ответы [ 3 ]

6 голосов
/ 17 сентября 2009

Здесь они указывают на попытки описания регулярных выражений 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

2 голосов
/ 17 сентября 2009

Я не вижу ни одной специально для Java 1.6; но вот начало, которое, возможно, вы можете построить полный BNF из:

http://www.users.pjwstk.edu.pl/~jms/qnx/help/watcom/wd/regexp.html#RegularExpressionBNF

... используя документацию java 1.6 для Pattern:

http://java.sun.com/javase/6/docs/api/java/util/regex/Pattern.html

0 голосов
/ 02 ноября 2009

В соответствии с SO-ответами не существует явного регулярного выражения.

...