C'est de définir un DSL dont l'écriture d'un simple émulateur permet de le transformer en compilateur.
Un truc comme en Lisp donc:
;; parse tree syntax*(cl-ppcre:parse-string"((?<small>[a-z]*)(?<big>[A-Z]*))")(:REGISTER(:SEQUENCE(:NAMED-REGISTER"small"(:GREEDY-REPETITION0NIL(:CHAR-CLASS(:RANGE#\a#\z))))(:NAMED-REGISTER"big"(:GREEDY-REPETITION0NIL(:CHAR-CLASS(:RANGE#\A#\Z))))))
La forme "DSL" de l'expression rationnelle peut être utilisée partout à la place d'une regexp "concrète" en syntax Perl.
Comme OCaml a de l'évaluation paresseuse (explicite), la manière idoine d'empêcher le programme de compiler toutes ses rexps à l'initialisation est de compiler la regexp au dernier moment.
[^] # Re: optimisation et propagation de constante
Posté par Michaël (site web personnel) . En réponse à la dépêche OCaml 4.06 et 4.07. Évalué à 2. Dernière modification le 05 octobre 2018 à 07:01.
Un truc comme en Lisp donc:
Voir http://edicl.github.io/cl-ppcre
La forme "DSL" de l'expression rationnelle peut être utilisée partout à la place d'une regexp "concrète" en syntax Perl.
Comme OCaml a de l'évaluation paresseuse (explicite), la manière idoine d'empêcher le programme de compiler toutes ses rexps à l'initialisation est de compiler la regexp au dernier moment.