>>> "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.
> + %% Note: why use bracket here?
Tu devrais préciser que tu parles de l'annotation, sinon c'est pas
clair.
> + %% 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 :)