Skip to content

Commit f7c797d

Browse files
author
jossonsmith
committed
compiler refactor at 12-28
1 parent 2c9a994 commit f7c797d

18 files changed

Lines changed: 451 additions & 1739 deletions

sources/net.sf.j2s.core/src/net/sf/j2s/core/astvisitors/ASTEmptyParser.java

Lines changed: 0 additions & 417 deletions
This file was deleted.

sources/net.sf.j2s.core/src/net/sf/j2s/core/astvisitors/ASTEmptyVisitor.java

Lines changed: 111 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,87 @@
1010
*******************************************************************************/
1111
package net.sf.j2s.core.astvisitors;
1212

13-
import org.eclipse.jdt.core.dom.*;
13+
import java.util.HashMap;
14+
import java.util.Map;
15+
import org.eclipse.jdt.core.dom.ASTNode;
16+
import org.eclipse.jdt.core.dom.ASTVisitor;
17+
import org.eclipse.jdt.core.dom.AnnotationTypeDeclaration;
18+
import org.eclipse.jdt.core.dom.AnnotationTypeMemberDeclaration;
19+
import org.eclipse.jdt.core.dom.AnonymousClassDeclaration;
20+
import org.eclipse.jdt.core.dom.ArrayAccess;
21+
import org.eclipse.jdt.core.dom.ArrayCreation;
22+
import org.eclipse.jdt.core.dom.ArrayInitializer;
23+
import org.eclipse.jdt.core.dom.ArrayType;
24+
import org.eclipse.jdt.core.dom.AssertStatement;
25+
import org.eclipse.jdt.core.dom.Assignment;
26+
import org.eclipse.jdt.core.dom.BlockComment;
27+
import org.eclipse.jdt.core.dom.BooleanLiteral;
28+
import org.eclipse.jdt.core.dom.BreakStatement;
29+
import org.eclipse.jdt.core.dom.CastExpression;
30+
import org.eclipse.jdt.core.dom.CatchClause;
31+
import org.eclipse.jdt.core.dom.CharacterLiteral;
32+
import org.eclipse.jdt.core.dom.ClassInstanceCreation;
33+
import org.eclipse.jdt.core.dom.CompilationUnit;
34+
import org.eclipse.jdt.core.dom.ConditionalExpression;
35+
import org.eclipse.jdt.core.dom.ConstructorInvocation;
36+
import org.eclipse.jdt.core.dom.ContinueStatement;
37+
import org.eclipse.jdt.core.dom.DoStatement;
38+
import org.eclipse.jdt.core.dom.EmptyStatement;
39+
import org.eclipse.jdt.core.dom.EnhancedForStatement;
40+
import org.eclipse.jdt.core.dom.EnumConstantDeclaration;
41+
import org.eclipse.jdt.core.dom.ExpressionStatement;
42+
import org.eclipse.jdt.core.dom.FieldAccess;
43+
import org.eclipse.jdt.core.dom.FieldDeclaration;
44+
import org.eclipse.jdt.core.dom.ForStatement;
45+
import org.eclipse.jdt.core.dom.IfStatement;
46+
import org.eclipse.jdt.core.dom.ImportDeclaration;
47+
import org.eclipse.jdt.core.dom.InfixExpression;
48+
import org.eclipse.jdt.core.dom.Initializer;
49+
import org.eclipse.jdt.core.dom.InstanceofExpression;
50+
import org.eclipse.jdt.core.dom.Javadoc;
51+
import org.eclipse.jdt.core.dom.LabeledStatement;
52+
import org.eclipse.jdt.core.dom.LineComment;
53+
import org.eclipse.jdt.core.dom.MarkerAnnotation;
54+
import org.eclipse.jdt.core.dom.MemberRef;
55+
import org.eclipse.jdt.core.dom.MemberValuePair;
56+
import org.eclipse.jdt.core.dom.MethodInvocation;
57+
import org.eclipse.jdt.core.dom.MethodRef;
58+
import org.eclipse.jdt.core.dom.MethodRefParameter;
59+
import org.eclipse.jdt.core.dom.Modifier;
60+
import org.eclipse.jdt.core.dom.NormalAnnotation;
61+
import org.eclipse.jdt.core.dom.NullLiteral;
62+
import org.eclipse.jdt.core.dom.NumberLiteral;
63+
import org.eclipse.jdt.core.dom.PackageDeclaration;
64+
import org.eclipse.jdt.core.dom.ParameterizedType;
65+
import org.eclipse.jdt.core.dom.ParenthesizedExpression;
66+
import org.eclipse.jdt.core.dom.PrefixExpression;
67+
import org.eclipse.jdt.core.dom.PrimitiveType;
68+
import org.eclipse.jdt.core.dom.QualifiedName;
69+
import org.eclipse.jdt.core.dom.ReturnStatement;
70+
import org.eclipse.jdt.core.dom.SimpleName;
71+
import org.eclipse.jdt.core.dom.SimpleType;
72+
import org.eclipse.jdt.core.dom.SingleMemberAnnotation;
73+
import org.eclipse.jdt.core.dom.SingleVariableDeclaration;
74+
import org.eclipse.jdt.core.dom.StringLiteral;
75+
import org.eclipse.jdt.core.dom.SuperConstructorInvocation;
76+
import org.eclipse.jdt.core.dom.SuperFieldAccess;
77+
import org.eclipse.jdt.core.dom.SuperMethodInvocation;
78+
import org.eclipse.jdt.core.dom.SwitchCase;
79+
import org.eclipse.jdt.core.dom.SwitchStatement;
80+
import org.eclipse.jdt.core.dom.SynchronizedStatement;
81+
import org.eclipse.jdt.core.dom.TagElement;
82+
import org.eclipse.jdt.core.dom.TextElement;
83+
import org.eclipse.jdt.core.dom.ThisExpression;
84+
import org.eclipse.jdt.core.dom.ThrowStatement;
85+
import org.eclipse.jdt.core.dom.TryStatement;
86+
import org.eclipse.jdt.core.dom.TypeDeclaration;
87+
import org.eclipse.jdt.core.dom.TypeLiteral;
88+
import org.eclipse.jdt.core.dom.TypeParameter;
89+
import org.eclipse.jdt.core.dom.VariableDeclarationExpression;
90+
import org.eclipse.jdt.core.dom.VariableDeclarationFragment;
91+
import org.eclipse.jdt.core.dom.VariableDeclarationStatement;
92+
import org.eclipse.jdt.core.dom.WhileStatement;
93+
import org.eclipse.jdt.core.dom.WildcardType;
1494

