Java中的语法树结构

Java中的语法树结构

1、JCTypeParameter

class B<T extends CA&IA&IB> { ...}

截图如下:  

Java中的语法树结构

接口继承了StatementTree接口,而实现类实现了JCStatement类,不过有一个例外,如:

CaseTree 实现了JCStatement,但接口JCCase是继承了Tree。

Java中的语法树结构

Java中的语法树结构

1、JCContinue

语法树结构举例如下:

stop: while (get()) {
			a = 3;
			continue stop;
}

截图如下:

Java中的语法树结构

2、JCEnhancedForLoop

语法树结构举例如下:

String[] strArray = null;
for(String a:strArray){
           System.out.println(a);
}

截图如下:  

Java中的语法树结构

3、JCSwitch

语法树结构如下:

static enum E {
        A, B
    }

public static void main(String args[]) {
        E e = E.B;
        switch (e) {
            case A:
                System.out.println("A");
                break;
            case B:
                System.out.println("B");
            default:
                System.out.println(0);
        }
}

如下截图:

Java中的语法树结构

关于JCSwitch再举一个例子,如下:

switch (c) {
case 1:
	int aaa = 1;
	int bbb = 2;
case 2:
	aaa = 2;
default: {

}
	bbb = 4;
}  

语法树截取后图如下所示.

Java中的语法树结构

接口实现了ExpressionTree,而实现类实现了JCExpression,如下:

Java中的语法树结构

Java中的语法树结构

1、LetExpression

语法树结构如下:

Integer foo = 0;
foo++;

截图如下:

Java中的语法树结构

2、JCAnnotation

语法树结构如下:

package com.test11;

public class Test1 {

    @MzTargetPackage(isCanNull =true,
            num=100,
            version = "1.1.0",
            fruitColor=MzTargetPackage.Color.BULE,
            value={"a,","b","c"},
            compoundTest=@Code(author = "closedevice",date="20161225")
    )
    private void process() {

    }
}

如下截图:

Java中的语法树结构

3、JCNewArray

语法树结构如下:

 private void process() {
        int[] a = new int[2];
        int[] b = new int[]{};
        int[] c = {1,2,3};
    }

如下截图:

Java中的语法树结构

Java中的语法树结构

Java中的语法树结构

JCNewClass的语法树结构如下:

class Outer<T>{
	class Inner<D>{
		public <X> Inner(String a,Integer ...ems){

		}
	}
}
new Outer<String>().new <Number>Inner<Integer>("arg",1,2,3){
			public void m1(){

			}
};

实例类与类声明时的两个值不太一样。

下面来看JCNewClass的语法结构,如下截图。

Java中的语法树结构  

  

Java中的语法树结构

Java中的语法树结构

4、JCMethodInvocation

语法结构举个例子,如下:

class Father {
	public <T> void m1(int a) {
	}
}

public class Test3 extends Father {

	class C {
		public void m() {
			Test3.super.<String>m1(1);
		}
	}
}

查看调用方法m1()的语法结构如下:

Java中的语法树结构

接口实现了ParameterizedTypeTree,而实现类实现了JCExpression,如下:

 /**
     * A parameterized type, T<...>
     */
    public static class JCTypeApply extends JCExpression implements ParameterizedTypeTree {
        public JCExpression clazz;
        public List<JCExpression> arguments;
        // ...
} 

5、JCTypeApply

语法结构举个例子,如下: 

class X<T1 extends InputStream,T2>{
    public void test(){
        X<FileInputStream,?> x = null;
    }
}  

如果截图展示了语法树结构:

Java中的语法树结构

6、JCWildcard

Java中的语法树结构

7、JCInstanceOf

举个例子,如下:

Object o = null;
if (o instanceof A){}  
截图如下:

Java中的语法树结构

8、JCPrimitiveTypeTree

当为 Object  o = int.class.toString();

Java中的语法树结构

9、JCUnary

如++a的树节点如下:

Java中的语法树结构

上一篇:MySQL 一些内部原理


下一篇:Delphi7使用一段时间后抽风提示注册