📄 nodeashtmlprinter.java
字号:
/** * * Copyright 2005 Jeremy Rayner * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * **/package org.codehaus.groovy.antlr.treewalker;import java.io.PrintStream;import java.util.Stack;import org.codehaus.groovy.antlr.GroovySourceAST;import org.codehaus.groovy.antlr.parser.GroovyTokenTypes;/** * A visitor that prints a html tags of each node to the supplied PrintStream * * @author <a href="mailto:groovy@ross-rayner.com">Jeremy Rayner</a> * @version $Revision: 1.2 $ */public class NodeAsHTMLPrinter extends VisitorAdapter { private String[] tokenNames; private PrintStream out; private Stack stack; /** * A visitor that prints a html tags, for each node, to the supplied PrintStream. * @param out supplied PrintStream to output nodes to * @param tokenNames an array of token names to use */ public NodeAsHTMLPrinter(PrintStream out,String[] tokenNames) { this.tokenNames = tokenNames; this.out = out; this.stack = new Stack(); } public void setUp() { out.println("<html><head></head><body><pre>"); } public void visitDefault(GroovySourceAST t,int visit) { if (visit == OPENING_VISIT) { out.print("<code title='" + tokenNames[t.getType()] + "'><font color='#" + colour(t) + "'>"); } else { out.print("</font></code>"); } } public void tearDown() { out.println("</pre></body></html>"); } private String colour(GroovySourceAST t) { String black = "000000"; String blue = "17178B"; String green = "008000"; //String purple = "7C308D"; String colour = black; switch (t.getType()) { case GroovyTokenTypes.ABSTRACT : case GroovyTokenTypes.ANNOTATION : case GroovyTokenTypes.ANNOTATIONS : case GroovyTokenTypes.ANNOTATION_ARRAY_INIT : case GroovyTokenTypes.ANNOTATION_DEF : case GroovyTokenTypes.ANNOTATION_FIELD_DEF : case GroovyTokenTypes.ANNOTATION_MEMBER_VALUE_PAIR : case GroovyTokenTypes.ARRAY_DECLARATOR : case GroovyTokenTypes.ASSIGN : case GroovyTokenTypes.AT : case GroovyTokenTypes.BAND : case GroovyTokenTypes.BAND_ASSIGN : case GroovyTokenTypes.BIG_SUFFIX : case GroovyTokenTypes.BLOCK : case GroovyTokenTypes.BNOT : case GroovyTokenTypes.BOR : case GroovyTokenTypes.BOR_ASSIGN : case GroovyTokenTypes.BSR : case GroovyTokenTypes.BSR_ASSIGN : case GroovyTokenTypes.BXOR : case GroovyTokenTypes.BXOR_ASSIGN : case GroovyTokenTypes.CASE_GROUP : case GroovyTokenTypes.CLOSED_BLOCK : case GroovyTokenTypes.CLOSURE_OP : case GroovyTokenTypes.COLON : case GroovyTokenTypes.COMMA : case GroovyTokenTypes.COMPARE_TO : case GroovyTokenTypes.CTOR_CALL : case GroovyTokenTypes.CTOR_IDENT : case GroovyTokenTypes.DEC : case GroovyTokenTypes.DIGIT : case GroovyTokenTypes.DIV : case GroovyTokenTypes.DIV_ASSIGN : case GroovyTokenTypes.DOLLAR : case GroovyTokenTypes.DOT : case GroovyTokenTypes.DYNAMIC_MEMBER : case GroovyTokenTypes.ELIST : case GroovyTokenTypes.EMPTY_STAT : case GroovyTokenTypes.ENUM_CONSTANT_DEF : case GroovyTokenTypes.ENUM_DEF : case GroovyTokenTypes.EOF : case GroovyTokenTypes.EQUAL : case GroovyTokenTypes.ESC : case GroovyTokenTypes.EXPONENT : case GroovyTokenTypes.EXPR : case GroovyTokenTypes.FINAL : case GroovyTokenTypes.FLOAT_SUFFIX : case GroovyTokenTypes.FOR_CONDITION : case GroovyTokenTypes.FOR_EACH_CLAUSE : case GroovyTokenTypes.FOR_INIT : case GroovyTokenTypes.FOR_IN_ITERABLE : case GroovyTokenTypes.FOR_ITERATOR : case GroovyTokenTypes.GE : case GroovyTokenTypes.GT : case GroovyTokenTypes.HEX_DIGIT : case GroovyTokenTypes.IDENT : case GroovyTokenTypes.IMPLICIT_PARAMETERS : case GroovyTokenTypes.INC : case GroovyTokenTypes.INDEX_OP : case GroovyTokenTypes.INSTANCE_INIT : case GroovyTokenTypes.INTERFACE_DEF : case GroovyTokenTypes.LABELED_ARG : case GroovyTokenTypes.LABELED_STAT : case GroovyTokenTypes.LAND : case GroovyTokenTypes.LBRACK : case GroovyTokenTypes.LCURLY : case GroovyTokenTypes.LE : case GroovyTokenTypes.LETTER : case GroovyTokenTypes.LIST_CONSTRUCTOR : case GroovyTokenTypes.LNOT : case GroovyTokenTypes.LOR : case GroovyTokenTypes.LPAREN : case GroovyTokenTypes.LT : case GroovyTokenTypes.MAP_CONSTRUCTOR : case GroovyTokenTypes.MEMBER_POINTER : case GroovyTokenTypes.METHOD_CALL : case GroovyTokenTypes.METHOD_DEF : case GroovyTokenTypes.MINUS : case GroovyTokenTypes.MINUS_ASSIGN : case GroovyTokenTypes.ML_COMMENT : case GroovyTokenTypes.MOD : case GroovyTokenTypes.MODIFIERS : case GroovyTokenTypes.MOD_ASSIGN : case GroovyTokenTypes.NLS : case GroovyTokenTypes.NOT_EQUAL : case GroovyTokenTypes.NULL_TREE_LOOKAHEAD : case GroovyTokenTypes.NUM_BIG_DECIMAL :
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -