NSRegularExpression et compilation

Bonjour à  tous,


 


En lisant la doc de NSRegularExpression j'ai vu que les expressions régulières étaient compilées lors de l'init. Une bonne idée pour gagner en performance (au détriment de la mémoire mais on a rien sans rien).


 


J'en appelle dès lors aux gourous du forum est-ce qu'il serait alors possible de définir soit même son propre langage formel (ou en reprendre un existant comme celui de lex) et compiler soit même sa petite State Machine ?


 


Je veux bien entendu dire dans l'absolu je pense bien qu'une telle chose ne passerait les moulinettes de l'AppStore.


Réponses

  • AliGatorAliGator Membre, Modérateur
    Tu peux tout à  fait créer un DSL avec des RegEx, mais c'est du boulot.
    Car les RegEx sont puissantes, mais pour créer un langage, il faut une grammaire. Et exprimer une grammaire uniquement en RegEx, c'est un peu violent pour pouvoir traiter tous les cas.
  • PyrohPyroh Membre
    Sur ce point là  on est entièrement d'accord les expressions régulières ne sont pas faites pour écrire un parser entier.


    Ma question portait plus sur le fait de compiler et exécuter du code à  la volée.

    J'ai peut être mal formulé le titre.
  • CéroceCéroce Membre, Modérateur

    Il y a des applis qui embarquent une machine virtuelle et qui ont réussi à  passer la validation.


    Des jeux, en particulier.


  • AliGatorAliGator Membre, Modérateur

    Sur ce point là  on est entièrement d'accord les expressions régulières ne sont pas faites pour écrire un parser entier.

    Ma question portait plus sur le fait de compiler et exécuter du code à  la volée.
    J'ai peut être mal formulé le titre.

    Mmmmh ouais car j'ai du mal à  voir le lien entre les Regular Expressions et faire un passeur qui va exécuter du code à  la volée (façon machine virtuelle)... c'est comme si tu disais "j'ai vu qu'il existait des interrupteurs qui fonctionnait quand on tapait dans les mains, du coup je me demandais si on pouvais pas construire une maison ?" :D les RegEx pourraient être un des éléments constituants d'un parseur d'expression, mais ce n'est qu'un grain de sel dans un module qui ferait de la compilation et exécution du code à  la volée.
Connectez-vous ou Inscrivez-vous pour répondre.