On 2006-05-22, Akim Demaille akim@lrde.epita.fr wrote:
"SIGOURE" == SIGOURE Benoit sigoure.benoit@lrde.epita.fr writes:
Index: src/syn/xrm/XRM-Arrays.sdf --- src/syn/xrm/XRM-Arrays.sdf (revision 0) +++ src/syn/xrm/XRM-Arrays.sdf (revision 0) @@ -0,0 +1,19 @@ +module XRM-Arrays +imports
- PRISM-to-XRM
+exports
- %% EBNF Grammar: Arrays
- %% ArrayAccess ::= Identifier ArraySubscript {ArraySubscript}
- %%
- %% ArraySubscript ::= "[" Identifier "]"
- sorts ArrayAccess ArraySubscript
- context-free syntax
- Identifier ArraySubscript+ -> ArrayAccess {cons("ArrayAccess")}
- "[" Identifier "]" -> ArraySubscript {bracket}
Ceci n'est pas suffisant à plusieurs titres :
- tableaux multidimensionnels
- expressions plutôt qu'ID comme indices
mais je suppose que c'est seulement le temps de passer à plus grande échelle. C'est vraiment du beau travail.
En effet c'etait juste pour le debut. On peut maintenant y mettre n'importe quelle expression tant qu'elle est evaluable statiquement.
- %% Note: why use bracket here?
Tu devrais préciser que tu parles de l'annotation, sinon c'est pas clair.
Hmm pour moi une annotation c'est rajouter une annotation a un constructeur (genre Toto(...){annotations ici}) Mais en effet je vais clarifier ca en:
Why use the "bracket" keyword here?
qui me semble plus explicite.
- %% This is a work around. In SDF, if a production contains literals,
- %% a constructor is required. With brackets, we specify that literals
- %% are allowed there, however this does not create a node in the AST.
Je vois pas en quoi ça fait de ça un work-around :)
Parce que d'un point de vu semantique ce ne sont pas des parentheses. J'ai pas mal etudie java-front, et, a vrai dire, beaucoup de mon code s'en inspire largement, et lorsque j'ai vu ca j'en ai parle a Martin qui m'a dit que c'etait a "dirty hack" :)
Note: il est aussi possible de faire un workaround en utilisant la syntax kernel du SDF, mais ce serait clairement moins lisible. De plus le fonctionnement exact de cette syntaxe est encore assez obscure pour moi. *Apparament* la seule source de documentation complete a ce sujet est la these de Eelco Visser (http://www.cs.uu.nl/people/visser/ftp/Vis97.ps.gz) D'ailleurs elle est dans la bibmachin du labo? Enfin le truc ou on met tous les papiers? :P