示例#1
0
        /*
         * 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);
        }
示例#3
0
        /*
         * 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;
            }
        }
示例#5
0
        /*
         * 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);
        }
示例#6
0
        /*
         * 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;
        }
示例#7
0
        /*
         * 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);
            }
        }
示例#8
0
        /*
         * 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;
            }
        }
示例#9
0
        /*
         * 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;
            }
        }