Je suis étonné de voir que ce post ne mentionne ni ack, ni Unicode et pas le futur que sont les grammaires Perl 6. Excellent article, mais Il aurait pu être écrit il y a vingt ans.
ack
ack est un outil permet de chercher toute une arborescence évitant de jongler avec find et xargs. Il est intégré dans emacs et probablement dans vim.
grammaires Perl 6
Les systèmes dit d'expressions régulières ne sont pas modulaires et donc ne peuvent pas traiter les cas complexes.
Perl 6 utilise un système de grammaires qui sont une forme de classe, les règles y sont des méthodes qui s'appelle les unes les autres. Notionnellement, tout au moins, puisque les grammaires sont un composite de NFA, d'analyse récursive et d'analyse d'expressions (aussi récursive mais à base de piles opérandes et opérateurs) avec des opérateurs.
Perl 6 et Unicode : forme normalisée NFC
Faire sérieusement de l'analyse syntaxique avec Unicode est difficile sauf avec Perl 6. Un des problèmes résolu par Perl 6 est que des graphèmes peuvent être composés de plusieurs codepoints. Avec les formes de normalisations actuelles, cela
signifie que des opérations en O(1) ne le sont plus puisqu'on ne peut pas prévoir l'offset d'un graphème.
Perl 6 propose la normalisation NFC avec des graphèmes synthétiques. Elle ne sort pas de l'interpréteur Perl 6 donc Perl 6 est par ailleurs conforme à la norme Unicode.
La liste des fonctionnalités spécifique à Perl 6 serait trop longue pour ce post.
Un seul exemple, donc.
En Perl 6, des tâches comme mettre en majuscule une "lettre accentuée" est triviale.
Mieux que les DSL, Perl 6 et les slangs
Finalement, Perl 6 est écrit en Perl 6 donc est analysé en Perl 6. Il permet l'usage de slangs (argot en anglais, mais aussi sub*lang*age, c'est à dire de tisser finement syntaxiquement un langage dans un autre. On parle beaucoup de DSL mais ça, c'est beaucoup mieuxmême si pour le moment, certains détails laissent à désirer pour les perfectionnistes que sont les perlers.
Ainsi Perl6 comprend, le langage de quotes avec un contrôle très fin de ce qui est expansé et de ce qui ne l'est pas.
et deux langages de regex (le mot pour ne pas le terme expression rationnelles beaucou trop limitatif), celui de Perl 5 et celui de Perl 6. Oui, il y a plusieurs manières d'utiliser Perl 5 dans Perl6 !
Les grammaires Perl 6 sont le futur
Je peux dire avec confiance que quelque soit le succès ou l'insuccès de Perl 6, les grammaires Perl 6 influenceront beaucoup de languages comme les expressions rationnelles de Perl 1/2/3/4/5 l'ont fait depuis près de trente ans.
La doc et les tutoriels
La doc http://docs.perl6.org/ n'est pas complète, mais il faut déjà un bon niveau pour repérer les manques.
# ack, Unicode
Posté par cognominal . En réponse à la dépêche Travailler avec des expressions rationnelles. Évalué à 4. Dernière modification le 13 février 2016 à 10:17.
Je suis étonné de voir que ce post ne mentionne ni ack, ni Unicode et pas le futur que sont les grammaires Perl 6. Excellent article, mais Il aurait pu être écrit il y a vingt ans.
ack
ack est un outil permet de chercher toute une arborescence évitant de jongler avec find et xargs. Il est intégré dans emacs et probablement dans vim.
grammaires Perl 6
Les systèmes dit d'expressions régulières ne sont pas modulaires et donc ne peuvent pas traiter les cas complexes.
Perl 6 utilise un système de grammaires qui sont une forme de classe, les règles y sont des méthodes qui s'appelle les unes les autres. Notionnellement, tout au moins, puisque les grammaires sont un composite de NFA, d'analyse récursive et d'analyse d'expressions (aussi récursive mais à base de piles opérandes et opérateurs) avec des opérateurs.
Perl 6 et Unicode : forme normalisée NFC
Faire sérieusement de l'analyse syntaxique avec Unicode est difficile sauf avec Perl 6. Un des problèmes résolu par Perl 6 est que des graphèmes peuvent être composés de plusieurs codepoints. Avec les formes de normalisations actuelles, cela
signifie que des opérations en O(1) ne le sont plus puisqu'on ne peut pas prévoir l'offset d'un graphème.
Perl 6 propose la normalisation NFC avec des graphèmes synthétiques. Elle ne sort pas de l'interpréteur Perl 6 donc Perl 6 est par ailleurs conforme à la norme Unicode.
La liste des fonctionnalités spécifique à Perl 6 serait trop longue pour ce post.
Un seul exemple, donc.
En Perl 6, des tâches comme mettre en majuscule une "lettre accentuée" est triviale.
Mieux que les DSL, Perl 6 et les slangs
Finalement, Perl 6 est écrit en Perl 6 donc est analysé en Perl 6. Il permet l'usage de slangs (argot en anglais, mais aussi sub*lang*age, c'est à dire de tisser finement syntaxiquement un langage dans un autre. On parle beaucoup de DSL mais ça, c'est beaucoup mieuxmême si pour le moment, certains détails laissent à désirer pour les perfectionnistes que sont les perlers.
Ainsi Perl6 comprend, le langage de quotes avec un contrôle très fin de ce qui est expansé et de ce qui ne l'est pas.
et deux langages de regex (le mot pour ne pas le terme expression rationnelles beaucou trop limitatif), celui de Perl 5 et celui de Perl 6. Oui, il y a plusieurs manières d'utiliser Perl 5 dans Perl6 !
Les grammaires Perl 6 sont le futur
Je peux dire avec confiance que quelque soit le succès ou l'insuccès de Perl 6, les grammaires Perl 6 influenceront beaucoup de languages comme les expressions rationnelles de Perl 1/2/3/4/5 l'ont fait depuis près de trente ans.
La doc et les tutoriels
La doc http://docs.perl6.org/ n'est pas complète, mais il faut déjà un bon niveau pour repérer les manques.
La communauté Perl 6 francophone bien que non organisée est à la pointe pour les tutoriels, même si seul ceux de Laurent Rosenfeld ont pour original le français.
Naoum Hankache est l'auteur de Perl 6 intro : http://perl6intro.com/
Vendethiel celui de Perl 6 in y minutes: https://learnxinyminutes.com/docs/perl6/
Laurent Rosenfeld a pondu tout une série d'excellent tutorilels: http://laurent-rosenfeld.developpez.com/tutoriels/perl/perl6/les-bases/