Master 2017 2018
PSTL
Inférence de types automatique d’un AST à partir d’une grammaire


Site : Trac-Inférence de types automatique d’un AST à partir d’une grammaire
Encadrant : Talbot Pierre, Agon Amado Carlos

Cliquer ici pour vous authentifier

Description

Oak[1,2] est un générateur de parseur PEG écrit en Rust. L’idée principale derrière Oak est de générer semi-automatiquement l’AST à partir d’une grammaire. Par exemple, le nœud AST généré à partir de la grammaire `statement*` (où l’étoile signifie que l’on répète la règle 0 à N fois) sera dans la majorité des cas de type "vecteur de Stmt", soit `Vec<Stmt>` en Rust. L’avantage de ce système est que le nœud AST est automatiquement créé et qu’il n’y a pas besoin de préciser d’action sémantique.

Bien que l’inférence de type soit fonctionnelle dans Oak, il reste de nombreux axes d’amélioration afin de créer automatiquement l’AST pour une plus grande classe de grammaire. Par exemple, la grammaire "mut" ?, acceptant le mot clé "mut" ou non, est de type `Option<()>` alors qu’il serait préférable que le type `bool` soit inféré automatiquement. D’autres extensions sont décrites en [3,4,5].

Projet pour 2 étudiants.

Bibliographie

[1] https://github.com/ptal/oak

[2] http://hyc.io/oak/

[3] https://github.com/ptal/oak/issues/84

[4] https://github.com/ptal/oak/issues/52

[5] https://github.com/ptal/oak/issues/51