Esempio n. 1
0
        /// <summary>
        /// Constrói uma representação textual da lista.
        /// </summary>
        /// <param name="type">O delimitador.</param>
        /// <returns>A representação textual da lista.</returns>
        public string ToString(LispDelimiterType type)
        {
            var openType  = string.Empty;
            var closeType = string.Empty;

            switch (type)
            {
            case LispDelimiterType.BAR_GREATER:
                openType  = "|";
                closeType = ">";
                break;

            case LispDelimiterType.BRACES:
                openType  = "{";
                closeType = "}";
                break;

            case LispDelimiterType.BRACKETS:
                openType  = "[";
                closeType = "]";
                break;

            case LispDelimiterType.LESSER_GREATER:
                openType  = "<";
                closeType = ">";
                break;

            case LispDelimiterType.PARENTHESIS:
                openType  = "(";
                closeType = ")";
                break;

            default:
                throw new CollectionsException("Delimiter types not yet implemented.");
            }

            string result = openType;

            if (this.values.Count > 0)
            {
                result += this.PrintElement(this.values[0], openType, closeType);
                for (int i = 1; i < this.values.Count; ++i)
                {
                    result += ",";
                    result += this.PrintElement(this.values[i], openType, closeType);
                }
            }
            result += closeType;
            return(result);
        }
Esempio n. 2
0
            /// <summary>
            /// Instancia um novo objecto do tipo <see cref="LispStyleParser{R}"/>..
            /// </summary>
            /// <param name="parserForT">O leitor de elementos.</param>
            /// <param name="type">O tipo de delimitador.</param>
            /// <exception cref="CollectionsException">Se o delimitador não for suportado.</exception>
            public LispStyleParser(IParse <R, string, string> parserForT, LispDelimiterType type)
            {
                string openType  = string.Empty;
                string closeType = string.Empty;

                switch (type)
                {
                case LispDelimiterType.BAR_GREATER:
                    openType  = "bitwise_or";
                    closeType = "great_than";
                    break;

                case LispDelimiterType.BRACES:
                    openType  = "left_brace";
                    closeType = "right_brace";
                    break;

                case LispDelimiterType.BRACKETS:
                    openType  = "left_bracket";
                    closeType = "right_bracket";
                    break;

                case LispDelimiterType.LESSER_GREATER:
                    openType  = "less_than";
                    closeType = "great_than";
                    break;

                case LispDelimiterType.PARENTHESIS:
                    openType  = "left_parenthesis";
                    closeType = "right_parenthesis";
                    break;

                default:
                    throw new CollectionsException("Delimiter types not yet implemented.");
                }

                this.expressionReader = new ExpressionReader <LispStyleList <R> .ElementList <R>, string, string>(
                    new ElementParser <R>(parserForT));
                this.expressionReader.RegisterExpressionDelimiterTypes(openType, closeType, this.Parenthesis);
                this.expressionReader.RegisterBinaryOperator("comma", this.Concatenate, 0);
                this.delimiters = type;
            }
Esempio n. 3
0
 /// <summary>
 /// Gets a <see cref="ILispStyleListParser{T}"/> parser for list style list using
 /// the specified delimiters types.
 /// </summary>
 /// <param name="parserForT">The parser for list objects.</param>
 /// <param name="type">The type of delimiters to be used during the parsing.</param>
 /// <returns>The parser.</returns>
 public static ILispStyleListParser <T> GetParser(
     IParse <T, string, string> parserForT,
     LispDelimiterType type)
 {
     return(new LispStyleParser <T>(parserForT, type));
 }