Rel
Evaluateur d'expressions algébriques
Grammaire de l'interpréteur
Back to Marine's HomePage
Previous page : Rel's main page
This page's last update : Feb 14, 98

Besoin d'aide? Lisez d'abord la page précédente...

Conventions d'écriture :
On peut donc déduire ces quelques règles de syntaxe de l'interprétreur de Rel en regardant les premières lignes de la grammaire :
nom RelGram;  
   
Axiome = BlocDeCommandes.{;} + Autre;
   
Autre = Commentaire + Aide.MotAide;
   
Aide = {help} + {?} + {aide};
MotAide = ToutCaractere;
   
BlocDeCommandes = Commande.Fin_BlocC;
Fin_BlocC = {:}.BlocDeCommandes + Commentaire + {};
   
Commande = Affectation + Expression + ExprBool + AppelFonct + DeclMacro + Preference;
   
Commentaire = {//}.ToutCaractere;
ToutCaractere = [#32..#255]~*;
ToutCarSaufpv = [#32..#58,#60..#255]~*;
   
Affectation = RelIdent.{=}.Expression;
   
ExprBool = Egalite + Inclusion + ExprBoolRelbin;
   
Egalite = Expression.{==}.Expression;
Inclusion = Expression.{>}.Expression;
ExprBoolRelbin = EstFonction + EstForetO;
EstFonction = {fonction}.Parenthesage;
EstForetO = {foreto}.Parenthesage;
   
   
RelExtension = [{]~1 .SuiteDeCouples. [}]~1 + [{]~1 . [}]~1;
   
SuiteDeCouples = Couple.Fin_SDeCouple;
Fin_SDeCouple = {,}.SuiteDeCouples + {};
   
SuiteRelIdents = RelIdent.Fin_SRelIdents;
Fin_SRelIdents = {,}.SuiteRelIdents + {};
   
SuiteDeNomsDeMacro = NomDeMacro.Fin_SDNMacro;
Fin_SDNMacro = {,}.SuiteDeNomsDeMacro + {};
   
Couple = {(}.Nombre.{,}.Nombre.{)};
Nombre = [0..9]~1 [0..9]~*;
   
RelIdent = [A..Z,_]~1 [A..Z,a..z,_,0..9]~*;
   
AppelFonct = Declarer + Dessiner + Lister + Lire + Limiter + Quitter + Liberer + Nouveau;
Declarer = {decl}.RelIdent + {make}.RelIdent;
Dessiner = {d}.Expression + {dessiner}.Expression + {draw}.Expression;
Lister = {l} + {lister} + {list};
Limiter = {lim}.suiteLim;
suiteLim = Intervalle + AfficherLim;
AfficherLim = {};
Intervalle = {[}.Nombre.{,}.Nombre.{]};
Quitter = {quitter} + {quit} + {exit};
Liberer = {liberer}.SuiteLiberer;
SuiteLiberer = SuiteRelIdents + SuiteDeNomsDeMacro;
Nouveau = {nouveau} + {fresh};
Lire = {lire}.NomDeFichier;
NomDeFichier = [A..Z,a..z,_,0..9]~1 [A..Z,a..z,_,0..9,.]~*;
   
DeclMacro = {macro}.NomDeMacro.{=}.ChaineMacro;
NomDeMacro = [a..z,_]~1 [A..Z,a..z,_,0..9]~*;
ChaineMacro = ToutCarSaufpv;
   
Expression = union_;
   
union_ = difference.finUnion;
finUnion = Union + {};
Union = {+}.union_;
   
difference = intersection.finDifference;
finDifference = Difference + {};
Difference = {-}.difference;
   
intersection = composee.finIntersection;
finIntersection = Intersection + {};
Intersection = {/}.intersection;
   
composee = clotureTrans.finComposee;
finComposee = Composee + {};
Composee = {*}.composee;
   
clotureTrans = generateur.finClotureTrans;
finClotureTrans = ClotureTrans + {};
ClotureTrans = {++};
   
generateur = inverse.finGenerateur;
finGenerateur = Generateur + {};
Generateur = {--};
   
inverse = Inverse + barre;
Inverse = {-}.barre;
   
barre = Barre + feuille;
Barre = {!}.feuille;
   
feuille = Parenthesage + RelIdent + RelExtension;
Parenthesage = {(}.Expression.{)};
   
Preference = ListerLaRom + AfficherCommandeFichier + Langue;
ListerLaRom = {listerrom}.{=}.VraiFaux;
AfficherCommandeFichier = {affcomfichier}.{=}.VraiFaux;
Langue = {langue}.{=}.finLangue;
finLangue = Francais + Anglais;
Francais = {FR};
Anglais = {EN};
VraiFaux = Vrai + Faux;
Vrai = {VRAI};
Faux = {FAUX};
Pour obtenir plus d'informations


Revenir au début de la page
This page is hosted by

Get your own Free Home Page
1