Beispiel #1
0
        /// <summary>
        /// Renders a single ArrayCreateExpression to VHDL
        /// </summary>
        /// <returns>The VHDL equivalent of the expression.</returns>
        /// <param name="e">The expression to render</param>
        private string RenderExpression(AST.ArrayCreateExpression e)
        {
            var last = UnwrapPrimitive(e.ElementExpressions.LastOrDefault());

            if (last != null && last.Value != null)
            {
                var trailing_defaults = e.ElementExpressions.Reverse().TakeWhile(x => last.Value.Equals(UnwrapPrimitive(x)?.Value)).Count();
                if (trailing_defaults != 0)
                {
                    return("(" + string.Join(", ",
                                             e.ElementExpressions
                                             .Take(e.ElementExpressions.Length - trailing_defaults)
                                             .Select(x => RenderExpression(x))
                                             .Concat(new[] { "others => " + RenderExpression(e.ElementExpressions.Last()) })
                                             ) + ")");
                }
            }

            return("(" + string.Join(", ", e.ElementExpressions.Select(x => RenderExpression(x))) + ")");
        }
Beispiel #2
0
 /// <summary>
 /// Renders a single ArrayCreateExpression to VHDL
 /// </summary>
 /// <returns>The VHDL equivalent of the expression.</returns>
 /// <param name="e">The expression to render</param>
 private string RenderExpression(AST.ArrayCreateExpression e)
 {
     return("{" + string.Join(", ", e.ElementExpressions.Select(x => RenderExpression(x))) + "}");
 }