home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 August / PCO0897.ISO / filesbbs / os2 / fp1os2.arj / OS2 / DATA / 49 / C / 0 / F_26836 / JScriptParserSubTerm.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-05-15  |  2.6 KB  |  99 lines

  1. public class JScriptParserSubTerm extends JSbxBase {
  2.    public JScriptParserIdentifier aIdentifier = null;
  3.    public boolean bStartsAsExpression;
  4.    public boolean bThis = false;
  5.    public String aStaticStr = null;
  6.    private JSbxVector aCallAndIndexVector = new JSbxVector(5);
  7.  
  8.    public void AddCall(JScriptParserParamList var1) throws JSbxException {
  9.       this.aCallAndIndexVector.Add(var1);
  10.    }
  11.  
  12.    public void AddIndex(JScriptParserExpression var1) throws JSbxException {
  13.       this.aCallAndIndexVector.Add(var1);
  14.    }
  15.  
  16.    public JSbxBase GetCallOrIndex(int var1) {
  17.       return var1 >= this.aCallAndIndexVector.GetSize() ? null : (JSbxBase)this.aCallAndIndexVector.Get(var1);
  18.    }
  19.  
  20.    public int GetNumberOfCallOrIndex() {
  21.       return this.aCallAndIndexVector.GetSize();
  22.    }
  23.  
  24.    public void GeneratePreCode(JScriptCodeGenParam var1) throws JScriptParserException, JSbxException {
  25.       int var2 = this.GetNumberOfCallOrIndex() - 1;
  26.  
  27.       for(int var3 = 0; var3 <= var2; ++var3) {
  28.          JSbxBase var4 = this.GetCallOrIndex(var3);
  29.          if (var4 instanceof JScriptParserExpression) {
  30.             ((JScriptParserExpression)var4).GeneratePreCode(var1);
  31.          } else if (var4 instanceof JScriptParserParamList) {
  32.             JScriptParserParamList var5 = (JScriptParserParamList)var4;
  33.  
  34.             for(int var6 = var5.GetNumberOfParams() - 1; var6 >= 0; --var6) {
  35.                var5.GetExpression(var6).GeneratePreCode(var1);
  36.             }
  37.          }
  38.       }
  39.  
  40.    }
  41.  
  42.    public void GeneratePostCode(JScriptCodeGenParam var1) throws JScriptParserException, JSbxException {
  43.       int var2 = this.GetNumberOfCallOrIndex() - 1;
  44.  
  45.       for(int var3 = 0; var3 <= var2; ++var3) {
  46.          JSbxBase var4 = this.GetCallOrIndex(var3);
  47.          if (var4 instanceof JScriptParserExpression) {
  48.             ((JScriptParserExpression)var4).GeneratePostCode(var1);
  49.          } else if (var4 instanceof JScriptParserParamList) {
  50.             JScriptParserParamList var5 = (JScriptParserParamList)var4;
  51.  
  52.             for(int var6 = var5.GetNumberOfParams() - 1; var6 >= 0; --var6) {
  53.                var5.GetExpression(var6).GeneratePostCode(var1);
  54.             }
  55.          }
  56.       }
  57.  
  58.    }
  59.  
  60.    public void GenerateCode(JScriptCodeGenParam var1, boolean var2, boolean var3, boolean var4) throws JScriptParserException, JSbxException {
  61.       if (this.aIdentifier != null) {
  62.          if (this.GetNumberOfCallOrIndex() > 0) {
  63.             this.aIdentifier.GenerateCode(var1, false, var3);
  64.          } else {
  65.             this.aIdentifier.GenerateCode(var1, var2, var3);
  66.          }
  67.       } else if (this.bThis) {
  68.          var1.AddCode(new JSP_PushThis());
  69.       } else if (this.aStaticStr != null) {
  70.          var1.AddCode(new JSP_StringConst(this.aStaticStr));
  71.       } else if (!this.bStartsAsExpression) {
  72.          throw new JScriptParserException(999, "FATAL SubTerm.GenerateCode: Kein Identifier");
  73.       }
  74.  
  75.       int var5 = this.GetNumberOfCallOrIndex() - 1;
  76.  
  77.       for(int var6 = 0; var6 <= var5; ++var6) {
  78.          JSbxBase var7 = this.GetCallOrIndex(var6);
  79.          if (var7 instanceof JScriptParserExpression) {
  80.             ((JScriptParserExpression)var7).GenerateMainCode(var1);
  81.             if (var2 && var6 == var5) {
  82.                var1.AddCode(new JSP_StoreInIndex());
  83.             } else {
  84.                var1.AddCode(new JSP_Index());
  85.             }
  86.          } else if (var7 instanceof JScriptParserParamList) {
  87.             JScriptParserParamList var8 = (JScriptParserParamList)var7;
  88.  
  89.             for(int var9 = var8.GetNumberOfParams() - 1; var9 >= 0; --var9) {
  90.                var8.GetExpression(var9).GenerateMainCode(var1);
  91.             }
  92.  
  93.             var1.AddCode(new JSP_Call(((JScriptParserParamList)var7).GetNumberOfParams(), var4));
  94.          }
  95.       }
  96.  
  97.    }
  98. }
  99.