[Schmitzm-commits] r999 - branches/2.2.x/src/schmitzm/lang/tree

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Sun Sep 12 16:10:32 CEST 2010


Author: mojays
Date: 2010-09-12 16:10:32 +0200 (Sun, 12 Sep 2010)
New Revision: 999

Modified:
   branches/2.2.x/src/schmitzm/lang/tree/OperationTreeParser.java
Log:
OperationTreeParser: parse exponential format (1.2345E-1) of double values

Modified: branches/2.2.x/src/schmitzm/lang/tree/OperationTreeParser.java
===================================================================
--- branches/2.2.x/src/schmitzm/lang/tree/OperationTreeParser.java	2010-09-12 14:10:11 UTC (rev 998)
+++ branches/2.2.x/src/schmitzm/lang/tree/OperationTreeParser.java	2010-09-12 14:10:32 UTC (rev 999)
@@ -557,7 +557,7 @@
 //      operand = parseRulePart();
 //    } else {
 //      // Sonderfall: Operand startet mit Minus-Zeichen (z.B. '-(1+2)' oder '-abs(-4)')
-//      //             -> folgende
+//      //             -> folgenden Operand mit -1 multiplizieren
 //      if ( token.equals("-") )
 //        operand = new OperationTree.OperatorNode("*", new OperationTree.ConstantNode(-1.0),  parseOperand());
 //      else {
@@ -798,7 +798,7 @@
       operand = parseRulePart();
     } else {
       // Sonderfall: Operand startet mit Minus-Zeichen (z.B. '-(1+2)' oder '-abs(-4)')
-      //             -> folgende
+      //             -> folgenden Operand mit -1 multiplizieren
       if ( token.equals("-") )
         operand = new OperationTree.OperatorNode("*", new OperationTree.ConstantNode(-1.0),  parseOperand(getOperatorConnectivity("*")));
       else {
@@ -1120,6 +1120,17 @@
     //             das Minus-Zeichen enthalten! Zahl-Token muss angehaengt werden.
     if ( token.equals("-") )
       token += nextNonWSToken();
+    // Sonderfall: Operand endet mit "E", dann handelt es sich um
+    //             die Exponential-Darstellung einer Konstanten, deren
+    //             Exponent mit einem Plus- oder Minus-Zeilen versehen ist
+    //             z.B. 1.234567E-1
+    //             -> folgendes Token anhaengen
+    if ( token.toUpperCase().endsWith("E") ) {
+      // + oder - anhaengen
+      token += nextNonWSToken();
+      // Exponenten anhaengen
+      token += nextNonWSToken();
+    }
 
     try {
       return Double.parseDouble(token);



More information about the Schmitzm-commits mailing list