G r a m m a i r e d u l a n g a g e Z
Conventions :
~ ---
| ---
~ : Choix
[ ---
]
: Partie facultative
{ ---
}*
: Répétition ( 0 ou plusieurs fois )
Déclarations
<Algo Z>
::= [ ~
SOIT |
SOIENT ~
<Ps> ]
DEBUT <Lis>
FIN [
; ]
{ ~<Act>
| <Fonct>
~ [ ; ]
}*
<Act>
::= ACTION Idf
[ (Li
) ] [ ;
]
[ ~SOIT
| SOIENT~
<Ps>
]
DEBUT <Lis>
FIN
<Fonct>
::= FONCTION Idf
(Li ) :
<Typ>
[ ~SOIT
| SOIENT~
<Ps> ] DEBUT
<Lis>
FIN
<Ps> ::= <S>
; {~
SOIT |
SOIENT ~
<S>
; }*
<S>
::= Li Sep
~
<Typ> |
ACTION |
FONCTION(<Typ>)
~
<Typ>
::= Types
| <Ss> |
<Sc> |
MACHINE_CAR
|
MACHINE_NOMBRE |
[
POINTEUR VERS [Sep]
] LISTE [ DE
~Types
| <Ss> ~
] |
TABLEAU (Listcste)
[DE ~<Ss>
| Types
~ ]
FICHIER DE
~
Types
| VECTEUR (
Cste ) DE
Types |
<Ss>
| <Sc>
~
BUFFER Li
[ENTETE]
( Types
{ ,
Types
}* )
<Ss>
::= [STRUCTURE
](
Types
{,
Types
}*)
<Sc> ::= [STRUCTURE
] (
~
Types |
VECTEUR(cste)
DE Types
~
{
, ~
Types
| VECTEUR (Cste)
DE Types
~ }*
)
Types dans
[ENTIER, BOOLEEN, CAR, CHAINE]
Sep dans
[:, UN, UNE, DES]
Cste :
constante numérique
Listecste :
liste de constantes numériques séparées par des ','
Li : liste
d'identificateurs séparés par des ','
Instructions
< Lis >
::= < Inst >
{ ;
< Inst >
}*
<Is> ::= Idf
:= <Exp> |
TANTQUE <Exp>
[ :
]
<Lis>
FINTANTQUE |
SI <Exp>
[:] <Lis>
[SINON <Lis>]
FSI |
POUR Idf
:= <Exp>,<Exp>
[,
<Exp>][:]
<Lis>
FINPOUR |
APPEL Idf
[(Exp {,<Exp>}*]
LIRE (Idf
{, Idf }*
) |
ECRIRE (<Exp>
{,<Exp>}*
) |
ALLOUER (
<Exp> )
|
AFF_VAL (
<Exp> ,
<Exp> )
|
CREER_LISTE ( Idf , [ ~<Exp>
| [<Exp>
{ ,
<Exp> }*
] ~
{
, ~
<Exp> |
[<Exp>
{ ,
<Exp> }*
] ~
}* ] )
|
CREER_MCAR(Idf, [Chaine]) |
AFF_ELEMENT (
<Exp> [
<Exp> { ,
<Exp> }* ] ,<Exp>
) |
AFF_STRUCT(Idf,
Cste,
<Exp>)
|
OUVRIR (Idf
, Chaine,
Chaine )
|
LIRECAR (Idf,
Idf)
|
LIREDIR (Idf
, <Exp>,
<Exp> )
AFF_ADR comme AFF_VAL
FERMER, LIBERER comme ALLOUER
INIT_VECTEUR, INIT_STRUCT, INIT_TABLEAU, CREER_MNOMBRE comme CREER_LISTE
AFF_ENTETE comme AFF_STRUCT
LIRESEQ, ECRIRESEQ, RAJOUTER, LIRENOMBRE comme LIRECAR
ECRIREDIR comme LIREDIR
Expressions
<Exp>
::= <Exps>[
Opr
<Exps>]
<Exps>
::= Sign
<Terme>
{
Opa
<Terme> }* |
<Terme>
{
Opa
<Terme>
}*
<Terme>
::= <Facteur>{Opm
<Facteur>}*
<Facteur>
::= Idf
|
Cstenum
| <Fonct>
| NIL | (<Exp>)
| Chaine |
NOT <Facteur> | Cstelogic
<Fonct> ::= VALEUR ( <Fonct> ) | Idf |
ELEMENT ( <Fonct> [ <Exp> { , <Exp> }* ] ) |
STRUCT (
<Exp> ,
Cste )
|
NBRCAR (Idf
)
ALEACHAINE, ALEANOMBRE, LONGCHAINE, SUIVANT comme
VALEUR
ENTETE, CARACT comme STRUCT.
NBRNOMBRE, ALLOC_BLOC, FINFICH comme NBRCAR
Opr dans {
<, <=, >, >=, =, <> }
Opa dans {
+, -, OR }
Opm dans {
*, |, ET }
Sign dans
{+, -}
Cstelogic
dans {VRAI, FAUX}
Cstenum
dans Z.
Chaine :
chaîne de caractères