/* * Constructeur */ public Valeur_AfficheLaValeur_ENTEntier(int _UID, XmlNode _XMLDuBloc, __Bloc _blocPrécédent, __GroupeDeBlocs _groupeDeBlocs) : base(_UID, _XMLDuBloc, _blocPrécédent, _groupeDeBlocs) { // Déclarations // ------------ String nomDeLAttribut; // Traitements // ----------- // Analyse du Bloc d'instruction foreach (XmlNode XMLDUnNoeudFils in _XMLDuBloc) { nomDeLAttribut = ""; if (XMLDUnNoeudFils.Attributes["name"] != null) { nomDeLAttribut = XMLDUnNoeudFils.Attributes["name"].Value; } switch (nomDeLAttribut) { case "Valeur": __expression = Compilateur.AnalyseUnNoeudDExpression(_UID, XMLDUnNoeudFils.FirstChild, _blocPrécédent, _groupeDeBlocs); break; } } // Liste les séquences du bloc // --------------------------- __séquences.Add((Séquence)Séquence_1); }
/* * Constructeur */ public Variable_IncrémenterUneVariable(int _UID, XmlNode _XMLDuBloc, __Bloc _blocPrécédent, __GroupeDeBlocs _groupeDeBlocs) : base(_UID, _XMLDuBloc, _blocPrécédent, _groupeDeBlocs) { // Déclarations // ------------ String nomDeLAttribut; // Traitements // ----------- // Analyse du Bloc d'instruction foreach (XmlNode XMLDUnNoeudFils in _XMLDuBloc) { nomDeLAttribut = ""; if (XMLDUnNoeudFils.Attributes["name"] != null) { nomDeLAttribut = XMLDUnNoeudFils.Attributes["name"].Value; } switch (nomDeLAttribut) { case "VAR": __nom = XMLDUnNoeudFils.FirstChild.InnerText; break; case "DELTA": switch (XMLDUnNoeudFils.ChildNodes.Count) { case 1: // Le Noeud fils contient seulement une balise <shadow> // C'est la balise <shadow> qui est sélectionnée avec XMLDUnNoeudFils.FirstChild __expression = Compilateur.AnalyseUnNoeudDExpression(_UID, XMLDUnNoeudFils.FirstChild, _blocPrécédent, _groupeDeBlocs); break; case 2: // Le Noeud fils contient une balise <shadow> et une balise <block> // C'est la balise <block> qui est sélectionnée avec XMLDUnNoeudFils.LastChild __expression = Compilateur.AnalyseUnNoeudDExpression(_UID, XMLDUnNoeudFils.LastChild, _blocPrécédent, _groupeDeBlocs); break; } break; } } __Variable.AjouteUneVariable(__nom); // Liste les séquences du bloc // --------------------------- __séquences.Add((Séquence)Séquence_1); }
/* * Constructeur */ public GroupeDInstructions_Boucle_Faire_TantQue_ENTCondition(int _UID, XmlNode _XMLDuBloc, __Bloc _blocPrécédent, __GroupeDeBlocs _groupeDeBlocs) : base(_UID, _XMLDuBloc, _blocPrécédent, _groupeDeBlocs) { // Déclarations // ------------ String nomDeLAttribut; XmlNode XMLInterne; // Initialisation des membres // -------------------------- // Il est possible de sortir de ce groupe, à l'aide du bloc SortDeLaBoucleFaire __bloc_SortDeLaBoucleFaire_Possible = true; // Traitements // ----------- // Analyse du Bloc d'instruction foreach (XmlNode XMLDUnNoeudFils in _XMLDuBloc.ChildNodes) { nomDeLAttribut = ""; if (XMLDUnNoeudFils.Attributes["name"] != null) { nomDeLAttribut = XMLDUnNoeudFils.Attributes["name"].Value; } switch (nomDeLAttribut) { case "Condition": __conditionDeBoucle = Compilateur.AnalyseUnNoeudDExpression(_UID, XMLDUnNoeudFils.FirstChild, _blocPrécédent, _groupeDeBlocs); break; } } XMLInterne = _XMLDuBloc.SelectSingleNode("./statement"); if (XMLInterne != null) { __blocsInternes = new __BlocsInternes(UID + 1, XMLInterne.FirstChild, null, this); } // Liste les séquences du bloc // --------------------------- __séquences.Add((Séquence)Séquence_1); __séquences.Add((Séquence)Séquence_2); __séquences.Add((Séquence)Séquence_3); __nombreDeBlocsInternes = 1; }
/* * Constructeur */ public Valeur_OpérateurLogique(int _UID, XmlNode _XMLDuBloc, __Bloc _blocPrécédent, __GroupeDeBlocs _groupeDeBlocs, int _opérationLogique) : base(_UID, _XMLDuBloc, _blocPrécédent, _groupeDeBlocs) { // Déclarations // ------------ String nomDeLAttribut; // Traitements // ----------- // Analyse du Bloc d'instruction foreach (XmlNode XMLDUnNoeudFils in _XMLDuBloc) { nomDeLAttribut = ""; if (XMLDUnNoeudFils.Attributes["name"] != null) { nomDeLAttribut = XMLDUnNoeudFils.Attributes["name"].Value; } switch (nomDeLAttribut) { case "Valeur1": __valeur1 = Compilateur.AnalyseUnNoeudDExpression(_UID, XMLDUnNoeudFils.FirstChild, _blocPrécédent, _groupeDeBlocs); break; case "Valeur2": __valeur2 = Compilateur.AnalyseUnNoeudDExpression(_UID, XMLDUnNoeudFils.FirstChild, _blocPrécédent, _groupeDeBlocs); break; } } switch (_opérationLogique) { case (int)__OPÉRATIONS_LOGIQUES.NOM.OU: __code = "(" + __valeur1.codePourLeSéquenceur + " or " + __valeur2.codePourLeSéquenceur + ")"; break; case (int)__OPÉRATIONS_LOGIQUES.NOM.ET: __code = "(" + __valeur1.codePourLeSéquenceur + " and " + __valeur2.codePourLeSéquenceur + ")"; break; case (int)__OPÉRATIONS_LOGIQUES.NOM.NON: __code = "not (" + __valeur1.codePourLeSéquenceur + ")"; break; } }
/* * Constructeur */ public Variable_DéfinirUneVariable(int _UID, XmlNode _XMLDuBloc, __Bloc _blocPrécédent, __GroupeDeBlocs _groupeDeBlocs) : base(_UID, _XMLDuBloc, _blocPrécédent, _groupeDeBlocs) { // Déclarations // ------------ String erreur; String nomDeLAttribut; // Traitements // ----------- // Analyse du Bloc d'instruction foreach (XmlNode XMLDUnNoeudFils in _XMLDuBloc) { nomDeLAttribut = ""; if (XMLDUnNoeudFils.Attributes["name"] != null) { nomDeLAttribut = XMLDUnNoeudFils.Attributes["name"].Value; } switch (nomDeLAttribut) { case "VAR": __nom = XMLDUnNoeudFils.FirstChild.InnerText; break; case "VALUE": __expression = Compilateur.AnalyseUnNoeudDExpression(_UID, XMLDUnNoeudFils.FirstChild, _blocPrécédent, _groupeDeBlocs); break; } } if (__expression == null) { erreur = String.Format(Messages.Message((int)Messages.TYPE.VARIABLE_NON_INITIALISÉE), __nom); throw new Exception(erreur); } __Variable.AjouteUneVariable(__nom); // Liste les séquences du bloc // --------------------------- __séquences.Add((Séquence)Séquence_1); }
/* * Constructeur */ public __GroupeDInstructions_Si_Alors_AvecCondition(int _UID, XmlNode _XMLDuBloc, __Bloc _blocPrécédent, __GroupeDeBlocs _groupeDeBlocs, __BlocsInternes _blocsInternes, __Valeur _ConditionDEntré) : base(_UID, _XMLDuBloc, _blocPrécédent, _groupeDeBlocs) { // Initialisation des membres // -------------------------- __blocsInternes = _blocsInternes; __conditionDEntré = _ConditionDEntré; // Liste les séquences du bloc // --------------------------- __séquences.Add((Séquence)Séquence_1); __séquences.Add((Séquence)Séquence_2); __séquences.Add((Séquence)Séquence_3); __nombreDeBlocsInternes = 1; }
/* * Constructeur */ public GroupeDInstructions_Si_IlYAUnObstacleDevant_Alors(int _UID, XmlNode _XMLDuBloc, __Bloc _blocPrécédent, __GroupeDeBlocs _groupeDeBlocs) : base(_UID, _XMLDuBloc, _blocPrécédent, _groupeDeBlocs, null, null) { // Déclarations // ------------ XmlNode XMLInterne; // Initialisation des membres // -------------------------- __conditionDEntré = new __Valeur(_UID, _XMLDuBloc, _blocPrécédent, _groupeDeBlocs, __CAPTEURS.code((int)__CAPTEURS.NOM.AVANT_AU_MOINS_UN, (int)__CAPTEURS.PARAMÈTRE.DISTANCE_PRÈS)); // Blocs internes au groupe // ------------------------ XMLInterne = _XMLDuBloc.SelectSingleNode("./statement"); if (XMLInterne != null) { __blocsInternes = new __BlocsInternes(UID + 1, XMLInterne.FirstChild, null, this); } }
/* * Constructeur */ public Valeur_Booléen_ComparaisonNumériques_ENTEntier_SELComparaison_ENTEntier(int _UID, XmlNode _XMLDuBloc, __Bloc _blocPrécédent, __GroupeDeBlocs _groupeDeBlocs) : base(_UID, _XMLDuBloc, _blocPrécédent, _groupeDeBlocs) { // Déclarations // ------------ String nomDeLAttribut; // Traitements // ----------- // Analyse du Bloc d'instruction foreach (XmlNode XMLDUnNoeudFils in _XMLDuBloc) { nomDeLAttribut = ""; if (XMLDUnNoeudFils.Attributes["name"] != null) { nomDeLAttribut = XMLDUnNoeudFils.Attributes["name"].Value; } switch (nomDeLAttribut) { case "Valeur1": __valeur1 = Compilateur.AnalyseUnNoeudDExpression(_UID, XMLDUnNoeudFils.FirstChild, _blocPrécédent, _groupeDeBlocs); break; case "Valeur2": __valeur2 = Compilateur.AnalyseUnNoeudDExpression(_UID, XMLDUnNoeudFils.FirstChild, _blocPrécédent, _groupeDeBlocs); break; case "Comparaison": switch (XMLDUnNoeudFils.InnerText) { case "ÉGAL": __comparaison = (int)__COMPARAISONS_NUMÉRIQUES.NOM.ÉGAL; break; case "DIFFÉRENT": __comparaison = (int)__COMPARAISONS_NUMÉRIQUES.NOM.DIFFÉRENT; break; case "PLUS_GRAND": __comparaison = (int)__COMPARAISONS_NUMÉRIQUES.NOM.PLUS_GRAND; break; case "PLUS_PETIT": __comparaison = (int)__COMPARAISONS_NUMÉRIQUES.NOM.PLUS_PETIT; break; case "PLUS_GRAND_OU_ÉGAL": __comparaison = (int)__COMPARAISONS_NUMÉRIQUES.NOM.PLUS_GRAND_OU_ÉGAL; break; case "PLUS_PETIT_OU_ÉGAL": __comparaison = (int)__COMPARAISONS_NUMÉRIQUES.NOM.PLUS_PETIT_OU_ÉGAL; break; } break; } } switch (__comparaison) { case (int)__COMPARAISONS_NUMÉRIQUES.NOM.ÉGAL: __code = "(" + __valeur1.codePourLeSéquenceur + "==" + __valeur2.codePourLeSéquenceur + ")"; break; case (int)__COMPARAISONS_NUMÉRIQUES.NOM.DIFFÉRENT: __code = "(" + __valeur1.codePourLeSéquenceur + "!=" + __valeur2.codePourLeSéquenceur + ")"; break; case (int)__COMPARAISONS_NUMÉRIQUES.NOM.PLUS_GRAND: __code = "(" + __valeur1.codePourLeSéquenceur + ">" + __valeur2.codePourLeSéquenceur + ")"; break; case (int)__COMPARAISONS_NUMÉRIQUES.NOM.PLUS_PETIT: __code = "(" + __valeur1.codePourLeSéquenceur + "<" + __valeur2.codePourLeSéquenceur + ")"; break; case (int)__COMPARAISONS_NUMÉRIQUES.NOM.PLUS_GRAND_OU_ÉGAL: __code = "(" + __valeur1.codePourLeSéquenceur + ">=" + __valeur2.codePourLeSéquenceur + ")"; break; case (int)__COMPARAISONS_NUMÉRIQUES.NOM.PLUS_PETIT_OU_ÉGAL: __code = "(" + __valeur1.codePourLeSéquenceur + "<=" + __valeur2.codePourLeSéquenceur + ")"; break; } }
/* * Constructeur */ public Valeur_Entier_OpérationNumériques_ENTEntier_SELComparaison_ENTEntier(int _UID, XmlNode _XMLDuBloc, __Bloc _blocPrécédent, __GroupeDeBlocs _groupeDeBlocs) : base(_UID, _XMLDuBloc, _blocPrécédent, _groupeDeBlocs) { // Déclarations // ------------ String nomDeLAttribut; // Traitements // ----------- // Analyse du Bloc d'instruction foreach (XmlNode XMLDUnNoeudFils in _XMLDuBloc) { nomDeLAttribut = ""; if (XMLDUnNoeudFils.Attributes["name"] != null) { nomDeLAttribut = XMLDUnNoeudFils.Attributes["name"].Value; } switch (nomDeLAttribut) { case "Valeur1": __valeur1 = Compilateur.AnalyseUnNoeudDExpression(_UID, XMLDUnNoeudFils.FirstChild, _blocPrécédent, _groupeDeBlocs); break; case "Valeur2": __valeur2 = Compilateur.AnalyseUnNoeudDExpression(_UID, XMLDUnNoeudFils.FirstChild, _blocPrécédent, _groupeDeBlocs); break; case "Opération": switch (XMLDUnNoeudFils.InnerText) { case "ADDITION": opération = (int)__OPÉRATIONS_NUMÉRIQUES.NOM.ADDITION; break; case "SOUSTRACTION": opération = (int)__OPÉRATIONS_NUMÉRIQUES.NOM.SOUSTRACTION; break; case "MULTIPLICATION": opération = (int)__OPÉRATIONS_NUMÉRIQUES.NOM.MULTIPLICATION; break; case "DIVISION": opération = (int)__OPÉRATIONS_NUMÉRIQUES.NOM.DIVISION; break; case "MODULO": opération = (int)__OPÉRATIONS_NUMÉRIQUES.NOM.MODULO; break; } break; } } switch (opération) { case (int)__OPÉRATIONS_NUMÉRIQUES.NOM.ADDITION: __code = "(" + __valeur1.codePourLeSéquenceur + "+" + __valeur2.codePourLeSéquenceur + ")"; break; case (int)__OPÉRATIONS_NUMÉRIQUES.NOM.SOUSTRACTION: __code = "(" + __valeur1.codePourLeSéquenceur + "-" + __valeur2.codePourLeSéquenceur + ")"; break; case (int)__OPÉRATIONS_NUMÉRIQUES.NOM.MULTIPLICATION: __code = "(" + __valeur1.codePourLeSéquenceur + "*" + __valeur2.codePourLeSéquenceur + ")"; break; case (int)__OPÉRATIONS_NUMÉRIQUES.NOM.DIVISION: __code = "(" + __valeur1.codePourLeSéquenceur + "/" + __valeur2.codePourLeSéquenceur + ")"; break; case (int)__OPÉRATIONS_NUMÉRIQUES.NOM.MODULO: __code = "(" + __valeur1.codePourLeSéquenceur + "%" + __valeur2.codePourLeSéquenceur + ")"; break; } }