1595
/**
1696
* This empty visitor just gives a way for debugging. That is to say, in
@@ -44,7 +124,36 @@ public void setBuffer(StringBuffer buffer) {
44124
this.buffer = buffer;
45125
}
46126

47-
127+
protected Map visitorMap = new HashMap();
128+
129+
public Object getAdaptable(Class clazz) {
130+
if (clazz == ASTEmptyVisitor.class) {
131+
return this;
132+
}
133+
Object visitor = visitorMap.get(clazz);
134+
if (visitor != null) {
135+
return visitor;
136+
}
137+
try {
138+
Object newInstance = clazz.newInstance();
139+
if (newInstance instanceof IPluginVisitor) {
140+
registerPluginVisitor((IPluginVisitor) newInstance);
141+
return newInstance;
142+
}
143+
} catch (InstantiationException e) {
144+
e.printStackTrace();
145+
} catch (IllegalAccessException e) {
146+
e.printStackTrace();
147+
}
148+
return null;
149+
}
150+
151+
public void registerPluginVisitor(IPluginVisitor visitor) {
152+
visitor.setBuffer(buffer);
153+
visitor.setVisitor(this);
154+
visitorMap.put(visitor.getClass(), visitor);
155+
}
156+
48157
/*
49158
* The following are empty super.* methods which will be use to help
50159
* developing Java2Script compiler.

sources/net.sf.j2s.core/src/net/sf/j2s/core/astvisitors/ASTFieldVisitor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
*
3030
* 2006-12-3
3131
*/
32-
public class ASTFieldVisitor extends ASTMethodVisitor {
32+
public class ASTFieldVisitor extends AbstractPluginVisitor {
3333

3434
/*
3535
* IE passes the following:
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package net.sf.j2s.core.astvisitors;
2+
3+
/**
4+
* FinalVariable that is used to record variable state, which will provide
5+
* information for compiler to decide the generated name in *.js.
6+
*
7+
* @author zhou renjian
8+
*
9+
* 2006-12-6
10+
*/
11+
public class ASTFinalVariable {
12+
13+
/**
14+
* Level of the block
15+
*/
16+
int blockLevel;
17+
18+
/**
19+
* Final variable may be in a very deep anonymous class
20+
*/
21+
String methodScope;
22+
23+
/**
24+
* Variable name that is defined in Java sources
25+
*/
26+
String variableName;
27+
28+
/**
29+
* Variable name that is to be generated in the compiled *.js
30+
*/
31+
String toVariableName;
32+
33+
public ASTFinalVariable(int blockLevel, String variableName, String methodScope) {
34+
super();
35+
this.blockLevel = blockLevel;
36+
this.variableName = variableName;
37+
this.methodScope = methodScope;
38+
}
39+
40+
public String toString() {
41+
return variableName + ":" + variableName;
42+
}
43+
}

sources/net.sf.j2s.core/src/net/sf/j2s/core/astvisitors/ASTJ2SDocVisitor.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,8 @@ boolean visitNativeJavadoc(Javadoc javadoc, Block node, boolean superVisit) {
161161
}
162162
}
163163
}
164+
boolean toCompileVariableName = ((ASTVariableVisitor) getAdaptable(ASTVariableVisitor.class)).isToCompileVariableName();
165+
164166
if (!toCompileVariableName) {
165167
for (Iterator iter = tags.iterator(); iter.hasNext();) {
166168
TagElement tagEl = (TagElement) iter.next();

sources/net.sf.j2s.core/src/net/sf/j2s/core/astvisitors/ASTJ2SMapVisitor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
*
2626
* 2006-12-3
2727
*/
28-
public class ASTJ2SMapVisitor extends ASTVariableVisitor {
28+
public class ASTJ2SMapVisitor extends AbstractPluginVisitor {
2929

3030
private static Map maps;
3131

0 commit comments

Comments
 (0)