la plupart des expressions régulières UNIX ont, outre le D'une part, cela semble être assez puissant puisque vous pouvez créer J'ai deux questions: p>
habituel code>, + code>, ? * code> opérateurs un opérateur de barreaux d'artrofrigation où \ 1 , \ 2, ... code> correspondant à ce qui est dans les dernières parenthèses, donc par exemple * l = (a *) b \ 1 * code> correspond à la langue (non régulière) * A ^ nba ^ n * code>. p>
(a *) b \ 1b \ 1 code> pour correspondre à la langue * A ^ nba ^ nba ^ n * < / code> qui ne peut même pas être reconnu par un automate de pile. D'autre part, je suis sûr que * a ^ n b ^ n * code> ne peut pas être exprimé de cette façon. P>
* a ^ n b ^ n * code> ne peut pas être exprimé de cette façon? li>
ol>
3 Réponses :
a ^ n b ^ n est CFL. La grammaire est
A -> aAb | e
YUP, les expressions «régulières» ont été étendues pour reconnaître les langues que les machines d'État finies ne reconnaîtront pas.
Cela ne répond pas à la question. Il veut une déclaration d'un théorème (semblable au lemme de pompage) qu'il peut utiliser pour prouver quelles expressions régulières peuvent soutenir lorsqu'ils soutiennent les rafraîchies.
@ken. Sa question initiale est de demander pourquoi un ^ n b ^ n est la CFL et comment le prouver que ce n'est pas un RL. Et Whirlwind a également remarqué que. Vous pouvez demander à AVI et vous pouvez également signaler à l'administrateur du site Web sur le fil modifié non traqué.
@ziang. Il n'a pas fait. Il vous a demandé de prouver si un ^ n b ^ n peut être reconnu par Extended B> Regexps qui permettent des referférences.
Ruby 1.9.1 prend en charge la regex suivante: " amusant avec Ruby 1.9 Expressions régulières " a un exemple où il organise réellement toutes les parties d'une regex afin qu'elle ressemble à un contexte grammaire libre comme suit: p> Je pense que cela signifie que le moteur Regex de Ruby 1.9.1, qui est le moteur Regex Oniguruma, est en réalité équivalente à une grammaire sans contexte. , bien que les groupes de capture ne soient pas aussi utiles qu'un analyseur réel. p> Cela signifie que " Le lemme de pompage pour les langues libres de contexte "doit décrire la classe de langues reconnaissables par le moteur Regex de Ruby 1.9.1. P> edit: strong> whoops ! J'ai foiré et je n'ai pas fait un test important qui fait ma réponse ci-dessus totalement faux. Je ne supprimerai pas la réponse, car il est néanmoins des informations utiles. P> EDIT: Strong> revenir à ce nombre de mois plus tard, je viens de découvrir que Mon test dans la dernière édition était incorrect. Le test correct doit être sur une chaîne comme "AAACBBB" code> ne devrait pas être censé correspondre à regex code> même si regex code> fonctionne comme une grammaire sans contexte. P> "aabcbaa" code>, et qui correspond à la regex: p>
Vous recherchez probablement p>
Et bien sûr, suivez leurs citations en avant et en arrière pour trouver plus de littérature sur ce sujet. P>