2009-09-16 12 views
11

Je suis intéressé in parsing regexes (à ne pas confondre avec l'utilisation d'expressions rationnelles pour l'analyse syntaxique). Yat-il un BNF pour Java 1.6 regexesQuel est le BNF pour une regex (afin d'écrire un analyseur complet ou partiel)

(ou d'autres langues?) [NOTE: Il y a un similar older question qui n'a pas conduit à une réponse pour Java.]

EDIT Pour expliquer pourquoi je dois faire ce. Nous mettons en œuvre un analyseur superficiel pour le traitement du langage naturel qui identifie et marque d'abord les jetons. Ceux-ci sont ensuite traités avec une regex. J'ai besoin de savoir quels groupes ont été capturés par la regex (l'automate ne capture que le dernier de chaque bracket) et je veux aussi annoter l'expression régulière avec des commentaires.

+0

Pourquoi avez-vous besoin d'analyser la regex? – Steven

+14

Peut-être qu'il met en œuvre un moteur regex? –

+1

duplicata possible de [Regex Grammar] (http://stackoverflow.com/questions/265457/regex-grammar) –

Répondre

0

Il ne semble pas être un regex explicite selon les réponses SO.

6

Here ils pointent à des tentatives de décrire les expressions rationnelles de Perl en 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

+0

http://www.faqts.com/knowledge%5Fbase/view.phtml/aid/25718/fid/ 200 ne fonctionne pas pour moi – Makach

+0

@Makach: Remplacer '% 5F' par' _'. SO semble remplacer cela dans les URL. – Gumbo

+0

Le lien faqts semble être mort. Le lien sfu.ca ne fournit ni epsilon ni facultatif, et en tant que tel ne peut pas spécifier toutes les langues régulières laisser quelque chose d'aussi complexe qu'une perl regex. – Recurse

2

Je ne vois pas un spécifiquement pour Java 1.6; mais voici un début que vous pouvez peut-être construire une complète BNF à partir de:

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

... en utilisant la documentation java 1.6 pour Motif:

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

+0

Vous devriez également savoir, si ce n'est déjà fait, que le JDK prend en charge les expressions régulières (voir la classe Pattern liée dans ce post). Assurez-vous de ne pas réinventer la roue. – RMorrisey

+0

Ne pas tenir compte du dernier commentaire – RMorrisey

Questions connexes