快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

将java代码生成html并且高亮显示

import java.util.*;
import java.io.*;

public class java2html
{
    private static boolean comment=false;
    private static boolean lineComment=false;
    private static boolean START = true;
    private static boolean END = false;
    private static boolean backslash=false;
    private static boolean stringlit = false;
    private static boolean stringlit2 = false;
    private static int tabWidth = 0;
    private static String tab=\" \";
    private static Collection varList = new ArrayList();
    private static StringBuffer out = new StringBuffer();

    private static Collection primitives = new ArrayList();
    static
    {
        String[] primString =
        {\"int\",\"Integer\", \"byte\",\"Byte\", \"boolean\",\"Boolean\", \"short\", \"Short\", \"long\", \"Long\", \"char\", \"Character\", \"float\", \"Float\", \"double\", \"Double\", \"String\", \"void\",\"StringBuffer\",\"Collection\"};
        for(int i=0; i<primString.length; i++)
        primitives.add(primString[i]);
    }

    private static Collection operators = new ArrayList();
    static
    {
        String[] operString =
        {\"=\", \">\", \"<\", \"!\", \"~\", \"?\", \":\", \"==\", \"<=\", \">=\", \"!=\", \"&&\", \"||\", \"++\", \"--\", \"+\", \"-\", \"*\", \"/\", \"&\", \"|\", \"^\", \"%\", \">>\", \"<<\", \">>>\", \"+=\", \"-=\", \"*=\", \"/=\", \"&=\", \"|=\", \"^=\", \"%=\", \"<<=\", \">>=\", \"<<<\"};
        for(int i=0; i<operString.length; i++)
        operators.add(operString[i]);
    }


    private static Collection string = new ArrayList();
    static
    {
        String[] stringString =
        {\"/\"\"};
        for(int i=0; i<stringString.length; i++)
        string.add(stringString[i]);
    }

    private static Collection flow = new ArrayList();
    static
    {
        String[] flowString =
        {\"true\" , \"false\" , \"null\" , \"import\"};
        for(int i=0; i<flowString.length; i++)
        flow.add(flowString[i]);
    }

    private static Collection resWords = new ArrayList();
    static
    {
        String[] reswString =
        {\"private\", \"static\", \"new\", \"public\", \"final\", \"class\", \"this\",  \"synchronized\", \"native\", \"package\", \"if\", \"then\", \"else\", \"finally\", \"switch\", \"do\", \"while\", \"case\", \"default\", \"return\", \"break\", \"continue\", \"throw\", \"throws\", \"catch\", \"try\", \"for\",\"protected\"};
        for(int i=0; i<reswString.length; i++)
        resWords.add(reswString[i]);
    }

    private static void java2html(String fileName)
    { }

    public static void tabIncrease(boolean up)
    {
        //prComment(START);out.append(\"tabs\");prComment(END);
        if(up)
        {
            tabWidth++;
        } else
        {
            tabWidth--;
        }
        tab=\" \";
        for(int i=tabWidth; i>0; i--)
        {
            tab = tab+\"&nbsp;&nbsp;&nbsp;&nbsp;\";
        }
    }

    public static void prTitle(String str)
    {
        out.append(\"<TITLE>\" + str + \"</TITLE>\");
        out.append(\"/n\");
    }


    public static void prPrimitive(String str)
    {
        if (comment || lineComment)
        {
            prJComment(str);
        } else if (stringlit)
        {
            prStringLit(str);
        } else
        {
            out.append(\"<b><FONT color=red>\" + str + \"</FONT></b>\");
            out.append(\"/n\");
        }
    }

    public static void prVar(String str)
    {
        if (comment || lineComment)
        {
            prJComment(str);
        } else if (stringlit)
        {
            prStringLit(str);
        } else
        {
            out.append(\"<FONT color=red>\" + str + \"</FONT>\");
            out.append(\"/n\");
        }
    }

    public static void prFlow(String str)
    {
        if (comment || lineComment)
        {
            prJComment(str);
        } else if (stringlit)
        {
            prStringLit(str);
        } else
        {
            out.append(\"<b><FONT color=black>\" + str + \"</FONT></b>\");
            out.append(\"/n\");
        }
    }

    public static void prResWord(String str)
    {
        if (comment || lineComment)
        {
            prJComment(str);
        } else if (stringlit)
        {
            prStringLit(str);
        } else
        {
            out.append(\"<b><FONT color=black>\" + str + \"</FONT></b>\");
            out.append(\"/n\");
        }
    }

    public static void prNormal(String str)
    {
        if (comment || lineComment)
        {
            prJComment(str);
        } else if (stringlit)
        {
            prStringLit(str);
        } else
        {
            out.append(str);
            out.append(\"/n\");
        }
    }

    public static void prJComment(String str)
    {
        out.append(\"<FONT color=#888888>\" + str + \"</FONT>\");
        out.append(\"/n\");
    }

    public static void prOperator(String str)
    {
        if (comment || lineComment)
        {
            prJComment(str);
        } else if (stringlit)
        {
            prStringLit(str);
        } else
        {
            out.append(\"<FONT color=black>\" + str + \"</FONT>/n\");
        }
    }

    public static void prNumber(String str)
    {
        if (comment || lineComment)
        {
            prJComment(str);
        } else if (stringlit)
        {
            prStringLit(str);
        } else
        {
            out.append(\"<FONT color=blue>\" + str + \"</FONT>/n\");
        }
    }

    public static void prStringLit(String str)
    {
        out.append(str +\"/n\");
    }

    public static void prHead(boolean start)
    {
        if(start)
        {
            out.append(\"<HEAD>\");
            out.append(\"/n\");
        } else
        {
            out.append(\"</HEAD>\");
            out.append(\"/n\");
        }
    }

    public static void prBody(boolean start)
    {
        if (start)
        {

            out.append(\"<BODY bgcolor=white color=red>\");
            out.append(\"/n\");
            out.append(\"<tt><FONT color=red>\");
            out.append(\"/n\");
        } else
        {
            out.append(\"</FONT></tt>\");
            out.append(\"/n\");
            out.append(\"</BODY>\");
            out.append(\"/n\");
        }
    }

    public static void prComment(boolean start)
    {
        if(start)
        {
            out.append(\"<!--\");
            out.append(\"/n\");
        } else
        {
            out.append(\"-->\");
            out.append(\"/n\");
        }
    }

    public static void prHtml(boolean start)
    {
        if(start)
        {
            out.append(\"<HTML>\");
            out.append(\"/n\");
        } else
        {
            out.append(\"</HTML>\");
            out.append(\"/n\");
        }
    }

    public static void prBr(boolean start)
    {
        if(start)
        {
            out.append(\"<BR>\");
            out.append(\"/n\");
        } else
        {
            out.append(\"<BR>\");
            out.append(\"/n\");
        }
        out.append(tab);
    }

    public static void prP(boolean start)
    {
        if(start)
        {
            out.append(\"<P>\");
            out.append(\"/n\");
        } else
        {
            out.append(\"</P>\");
            out.append(\"/n\");
        }
    }

    public static void prTable(boolean start)
    {
        if(start)
        {
            out.append(\"<TABLE>\");
            out.append(\"/n\");
        } else
        {
            out.append(\"</TABLE>\");
            out.append(\"/n\");
        }
    }

    public static void prTr(boolean start)
    {
        if(start)
        {
            out.append(\"<TR>\");
            out.append(\"/n\");
        } else
        {
            out.append(\"</TR>\");
            out.append(\"/n\");
        }
    }

    public static void prTd(boolean start)
    {
        if(start)
        {
            out.append(\"<TD>\");
            out.append(\"/n\");
        } else
        {
            out.append(\"</TD>\");
            out.append(\"/n\");
        }
    }

    public static void prStringOne(boolean start)
    {
        if (comment || lineComment)
        {
            prJComment(\"/\\\'\");
        } else if(start)
        {
            out.append(\"<FONT color=green>/\\\'/n\");
            stringlit=true;
        } else
        {
            out.append(\"/\\\'</FONT>/n\");
            stringlit=false;
        }
    }

    public static void prStringTwo(boolean start)
    {
        if (comment || lineComment)
        {
            prJComment(\"/\"\");
        } else if(start)
        {
            out.append(\"<FONT color=green>/\"/n\");
            stringlit=true;
            stringlit2=true;
        } else
        {
            out.append(\"/\"</FONT>/n\");
            stringlit=false;
            stringlit2=false;
        }
    }

    public static void main(String[] args)
    {
        if (args.length<2)
        {
            System.out.println(\"/n错误:参数不足!\");
            System.out.println(\"java2html [源文件] [将生成文件名]\");
        }
        else
        {
            FileInputStream file;
            StreamTokenizer st;
            String htmlFile = args[1];
            boolean isVar=false;
            putHtml puthtml = new putHtml();
            boolean firstOfComment=false;
            int b = 8;
            int a = 10 / b;
            try
            {
                file = new FileInputStream(args[0]);
                Reader r = new BufferedReader(new InputStreamReader(file)); 
                st = new StreamTokenizer(r);
                st.eolIsSignificant(true);
                st.ordinaryChar(\\\'/\"\\\');
                st.ordinaryChar(\\\'/\\\');
                st.ordinaryChar(\\\'//\\\');
                st.ordinaryChar(\\\'.\\\');
                st.ordinaryChar(\\\'/\\\'\\\');
                prHtml(START);
                prHead(START);
                prTitle(args[0]);
                prHead(END);
                prBody(START);

                while(st.nextToken() != StreamTokenizer.TT_EOF)
                {
                    switch(st.ttype)
                    {
                        case StreamTokenizer.TT_WORD:
                        if(firstOfComment)
                        {
                            if((!comment && !lineComment)) prOperator(\"/\");
                        }
                        firstOfComment=false;
                        if(primitives.contains(st.sval))
                        {
                            prPrimitive(st.sval);
                            isVar=true;
                            backslash=false;
                            break;
                        }
                        if(flow.contains(st.sval))
                        {
                            isVar=false;
                            prNumber(st.sval);
                            backslash=false;
                            break;
                        }
                        if(resWords.contains(st.sval))
                        {
                            isVar=false;
                            prResWord(st.sval);
                            backslash=false;
                            break;
                        }
                        if(varList.contains(st.sval))
                        {
                            isVar=false;
                            prVar(st.sval);
                            backslash=false;
                            break;
                        }
                        if(isVar && !(varList.contains(st.sval)))
                        {
                            varList.add(st.sval);
                            prVar(st.sval);
                        } else
                        {
                            prNormal(st.sval);
                        }
                        backslash=false;
                        break;
                        case StreamTokenizer.TT_EOL:
                        isVar=false;
                        if(firstOfComment)
                        {
                            prOperator(\"/\");
                            firstOfComment=false;
                        }
                        firstOfComment=false;
                        lineComment=false;
                        prBr(START);
                        backslash=false;
                        break;
                        case StreamTokenizer.TT_NUMBER:
                        isVar=false;
                        if(firstOfComment)
                        {
                            prOperator(\"/\");
                            firstOfComment=false;
                        }
                        firstOfComment=false;
                        if(String.valueOf((char)st.ttype).equals(\".\"))
                        {
                            prFlow(\".\");
                            backslash=false;
                            break;
                        }
                        prNumber(new Double(st.nval).toString());
                        backslash=false;
                        break;
                        default:
                        isVar=false;
                        if(operators.contains(String.valueOf((char)st.ttype)))
                        {
                            if (firstOfComment)
                            {
                                if (comment)
                                {
                                    //there has been a star, waiting for slash
                                    if (String.valueOf((char)st.ttype).equals(\"/\"))
                                    {
                                        firstOfComment=false;
                                        prJComment(\"*/\");
                                        comment=false;
                                        backslash=false;
                                        firstOfComment=false;
                                        break;
                                    } else firstOfComment=false;
                                } else
                                {
                                    //there has been a slash, waiting for slash or star
                                    if (String.valueOf((char)st.ttype).equals(\"/\"))
                                    {
                                        if (!stringlit)
                                        {
                                            lineComment=true;
                                            prJComment(\"//\");
                                        } else
                                        {
                                            lineComment=false;
                                            prNormal(\"//\");
                                        }
                                        firstOfComment=false;
                                        comment=false;
                                        backslash=false;
                                        break;
                                    } else if (String.valueOf((char)st.ttype).equals(\"*\"))
                                    {
                                        if (!stringlit)
                                        {
                                            comment=true;
                                            prJComment(\"/*\");
                                        } else
                                        {
                                            comment=false;
                                            prNormal(\"/*\");
                                        }
                                        firstOfComment=false;
                                        lineComment=false;
                                        backslash=false;
                                        break;
                                    } else
                                    {
                                        firstOfComment=false;
                                        if (!lineComment) prOperator(\"/\");
                                        prOperator(String.valueOf((char)st.ttype));
                                        backslash=false;
                                        break;
                                    }
                                }
                            } else
                            {
                                if (comment)
                                {
                                    //waiting for star
                                    if (String.valueOf((char)st.ttype).equals(\"*\"))
                                    {
                                        firstOfComment=true;
                                        backslash=false;
                                        break;
                                    } else firstOfComment=false;
                                } else
                                {
                                    //waiting for slash
                                    if (String.valueOf((char)st.ttype).equals(\"/\"))
                                    {
                                        firstOfComment=true;
                                        backslash=false;
                                        break;
                                    } else
                                    {
                                        firstOfComment=false;
                                        prOperator(String.valueOf((char)st.ttype));
                                        backslash=false;
                                        break;
                                    }
                                }
                            }
                        }
                        if(String.valueOf((char)st.ttype).equals(\"/\"\"))
                        {
                            if(firstOfComment)
                            {
                                if (!(comment || lineComment)) prOperator(\"/\");
                                firstOfComment=false;
                            }
                            if (!backslash) prStringTwo(!stringlit);
                            else prNormal(\"/\"\");
                            backslash=false;
                            break;
                        }
                        if(String.valueOf((char)st.ttype).equals(\"//\"))
                        {
                            if(firstOfComment)
                            {
                                prOperator(\"/\");
                                firstOfComment=false;
                            }
                            prNormal(\"//\");
                            backslash=!backslash;
                            break;
                        }
                        if(String.valueOf((char)st.ttype).equals(\"/\\\'\"))
                        {
                            if(firstOfComment)
                            {
                                prOperator(\"/\");
                                firstOfComment=false;
                            }
                            if (!backslash && !stringlit2) prStringOne(!stringlit);
                            else prNormal(\"/\\\'\");
                            backslash=false;
                            break;
                        }
                        if(String.valueOf((char)st.ttype).equals(\";\"))
                        {
                            if(firstOfComment)
                            {
                                prOperator(\"/\");
                    &


返回类别: 教程
上一教程: java函数传值的一点心得
下一教程: Java 编程技术中汉字问题的分析及解决(转自IBM)

您可以阅读与"将java代码生成html并且高亮显示"相关的教程:
· 一段简朴的根据SQLServer数据库表结构生成C#实体类的Java代码
· JAVA源代码!可以显示水波效果!
· Java学生成绩治理系统源代码
· 浅淡代码生成
· JAVA:附加码生成器(图片)
    微笑服务 优质保证 索取样品