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; }
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()); }