private D_PieceContent makePieceContent(PieceTokenizer f) { var g = f.reStart(); D_PieceContent piece = new D_PieceContent(); D_Piece c; string w1; if ((w1 = getWord(f)) != null) { piece.PieceContentClause = D_PieceContent.D_PieceContentClause.Word; piece.Word = new D_Word(); piece.Word.Value = w1; } else if (isString(f)) { piece.PieceContentClause = D_PieceContent.D_PieceContentClause.String; piece.String = new D_String(); piece.String.Value = f.CurrentPiece(); } else if ((c = makePiece(f)) != null) { piece.PieceContentClause = D_PieceContent.D_PieceContentClause.Piece; piece.Piece = c; } else { f.goBack(g); return null; } return piece; }
private Tuple<string, string> buildPieceContents(VariableTracker vt, D_PieceContent pieceWrap, D_Item item) { StringBuilder cls = new StringBuilder(); StringBuilder method = new StringBuilder(); Tuple<string, string> v; switch (pieceWrap.PieceContentClause) { case D_PieceContent.D_PieceContentClause.Word: var d = vt.NewVariable(); method.AppendLine("D_" + pieceWrap.Word.Value + " "+d+";\r\n if(("+d+" = make" + pieceWrap.Word.Value + "(f))!=null){"); break; case D_PieceContent.D_PieceContentClause.String: method.AppendLine("if(isToken(f,\""+pieceWrap.String.Value+"\")){"); break; case D_PieceContent.D_PieceContentClause.Piece: v = buildPiece(vt, pieceWrap.Piece, item); method.AppendLine("{"); cls.AppendLine(v.Item1); method.AppendLine(v.Item2); break; default: throw new ArgumentOutOfRangeException(); } return new Tuple<string, string>(cls.ToString(), method.ToString()); }