コード例 #1
0
        public override string ToCode(ToCodeFormat format)
        {
            StringBuilder sb = new StringBuilder();

            if (Parser.Settings.LocalRenaming != LocalRenaming.KeepAll &&
                Parser.Settings.IsModificationAllowed(TreeModifications.LocalRenaming))
            {
                // we're hyper-crunching.
                // we want to output our label as per our nested level.
                // top-level is "a", next level is "b", etc.
                // we don't need to worry about collisions with variables.
                sb.Append(CrunchEnumerator.CrunchedLabel(m_nestCount));
            }
            else
            {
                // not hypercrunching -- just output our label
                sb.Append(m_label);
            }
            sb.Append(':');
            if (m_statement != null)
            {
                // don't sent the AlwaysBraces down the chain -- we're handling it here.
                // but send any other formats down -- we don't know why they were sent.
                sb.Append(m_statement.ToCode(format));
            }
            return(sb.ToString());
        }
コード例 #2
0
ファイル: continue.cs プロジェクト: formist/LinkMe
        public override string ToCode(ToCodeFormat format)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("continue");
            if (m_label != null)
            {
                sb.Append(' ');
                if (Parser.Settings.LocalRenaming != LocalRenaming.KeepAll &&
                    Parser.Settings.IsModificationAllowed(TreeModifications.LocalRenaming))
                {
                    // hypercrunched -- only depends on nesting level
                    sb.Append(CrunchEnumerator.CrunchedLabel(m_nestLevel));
                }
                else
                {
                    // not hypercrunched -- just output label
                    sb.Append(m_label);
                }
            }

            return(sb.ToString());
        }