Auteur : Aurélien Galtier

Un compilateur en F# Partie 4 : générer du code MSIL

Dans l’article précédent, nous avons créé un Analyseur sématique. Nous allons maintenant transformer cette analyse en code exécutable.   Génération en bas niveau Le but du compilateur est de générer un langage de bas niveau, du MSIL dans notre cas. La stratégie est de transformer votre arbre syntaxique en suite d’instructions MSIL. MSIL intègre une notion de type et méthode, nous allons donc générer un arbre avec des classes et des méthodes. Une fois que l’on a notre arbre MSIL, il restera à générer l’assembly grâce à la création d’assembly dynamique. Pour générer du MSIL, il faut comprendre que...

Read More

Comment créer un moteur d’injection en C#

Il y a quelque temps, j’ai voulu développer un moteur d’injection pour résoudre une problématique simple. J’adore Ninject mais il est lourd. Après réflexion, j’ai remarqué que j’utilisais très peu les fonctionnalités d’injection conditionnelles et pas du tout l’injection par propriété. En revanche, je trouve la syntaxe de binding très agréable. J’ai donc commencé à développer un framework d’injection pour le fun. Et aujourd’hui, c’est le seul framework que j’utilise pour mes projets. Je l’ai nommé Pattern car j’utilise ce framework pour différentes problématiques liées à Web API, Xamarin, Log, etc. L’idée de ce framework est de pouvoir me...

Read More

NCrafts : The F#orce Awakens

Cette année, à NewCrafts, j’ai assisté à une session de Evelina Gabasova. Elle nous a parlé des personnages de Star Wars et d’un de ses projets personnels : appliquer les techniques BigData pour d’analyser les interactions entre les personnages de Star Wars et en déduire les personnages les plus importants. Parsing Pour pouvoir analyser les interactions, elle a d’abord parsé les scripts des différents épisodes, présentés sous forme de texte brut, et est rapidement arrivée à quelques conclusions : certains personnages reviennent TRES souvent (Luke, Leïa, Han Solo) car ils ont beaucoup de dialogues. Mais les choses ne sont pas...

Read More

[Un compilateur en F#] Partie 3 : Analyse Sémantique

Dans l’article précédent, nous avons créé un arbre syntaxique. Nous allons maintenant analyser ce langage pour vérifier que notre programme est cohérent. Nous allons vérifier si les variables sont accessibles, si les types son correctement utilisés etc. Un langage peut être syntaxiquement correcte mais ne peux pas être exécuté car sa sémantique n’est pas correcte. Exemple : var i = x; Dans ce code nous utilisons une variable « x » qui n’a jamais été définie avant. Closure L’un des premiers principes est la portée des variables. Le principe de closure est de définir le scope d’une variable. Par exemple, dans le...

Read More

[Un compilateur en F#] Partie 2 : Analyse Syntaxique

La création d’un langage de programmation est quelque chose qui peut paraître insurmontable et abstraite pour les développeurs. Maintenant que l’on a défini ce qu’était un compilateur dans le premier article, l’étape suivante est de transformer un fichier texte en un arbre syntaxique. Ce dernier représente le code a exécuter. L’arbre de syntaxe abstraite L’analyse syntaxique va transformer notre fichier texte en arbre de syntaxe abstraite. C’est cet arbre que nous allons manipuler après. Nous l’appellerons dans la suite de l’article un arbre syntaxique. Mais qu’est-ce qu’un arbre syntaxique ? L’arbre syntaxique représente de manière hiérarchique notre code pour pouvoir le...

Read More

REJOIGNEZ-NOUS

Cellenza défend un pacte social différent et bienveillant à l’égard de ses salariés.
L’individu, son bien-être, sa progression technologique et sociale, sont au centre des préoccupations de la société.

 

Derniers tweets

S’abonner

Au blog
RSS Flux RSS

DevOps ❤️ Containers

Découvrez comment déployer un site .NetCore Sous Docker dans AKS et App Service For Containers avec VSTS !
Télécharger
close-link
Vous faites quoi le 29 Mai ? Matinale Cellenza - Serverless, microservices, containers...
Inscription
close-image