Bonjour,
J'aimerai savoir si il existe une expression régulière qui permet de reconnaître une expression régulière. Si oui laquelle. Si non, comment reconnaître une expression régulière.
Merci d'avance de vos réponses
Version imprimable
Bonjour,
J'aimerai savoir si il existe une expression régulière qui permet de reconnaître une expression régulière. Si oui laquelle. Si non, comment reconnaître une expression régulière.
Merci d'avance de vos réponses
La seul que je vois c'est "*" car une expression régulière ca peut être n'importe quelle expression.
Ca va deàCode:"Chien"
en passant parCode:"#(((https?|ftp)://(w{3}.)?)(?<!www)(w+-?)*.([a-z]{2,4}))#"
...Code:"gr[io]s"
"Les regexps" ça ne veut pas dire grand chose... Il faut préciser de quoi tu parles exactement, les expressions régulières des différents logiciels et présentations théoriques ne sont pas toutes identiques, loin s'en faut.
Enfin la plupart des langages d'expressions régulières ne sont pas réguliers (ne peuvent donc pas être reconnus par une regexp), ne serait-ce que parce qu'ils contiennent des parenthèses équilibrés (typiquement non régulier, voir lemme de l'étoile).
--
Jedaï
je souhaiterai reconnaitre les expressions régulières utilisés par le logiciel flex avec le logiciel flex. Merci
Ce n'est pas possible, flex est un simple lexer, et ne peut reconnaître que des langages réguliers. Il faut ajouter un parser comme yacc ou bison pour vérifier la validité d'une regex de flex.
Enfin peut-être est-il possible de faire générer à flex un code C qui ferait la vérification, mais ça serait coton et vraiment pas adapté. Pourquoi veux-tu faire ça exactement, quel est ton véritable but ?
--
Jedaï
je veux écrire un front-end a flex bison pour générer des arbres à partir d'une grammaire simplifier écrite dans un style proche de celui de flex & bison.
le programme prends en entrer un fichier grammaire
et ensuite un ensemble de fichier grammaire et lexer pour flex et bison sont créer, on compile le tout et on obtient un parser plus simple à ecrire, à maintenir et à faire évoluer que flex et bison directement.Code:
1
2
3
4
5
6
7
8 %%TOKEN indent [a-zA-Z]+[0-9a-zA-Z]* number [0-9]+ plus "+" %%GRAMAR root: Left(number) Node(plus) Right(number) ...
(L'arbre ne sera pas forcément binaire), mais j'aimerai que ca soit assez générique pour que d'autre puisse l'utiliser et l'améliorer.
voila je sais pas si j'ai été asser clair.
NB: il est vrai que je n'ai pas une bonne mémoire et que je n'ai pas retenu mes cours sur les langages formels. :oops:
;) qui s'appelle en anglais le diamond lemna!
bonjour
le prof nous avait introduit lex en disant
regexp : /* rien */
| STRING
| regexp '*'
| '(' regexp ')'
| regexp regexp
| regexp '|' regexp
si je me rappelle bien il suffit de dire que la précédance de '*' est la plus forte
Tu confond avec yacc ou un autre parser, lex est un simple lexer.
--
Jedaï