Grammaire


LEXEMES :

Fixés :

<fonctionCalculatoire>::= moyenne | somme | min | max
<opBooleen> ::= ET | OU
<operateurBinaire>::= union | difference | intersection | produit | division

Génériques :

 
GRAMMAIRE :
Règle de dérivation : LL(1)
Starting point : <demandeGenerale>

<demandeGenerale>::=

 

<demande>

| <demandeGestion>

   

<demandeGestion>::=

 

reinitialisationTotale // on efface toutes les relations temporaires créées et la base de travail

| reinitialisationPartielle // on efface toutes les relations temporaires créées mais on garde la base de travail

| baseDeTravail(<base>) // on indique aux autres groupes la base de travail choisie

|stop // on indique aux autres groupes qu'ils doivent arrêter leur processus

|demanderSchema(<relationDeBase>) // permet à un groupe de demander le schéma d'une relation de base (SQL)`

|schemaRelation(<listeAttributs>) // permet de renvoyer à un groupe le schéma d'une relation

 

<demande>::=


<agregat>
| <relation>
 
<relation> ::=
<relationAlgebrique>
|<relationDeBase>
 
<agregat> ::=
fonctionCalculatoire ( <relation> , <attribut> )
| comptage ( <relation>,<listeAttributs> )
 
<relationAlgebrique>::=
<operateurBinaire>(<relation>,<relation>)
| selection(<relation>,<listeCritere>)
| projection(<relation>,<listeAttributs>)
| projectionSansEliminationDouble(<relation>,<listeAttributs>)
| jointure (<relation> <alias>,<relation> <alias>,<listeCritereJointure>)
 
<listeCritereJointure>::=
<critereJointure><suiteListeJointure>
| ( <ListeCritereJointure> ) <suiteListeJointure>
<suiteListeJointure>::=
<opBooleen><listeCritereJointure>
| Epsilon
 
<listeCritere>::=
<critere><suiteListe>
| ( <ListeCritere> ) <suiteListe>
<suiteListe>::=
<opBooleen><listeCritere>
| Epsilon
 
<listeAttributs>::=
<attribut><suiteAttribut>
 
<suiteAttribut>::=
,<listeAttribut>
| Epsilon
 
<critereJointure>::=
<alias>.<attribut><comparateur> <alias>.<attribut>
 
<critere>::=
<attribut><comparateur><comparant>
 
<comparant>::=


<nombre>
| <attribut>
| NULL
| <agregat>
|"<variable>"
 

<relationDeBase>::=

 

 

<variable>