Revision: 14815
          http://gate.svn.sourceforge.net/gate/?rev=14815&view=rev
Author:   markagreenwood
Date:     2011-12-20 17:01:37 +0000 (Tue, 20 Dec 2011)
Log Message:
-----------
fixed the '6 feet 6 inches' problem

Modified Paths:
--------------
    
gate/trunk/plugins/Tagger_Measurements/src/gate/creole/measurements/Lexer.java
    
gate/trunk/plugins/Tagger_Measurements/src/gate/creole/measurements/MeasurementsParser.java
    
gate/trunk/plugins/Tagger_Measurements/src/gate/creole/measurements/Parser.java
    
gate/trunk/plugins/Tagger_Measurements/test/src/gate/creole/measurements/MeasurementsTest.java

Modified: 
gate/trunk/plugins/Tagger_Measurements/src/gate/creole/measurements/Lexer.java
===================================================================
--- 
gate/trunk/plugins/Tagger_Measurements/src/gate/creole/measurements/Lexer.java  
    2011-12-20 11:52:04 UTC (rev 14814)
+++ 
gate/trunk/plugins/Tagger_Measurements/src/gate/creole/measurements/Lexer.java  
    2011-12-20 17:01:37 UTC (rev 14815)
@@ -28,6 +28,8 @@
   private int stopped = -1;
 
   private int start;
+  
+  private int previous = -1;
 
   protected Parser.Symbol token; // Next token.
 
@@ -44,6 +46,12 @@
     this.gnuUnits = gnuUnits;
     read();
   }
+  
+  void rollback() {
+    nxt = previous;
+    pos = previous;
+    stopped = previous;
+  }
 
   String getParsedText() throws Parser.Exception {
     if(stopped == 0)
@@ -72,6 +80,7 @@
     while(whitespace()) {
       // skip over the whitespace
     }
+    previous = pos;
     pos = nxt;
     if(number()) return;
     if(delimiter()) return;

Modified: 
gate/trunk/plugins/Tagger_Measurements/src/gate/creole/measurements/MeasurementsParser.java
===================================================================
--- 
gate/trunk/plugins/Tagger_Measurements/src/gate/creole/measurements/MeasurementsParser.java
 2011-12-20 11:52:04 UTC (rev 14814)
+++ 
gate/trunk/plugins/Tagger_Measurements/src/gate/creole/measurements/MeasurementsParser.java
 2011-12-20 17:01:37 UTC (rev 14815)
@@ -16,6 +16,7 @@
 package gate.creole.measurements;
 
 import java.io.BufferedReader;
+import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
@@ -229,27 +230,6 @@
     return v;
   }
 
-  /**
-   * Attempt to parse the string as a measurement. Parsing does not have to
-   * consume the entire string in order for a measurement to be found and
-   * returned.
-   * 
-   * @param text
-   *          the text to parse
-   * @param index
-   *          the index within the text to start parsing from
-   * @return a measurement if one is found, null otherwise
-   */
-  @Deprecated
-  private Measurement parse(String text, int index) {
-    Measurement v = Measurement.fromString(text, index, this);
-    if(v == null) return null;
-    if(v.getNormalizedUnit().trim().equals("")) return null;
-    // v.origText = v.origText.substring(v.origText.indexOf(" ") + 1).trim();
-    if(commonWords.contains(v.origText)) return null;
-    return v;
-  }
-
   protected Map<String, Unit> units = null;
 
   protected Map<String, Prefix> prefixes = null;

Modified: 
gate/trunk/plugins/Tagger_Measurements/src/gate/creole/measurements/Parser.java
===================================================================
--- 
gate/trunk/plugins/Tagger_Measurements/src/gate/creole/measurements/Parser.java 
    2011-12-20 11:52:04 UTC (rev 14814)
+++ 
gate/trunk/plugins/Tagger_Measurements/src/gate/creole/measurements/Parser.java 
    2011-12-20 17:01:37 UTC (rev 14815)
@@ -37,7 +37,14 @@
         // construct something like "he ran 100m in 10.5 seconds" where the in
         // is not a valid unit name in this context, so return the result 
before
         // this expression
-        if(!token(END)) return stack.elementAt(1);// Error(msg_END);
+                
+        if(!token(END)) {
+          
+          // go back to the end of the previous token in the lexer so we
+          // annotate the right bit of document
+          lex.rollback();    
+          return stack.elementAt(1);
+        }
         Semantics.evalUnitExpr(currentProd, gnuUnits);
       } else {
         if(!token(END)) return Error(msg_unitexpr);

Modified: 
gate/trunk/plugins/Tagger_Measurements/test/src/gate/creole/measurements/MeasurementsTest.java
===================================================================
--- 
gate/trunk/plugins/Tagger_Measurements/test/src/gate/creole/measurements/MeasurementsTest.java
      2011-12-20 11:52:04 UTC (rev 14814)
+++ 
gate/trunk/plugins/Tagger_Measurements/test/src/gate/creole/measurements/MeasurementsTest.java
      2011-12-20 17:01:37 UTC (rev 14815)
@@ -42,7 +42,7 @@
   }
 
   public void test6Feet() {
-    Measurement m = parser.parse(6d, "feet");
+    Measurement m = parser.parse(6d, "Mark was 6 feet 6 inches tall.", 11);
     assertNotNull(m);
         
     assertEquals("length", m.getDimension());
@@ -56,7 +56,7 @@
   }
   
   public void test6Inches() {
-    Measurement m = parser.parse(6d, "inches");
+    Measurement m = parser.parse(6d, "Mark was 6 feet 6 inches tall.", 18);
     assertNotNull(m);
     
     assertEquals("length", m.getDimension());

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Write once. Port to many.
Get the SDK and tools to simplify cross-platform app development. Create 
new or port existing apps to sell to consumers worldwide. Explore the 
Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join
http://p.sf.net/sfu/intel-appdev
_______________________________________________
GATE-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gate-cvs

Reply via email to