Example #1
0
        protected override void visitComponentDeclaration(Component declaration)
        {
            writer.Append(KeywordEnum.COMPONENT.ToString()).Append(' ');
            writer.AppendIdentifier(declaration);

            OptionalIsFormat format = Annotations.getAnnotation <OptionalIsFormat>(declaration);

            if (format != null && format.UseIs)
            {
                writer.Append(' ').Append(KeywordEnum.IS.ToString());
            }

            writer.Indent().NewLine();
            if (declaration.Generic.Count != 0)
            {
                output.getMiscellaneousElementOutput().generic(declaration.Generic);
            }
            if (declaration.Port.Count != 0)
            {
                output.getMiscellaneousElementOutput().port(declaration.Port);
            }
            writer.Dedent().Append(KeywordEnum.END.ToString()).Append(KeywordEnum.COMPONENT.ToString());
            if (writer.Format.RepeatLabels)
            {
                writer.Append(' ').AppendIdentifier(declaration);
            }
            writer.Append(";").NewLine();
        }
        protected override void visitProcessStatement(AbstractProcessStatement statement)
        {
            appendLabel(statement);
            if (statement.Postponed)
            {
                writer.Append(KeywordEnum.POSTPONED.ToString()).Append(' ');
            }
            writer.Append(KeywordEnum.PROCESS.ToString());
            if (statement.SensitivityList.Count != 0)
            {
                writer.Append("(");
                bool first = true;
                foreach (Signal signal in statement.SensitivityList)
                {
                    if (first)
                    {
                        first = false;
                    }
                    else
                    {
                        writer.Append(", ");
                    }
                    if (signal == null)
                    {
                        writer.Append("null");
                    }
                    else
                    {
                        writer.AppendIdentifier(signal);
                    }
                }
                writer.Append(")");
            }

            OptionalIsFormat format = Annotations.getAnnotation <OptionalIsFormat>(statement);

            if (format != null && format.UseIs)
            {
                writer.Append(' ').Append(KeywordEnum.IS.ToString());
            }

            writer.NewLine().Indent();
            output.writeDeclarationMarkers(statement.Declarations);
            writer.Dedent().Append(KeywordEnum.BEGIN.ToString()).NewLine().Indent();
            output.writeSequentialStatements(statement.Statements);
            writer.Dedent().Append(KeywordEnum.END.ToString());
            if (statement.Postponed && writer.Format.RepeatLabels)
            {
                writer.Append(' ').Append(KeywordEnum.POSTPONED.ToString());
            }
            writer.Append(' ');
            writer.Append(KeywordEnum.PROCESS.ToString());
            if (statement.Label != null && writer.Format.RepeatLabels)
            {
                writer.Append(' ').Append(statement.Label);
            }
            writer.Append(";").NewLine();
        }
        protected override void visitBlockStatement(BlockStatement statement)
        {
            appendLabel(statement);
            writer.Append(KeywordEnum.BLOCK.ToString());
            if (statement.GuardExpression != null)
            {
                writer.Append("(");
                output.writeExpression(statement.GuardExpression);
                writer.Append(")");
            }

            OptionalIsFormat format = Annotations.getAnnotation <OptionalIsFormat>(statement);

            if (format != null && format.UseIs)
            {
                writer.Append(' ').Append(KeywordEnum.IS.ToString());
            }

            writer.NewLine().Indent();
            if (statement.Generic.Count != 0)
            {
                output.getMiscellaneousElementOutput().generic(statement.Generic);
                if (statement.GenericMap.Count != 0)
                {
                    writer.Append(KeywordEnum.GENERIC.ToString()).Append(KeywordEnum.MAP.ToString()).Append(" (").NewLine();
                    writer.Indent().BeginAlign();
                    output.getMiscellaneousElementOutput().genericMap(statement.GenericMap);
                    writer.EndAlign().Dedent();
                    writer.Append(");").NewLine();
                }
            }

            if (statement.Port.Count != 0)
            {
                output.getMiscellaneousElementOutput().port(statement.Port);
                if (statement.PortMap.Count != 0)
                {
                    writer.Append(KeywordEnum.PORT.ToString()).Append(KeywordEnum.MAP.ToString()).Append(" (").NewLine();
                    writer.Indent().BeginAlign();
                    output.getMiscellaneousElementOutput().portMap(statement.PortMap);
                    writer.EndAlign().Dedent();
                    writer.Append(");").NewLine();
                }
            }

            output.writeDeclarationMarkers(statement.Declarations);
            writer.Dedent().Append(KeywordEnum.BEGIN.ToString()).NewLine();
            writer.Indent();
            visit(statement.Statements);
            writer.Dedent();
            writer.Append(KeywordEnum.END.ToString()).Append(KeywordEnum.BLOCK.ToString());
            if (writer.Format.RepeatLabels)
            {
                writer.Append(' ').Append(statement.Label);
            }
            writer.Append(";").NewLine();
        }