示例#1
0
        private D_PieceWrap makePieceWrap(PieceTokenizer f)
        {
            var g = f.reStart();

            D_PieceWrap piece = new D_PieceWrap();
            D_PieceInformation c;
            D_PieceExtras d;
            if ((c = makePieceInformation(f)) != null)
            {
                piece.PieceInformation = c;
                if ((d = makePieceExtras(f)) != null)
                {
                    piece.HasPieceExtras = true;
                    piece.PieceExtras = d;
                }
                else
                    piece.HasPieceExtras = false;

            }
            else
            {
                f.goBack(g);
                return null;
            }
            return piece;
        }
示例#2
0
        private Tuple<string, string> buildPieceWrap(VariableTracker vt, D_PieceWrap pieceWrap, D_Item item)
        {
            StringBuilder cls = new StringBuilder();
            StringBuilder method = new StringBuilder();
            Tuple<string, string> v;

            if (pieceWrap.HasPieceExtras)
            {
                switch (pieceWrap.PieceExtras.PieceExtrasClause)
                {
                    case D_PieceExtras.D_PieceExtrasClause.QuestionMark:
                        break;
                    case D_PieceExtras.D_PieceExtrasClause.DotDot:
                        method.AppendLine("while(true) {");
                        v = buildPieceInformation(vt, pieceWrap.PieceInformation, item);

                        cls.AppendLine(v.Item1);
                        method.AppendLine(v.Item2);

                        method.AppendLine("}");

                        cls.AppendLine("public List<D_" + item.Word.Value + "> " + item.Word.Value + "s = new List<D_" + item.Word.Value + ">();");
                        break;
                    default:
                        throw new ArgumentOutOfRangeException();
                }
            }

            return new Tuple<string, string>(cls.ToString(), method.ToString());
        }