Пример #1
0
        // Compara esta sentencia compuesta con otra y dice si son iguales
        public bool Equals(ComplexSentence cs)
        {
            if (cs == null)
            {
                return(false);
            }
            if (this == cs)
            {
                return(true);
            }

            bool result = false;

            if (cs.GetHashCode() == this.GetHashCode())
            {
                if (cs.GetConnective().Equals(this.GetConnective()) &&
                    cs.GetNumberSimplerSentences() == this.GetNumberSimplerSentences())
                {
                    // Si la conectiva y el número de sentencias más simples coincide, asumir que hay coincidencia y pasar a comprobar CADA sentencia simple
                    result = true;
                    for (int i = 0; i < this.GetNumberSimplerSentences(); i++)
                    {
                        if (!cs.GetSimplerSentence(i).Equals(this.GetSimplerSentence(i)))
                        {
                            result = false;
                            break;
                        }
                    }
                }
            }

            return(result);
        }
Пример #2
0
        /**
         * Rutina de utilidad que creará una representación en forma de cadena de una sentencia dada y la colocará entre paréntesis si es una sentencia compleja de menor precedencia que esta sentencia compleja.
         * Nota: Esta es una forma de imprimir más bonita, donde sólo añadimos paréntesis en la representación de la sintaxis concreta si se necesitan
         * para asegurarnos que se puede parsear de vuelta en la representación de sintaxix abstracta equivalente que usamos aquí.
         *
         * @param parentConnective
         *            la conectiva de la sentencia padre.
         * @param childSentence
         *            una sentencia hija más simple.
         * @return una representación en forma de cadena de la sentencia, entre paréntesis si el padre tiene mayor precedencia basándonos en su conectiva.
         */
        public string BracketSentenceIfNecessary(Connective parentConnective, Sentence childSentence)
        {
            string result = null;

            if (childSentence is ComplexSentence)
            {
                ComplexSentence cs = (ComplexSentence)childSentence;
                if (cs.GetConnective().Precedence < parentConnective.Precedence)
                {
                    result = "(" + childSentence + ")";
                }
            }

            if (result == null)
            {
                result = childSentence.ToString();
            }

            return(result);
        }