home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VPage / Java.bin / CLASSES.ZIP / sun / tools / javac / BatchParser.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-07-08  |  5.1 KB  |  152 lines

  1. package sun.tools.javac;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.util.Enumeration;
  6. import java.util.Vector;
  7. import sun.tools.java.ClassDefinition;
  8. import sun.tools.java.Constants;
  9. import sun.tools.java.Environment;
  10. import sun.tools.java.FieldDefinition;
  11. import sun.tools.java.Identifier;
  12. import sun.tools.java.IdentifierToken;
  13. import sun.tools.java.Imports;
  14. import sun.tools.java.Parser;
  15. import sun.tools.java.Type;
  16. import sun.tools.tree.Node;
  17.  
  18. public class BatchParser extends Parser {
  19.    protected Identifier pkg;
  20.    protected Imports imports;
  21.    protected Vector classes;
  22.    protected SourceClass sourceClass;
  23.    protected Environment toplevelEnv;
  24.  
  25.    public BatchParser(Environment var1, InputStream var2) throws IOException {
  26.       super(var1, var2);
  27.       this.imports = new Imports(var1);
  28.       this.classes = new Vector();
  29.       this.toplevelEnv = this.imports.newEnvironment(var1);
  30.    }
  31.  
  32.    public void packageDeclaration(int var1, IdentifierToken var2) {
  33.       Identifier var3 = var2.getName();
  34.       if (this.pkg == null) {
  35.          this.imports.setCurrentPackage(this.pkg = var3);
  36.       } else {
  37.          super.env.error(var1, "package.repeated");
  38.       }
  39.    }
  40.  
  41.    public void importClass(int var1, IdentifierToken var2) {
  42.       this.imports.addClass(var2);
  43.    }
  44.  
  45.    public void importPackage(int var1, IdentifierToken var2) {
  46.       this.imports.addPackage(var2);
  47.    }
  48.  
  49.    public ClassDefinition beginClass(int var1, String var2, int var3, IdentifierToken var4, IdentifierToken var5, IdentifierToken[] var6) {
  50.       SourceClass var7 = this.sourceClass;
  51.       if (var7 == null && this.pkg != null) {
  52.          var4 = new IdentifierToken(var4.getWhere(), Identifier.lookup(this.pkg, var4.getName()));
  53.       }
  54.  
  55.       if ((var3 & 65536) != 0) {
  56.          var3 |= 18;
  57.       }
  58.  
  59.       if ((var3 & 131072) != 0) {
  60.          var3 |= 2;
  61.       }
  62.  
  63.       if (var7 != null && ((ClassDefinition)var7).isInterface()) {
  64.          if ((var3 & 6) == 0) {
  65.             var3 |= 1;
  66.          }
  67.  
  68.          var3 |= 8;
  69.       }
  70.  
  71.       this.sourceClass = (SourceClass)this.toplevelEnv.makeClassDefinition(this.toplevelEnv, var1, var4, var2, var3, var5, var6, var7);
  72.       this.sourceClass.getClassDeclaration().setDefinition(this.sourceClass, 4);
  73.       super.env = new Environment(this.toplevelEnv, this.sourceClass);
  74.       Enumeration var8 = this.classes.elements();
  75.  
  76.       while(var8.hasMoreElements()) {
  77.          ClassDefinition var9 = (ClassDefinition)var8.nextElement();
  78.          var9.addDependency(this.sourceClass.getClassDeclaration());
  79.          this.sourceClass.addDependency(var9.getClassDeclaration());
  80.       }
  81.  
  82.       this.classes.addElement(this.sourceClass);
  83.       return this.sourceClass;
  84.    }
  85.  
  86.    public ClassDefinition getCurrentClass() {
  87.       return this.sourceClass;
  88.    }
  89.  
  90.    public void endClass(int var1, ClassDefinition var2) {
  91.       this.sourceClass.setEndPosition(var1);
  92.       SourceClass var3 = (SourceClass)this.sourceClass.getOuterClass();
  93.       this.sourceClass = var3;
  94.       super.env = this.toplevelEnv;
  95.       if (this.sourceClass != null) {
  96.          super.env = new Environment(super.env, this.sourceClass);
  97.       }
  98.  
  99.    }
  100.  
  101.    public void defineField(int var1, ClassDefinition var2, String var3, int var4, Type var5, IdentifierToken var6, IdentifierToken[] var7, IdentifierToken[] var8, Node var9) {
  102.       Identifier var10 = var6.getName();
  103.       if (this.sourceClass.isInterface()) {
  104.          if ((var4 & 6) == 0) {
  105.             var4 |= 1;
  106.          }
  107.  
  108.          if (var5.isType(12)) {
  109.             var4 |= 1024;
  110.          } else {
  111.             var4 |= 24;
  112.          }
  113.       }
  114.  
  115.       if (var10.equals(Constants.idInit)) {
  116.          Type var11 = var5.getReturnType();
  117.          Identifier var12 = !var11.isType(10) ? Constants.idStar : var11.getClassName();
  118.          Identifier var13 = this.sourceClass.getLocalName();
  119.          if (var13.equals(var12)) {
  120.             var5 = Type.tMethod(Type.tVoid, var5.getArgumentTypes());
  121.          } else {
  122.             if (!var13.equals(var12.getFlatName().getName())) {
  123.                if (!var12.isQualified() && !var12.equals(Constants.idStar)) {
  124.                   super.env.error(var1, "invalid.method.decl");
  125.                   return;
  126.                }
  127.  
  128.                super.env.error(var1, "invalid.method.decl.name");
  129.                return;
  130.             }
  131.  
  132.             var5 = Type.tMethod(Type.tVoid, var5.getArgumentTypes());
  133.             super.env.error(var1, "invalid.method.decl.qual");
  134.          }
  135.       }
  136.  
  137.       if (var7 == null && var5.isType(12)) {
  138.          var7 = new IdentifierToken[0];
  139.       }
  140.  
  141.       if (var8 == null && var5.isType(12)) {
  142.          var8 = new IdentifierToken[0];
  143.       }
  144.  
  145.       FieldDefinition var14 = super.env.makeFieldDefinition(super.env, var1, this.sourceClass, var3, var4, var5, var10, var7, var8, var9);
  146.       if (super.env.dump()) {
  147.          var14.print(System.out);
  148.       }
  149.  
  150.    }
  151. }
  152.