Grammar annotations

Coordinator
Oct 25, 2011 at 10:36 AM

C'est un peu compliqué. En l'état, on peut mettre des commentaires dans la syntaxe C++:
une ligne commençant par //
un bloc délimité par /* et */
Le truc c'est que les commentaires ne font parti de la syntaxe. Si on regarde les règles lexicales, les commentaires sont traités de la même manière que les espaces. C'est à dire que le lexer les reconnait et les laisse tomber sans les passer au parser.
L'avantage c'est que pour l'utilisateur peut mettre des commentaires partout dans la grammaire et les règles syntaxiques décrivant le langage des grammaires n'a pas a en tenir compte.

Ce qui se rapproche le plus de ce que tu cite me semble être les construction en /// de C#.
Je sais pas très bien comment se débrouille le compilo, parce que les construction commençant par /// ne font pas non plus partie de la syntaxe "normale" du langage.

Le plus simple serait de rajouter dans le langage la possibilité "d'annoter" certains éléments, comme les règles ou les grammaires elles-même. Par exemple en autorisant une construction du style:
//////////////
/// this is a comment on the following rule
//////////////
variable -> TOKEN ;

Ce faisant on interdit l'utilisation de cette construction à des endroits non prévus.
Je sais pas si je suis très clair...