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