On 2006-05-22, Akim Demaille <akim(a)lrde.epita.fr> wrote:
>>
"SIGOURE" == SIGOURE Benoit <sigoure.benoit(a)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
--
SIGOURE Benoit aka Tsuna
_____
/EPITA\ Promo 2008.CSI Rock & tRoll