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

StackOverflow https://stackoverflow.com/questions/1435411

  •  07-07-2019
  •  | 
  •  

Вопрос

Мне интересно анализировать регулярные выражения (не путать с использованием регулярных выражений для разбора). Существует ли 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:

http: //java.sun .com / JavaSE / 6 / документы / API / Java / Util / регулярное выражение / Pattern.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top