Exemple #1
0
		public  Statement (Parser yyp, ReturnStatement  rs ):base(((LSLSyntax
		                                                           )yyp)){ kids . Add ( rs );
		}
        /// <summary>
        /// Generates the code for a ReturnStatement node.
        /// </summary>
        /// <param name="rs">The ReturnStatement node.</param>
        /// <returns>String containing C# code for ReturnStatement rs.</returns>
        private string GenerateReturnStatement(ReturnStatement rs)
        {
            string retstr = "";

            if (IsParentEnumerable)
            {
                retstr += Generate("{ ");
                if (rs.kids.Count == 0)
                    retstr += Generate("yield break;", rs);
                else
                {
                    retstr += Generate("yield return ", rs);
                    foreach (SYMBOL kid in rs.kids)
                        retstr += GenerateNode(kid);
                    retstr += Generate("; yield break;", rs);
                }
                retstr += Generate(" }");
            }
            else
            {
                retstr += Generate("return ", rs);

                foreach (SYMBOL kid in rs.kids)
                    retstr += GenerateNode(kid);
            }

            return retstr.ToString();
        }
Exemple #3
0
        /// <summary>
        /// Generates the code for a ReturnStatement node.
        /// </summary>
        /// <param name="rs">The ReturnStatement node.</param>
        /// <returns>String containing C# code for ReturnStatement rs.</returns>
        private string GenerateReturnStatement(ReturnStatement rs)
        {
            string retstr = "";

            retstr += Generate("return ", rs);

            foreach (SYMBOL kid in rs.kids)
                retstr += GenerateNode(kid);

            return retstr.ToString();
        }
Exemple #4
0
        /// <summary>
        /// Generates the code for a ReturnStatement node.
        /// </summary>
        /// <param name="rs">The ReturnStatement node.</param>
        /// <returns>String containing C# code for ReturnStatement rs.</returns>
        private string GenerateReturnStatement(ReturnStatement rs)
        {
            string retstr = "";

            bool dump = FuncCallsMarc();

            if (IsParentEnumerable)
            {
                retstr += GenerateLine("{ ");
                if (rs.kids.Count == 0)
                    retstr += GenerateLine("yield break;", rs);
                else
                {
                    retstr += Generate("yield return ", rs);
                    foreach (SYMBOL kid in rs.kids)
                        retstr += GenerateNode(kid);
                    retstr += GenerateLine(";", null);
                    retstr += GenerateLine("yield break;", null);
                }
                retstr += GenerateLine("}");
            }
            else
            {
                retstr += Generate("return ", rs);

                foreach (SYMBOL kid in rs.kids)
                    retstr += GenerateNode(kid);
            }
            if (dump)
                return DumpFunc(dump) + retstr;
            return retstr.ToString();
        }
        /// <summary>
        /// Generates the code for a ReturnStatement node.
        /// </summary>
        /// <param name="rs">The ReturnStatement node.</param>
        /// <returns>String containing C# code for ReturnStatement rs.</returns>
        private string GenerateReturnStatement(ReturnStatement rs)
        {
            StringBuilder retstr = new StringBuilder();
			
            if(IsParentEnumerable)
            {
            	retstr.Append(Generate("yield break;")); //Enumerator, must be broken, and will not have a return value since in this implementation, it replaces void
            }
            else
            {
            	retstr.Append(Generate("return ", rs));

            	foreach (SYMBOL kid in rs.kids)
                	retstr.Append(GenerateNode(kid));
            }

            return retstr.ToString();
        }