From: <chr...@us...> - 2012-07-04 15:43:01
|
Revision: 3771 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3771&view=rev Author: christinaunger Date: 2012-07-04 15:42:53 +0000 (Wed, 04 Jul 2012) Log Message: ----------- [tbsl] Added support for "or" (translated as UNION). This still needs to be tested for complex questions. Modified Paths: -------------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2SPARQL_Converter.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/Complex_DRS_Condition.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/DRS.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/DRS_Condition.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/Negated_DRS.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/Simple_DRS_Condition.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParser.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParser.jj trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParserConstants.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParserTokenManager.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/data/Argument.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/data/Dude.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/reader/DUDE_Parser.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/reader/DUDE_Parser.jj trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/reader/DUDE_ParserConstants.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/reader/DUDE_ParserTokenManager.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/util/CompositeType.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/util/DominanceConstraint.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/util/ElementaryType.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/util/Label.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/util/Type.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/Query.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Triple.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/Slot.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java trunk/components-ext/src/main/resources/tbsl/lexicon/english.lex Added Paths: ----------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Union.java Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2SPARQL_Converter.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2SPARQL_Converter.java 2012-07-03 14:16:28 UTC (rev 3770) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2SPARQL_Converter.java 2012-07-04 15:42:53 UTC (rev 3771) @@ -9,20 +9,7 @@ import org.dllearner.algorithm.tbsl.sem.drs.DiscourseReferent; import org.dllearner.algorithm.tbsl.sem.drs.Negated_DRS; import org.dllearner.algorithm.tbsl.sem.drs.Simple_DRS_Condition; -import org.dllearner.algorithm.tbsl.sparql.Query; -import org.dllearner.algorithm.tbsl.sparql.SPARQL_Aggregate; -import org.dllearner.algorithm.tbsl.sparql.SPARQL_Filter; -import org.dllearner.algorithm.tbsl.sparql.SPARQL_OrderBy; -import org.dllearner.algorithm.tbsl.sparql.SPARQL_Pair; -import org.dllearner.algorithm.tbsl.sparql.SPARQL_PairType; -import org.dllearner.algorithm.tbsl.sparql.SPARQL_Prefix; -import org.dllearner.algorithm.tbsl.sparql.SPARQL_Property; -import org.dllearner.algorithm.tbsl.sparql.SPARQL_QueryType; -import org.dllearner.algorithm.tbsl.sparql.SPARQL_Term; -import org.dllearner.algorithm.tbsl.sparql.SPARQL_Triple; -import org.dllearner.algorithm.tbsl.sparql.Slot; -import org.dllearner.algorithm.tbsl.sparql.SlotType; -import org.dllearner.algorithm.tbsl.sparql.Template; +import org.dllearner.algorithm.tbsl.sparql.*; public class DRS2SPARQL_Converter { @@ -133,7 +120,7 @@ Set<SPARQL_Triple> statements = new HashSet<SPARQL_Triple>(); for (DRS_Condition condition : drs.getConditions()) { - Set<SPARQL_Triple> scondition = convertCondition(condition, query).getConditions(); + Set<SPARQL_Triple> scondition = convertCondition(condition,query,false).getConditions(); statements.addAll(scondition); if (negate) { for (int i = 0; i < scondition.size(); ++i) { @@ -155,71 +142,100 @@ return query; } - private Query convertCondition(DRS_Condition condition, Query query) { + private Query convertCondition(DRS_Condition condition, Query query, boolean unionMode) { + + Query out; + if (unionMode) out = new Query(); + else out = query; + if (condition.isComplexCondition()) { - if (!isSilent()) { - System.out.print("|complex:" + condition.toString()); - } + if (!isSilent()) System.out.print("|complex:" + condition.toString()); + Complex_DRS_Condition complex = (Complex_DRS_Condition) condition; DRS restrictor = complex.getRestrictor(); DRS_Quantifier quant = complex.getQuantifier(); DRS scope = complex.getScope(); - // call recursively - for (DRS_Condition cond : restrictor.getConditions()) { - query = convertCondition(cond, query); + if (quant.equals(DRS_Quantifier.OR)) { + Set<SPARQL_Triple> conds_res = new HashSet<SPARQL_Triple>(); + Set<SPARQL_Triple> conds_scope = new HashSet<SPARQL_Triple>(); + Set<SPARQL_Filter> filter_res = new HashSet<SPARQL_Filter>(); + Set<SPARQL_Filter> filter_scope = new HashSet<SPARQL_Filter>(); + // call recursively + Query dummy; + for (DRS_Condition cond : restrictor.getConditions()) { + dummy = convertCondition(cond,out,true); + conds_res.addAll(dummy.getConditions()); + filter_res.addAll(dummy.getFilters()); + query.getPrefixes().addAll(dummy.getPrefixes()); + } + for (DRS_Condition cond : scope.getConditions()) { + dummy = convertCondition(cond,out,true); + conds_scope.addAll(dummy.getConditions()); + filter_scope.addAll(dummy.getFilters()); + query.getPrefixes().addAll(dummy.getPrefixes()); + } + query.addUnion(new SPARQL_Union(conds_res,filter_res,conds_scope,filter_scope)); + // TODO also inherit order by, limit, offset, and so on? + return query; + } + else { + // call recursively + for (DRS_Condition cond : restrictor.getConditions()) { + out = convertCondition(cond,out,false); + } + for (DRS_Condition cond : scope.getConditions()) { + out = convertCondition(cond,out,false); + } + + // add the quantifier at last + DiscourseReferent ref = complex.getReferent(); + String sref = ref.getValue(); + String fresh; + if (!isSilent()) System.out.print("|quantor:" + quant); + + switch (quant) { + case HOWMANY: + out.addSelTerm(new SPARQL_Term(sref, SPARQL_Aggregate.COUNT)); + break; + case EVERY: + // probably save to ignore // TODO unless in cases like "which actor starred in every movie by spielberg?" + // query.addFilter(new SPARQL_Filter(new SPARQL_Term(sref))); + break; + case NO: + SPARQL_Filter f = new SPARQL_Filter(); + f.addNotBound(new SPARQL_Term(sref)); + out.addFilter(f); + break; + case FEW: // + break; + case MANY: // + break; + case MOST: // + break; + case SOME: // + break; + case THELEAST: + fresh = "c"+createFresh(); + out.addSelTerm(new SPARQL_Term(sref, SPARQL_Aggregate.COUNT,fresh)); + out.addOrderBy(new SPARQL_Term(fresh, SPARQL_OrderBy.ASC)); + out.setLimit(1); + break; + case THEMOST: + fresh = "c"+createFresh(); + out.addSelTerm(new SPARQL_Term(sref, SPARQL_Aggregate.COUNT,fresh)); + out.addOrderBy(new SPARQL_Term(fresh, SPARQL_OrderBy.DESC)); + out.setLimit(1); + break; + } } - for (DRS_Condition cond : scope.getConditions()) { - query = convertCondition(cond, query); - } - // add the quantifier at last - DiscourseReferent ref = complex.getReferent(); - String sref = ref.getValue(); - String fresh; - if (!isSilent()) { - System.out.print("|quantor:" + quant); - } - switch (quant) { - case HOWMANY: - query.addSelTerm(new SPARQL_Term(sref, SPARQL_Aggregate.COUNT)); - break; - case EVERY: - // probably save to ignore // TODO unless in cases like "which actor starred in every movie by spielberg?" - // query.addFilter(new SPARQL_Filter(new SPARQL_Term(sref))); - break; - case NO: - SPARQL_Filter f = new SPARQL_Filter(); - f.addNotBound(new SPARQL_Term(sref)); - query.addFilter(f); - break; - case FEW: // - break; - case MANY: // - break; - case MOST: // - break; - case SOME: // - break; - case THELEAST: - fresh = "c"+createFresh(); - query.addSelTerm(new SPARQL_Term(sref, SPARQL_Aggregate.COUNT,fresh)); - query.addOrderBy(new SPARQL_Term(fresh, SPARQL_OrderBy.ASC)); - query.setLimit(1); - break; - case THEMOST: - fresh = "c"+createFresh(); - query.addSelTerm(new SPARQL_Term(sref, SPARQL_Aggregate.COUNT,fresh)); - query.addOrderBy(new SPARQL_Term(fresh, SPARQL_OrderBy.DESC)); - query.setLimit(1); - break; - } } else if (condition.isNegatedCondition()) { if (!isSilent()) { System.out.print("|negation:" + condition.toString()); } Negated_DRS neg = (Negated_DRS) condition; - query = convert(neg.getDRS(), query, true); + out = convert(neg.getDRS(), out, true); } else { Simple_DRS_Condition simple = (Simple_DRS_Condition) condition; @@ -256,74 +272,74 @@ // COUNT(?x) AS ?c if (simple.getArguments().get(1).getValue().matches("[0-9]+")) { String fresh = "v"+createFresh(); - query.addSelTerm(new SPARQL_Term(simple.getArguments().get(0).getValue(), SPARQL_Aggregate.COUNT, fresh)); - query.addFilter(new SPARQL_Filter( + out.addSelTerm(new SPARQL_Term(simple.getArguments().get(0).getValue(), SPARQL_Aggregate.COUNT, fresh)); + out.addFilter(new SPARQL_Filter( new SPARQL_Pair( new SPARQL_Term(fresh,false), new SPARQL_Term(simple.getArguments().get(1).getValue(),literal), SPARQL_PairType.EQ))); } else { - query.addSelTerm(new SPARQL_Term(simple.getArguments().get(0).getValue(), SPARQL_Aggregate.COUNT, simple.getArguments().get(1).getValue())); + out.addSelTerm(new SPARQL_Term(simple.getArguments().get(0).getValue(), SPARQL_Aggregate.COUNT, simple.getArguments().get(1).getValue())); } - return query; + return out; } else if (predicate.equals("sum")) { - query.addSelTerm(new SPARQL_Term(simple.getArguments().get(1).getValue(), SPARQL_Aggregate.SUM)); - return query; + out.addSelTerm(new SPARQL_Term(simple.getArguments().get(1).getValue(), SPARQL_Aggregate.SUM)); + return out; } else if (predicate.equals("greater")) { - query.addFilter(new SPARQL_Filter( + out.addFilter(new SPARQL_Filter( new SPARQL_Pair( new SPARQL_Term(simple.getArguments().get(0).getValue(),false), new SPARQL_Term(simple.getArguments().get(1).getValue(),literal), SPARQL_PairType.GT))); - return query; + return out; } else if (predicate.equals("greaterorequal")) { - query.addFilter(new SPARQL_Filter( + out.addFilter(new SPARQL_Filter( new SPARQL_Pair( new SPARQL_Term(simple.getArguments().get(0).getValue(),false), new SPARQL_Term(simple.getArguments().get(1).getValue(),literal), SPARQL_PairType.GTEQ))); - return query; + return out; } else if (predicate.equals("less")) { - query.addFilter(new SPARQL_Filter( + out.addFilter(new SPARQL_Filter( new SPARQL_Pair( new SPARQL_Term(simple.getArguments().get(0).getValue(),false), new SPARQL_Term(simple.getArguments().get(1).getValue(),literal), SPARQL_PairType.LT))); - return query; + return out; } else if (predicate.equals("lessorequal")) { - query.addFilter(new SPARQL_Filter( + out.addFilter(new SPARQL_Filter( new SPARQL_Pair( new SPARQL_Term(simple.getArguments().get(0).getValue(),false), new SPARQL_Term(simple.getArguments().get(1).getValue(),literal), SPARQL_PairType.LTEQ))); - return query; + return out; } else if (predicate.equals("maximum")) { // query.addSelTerm(new SPARQL_Term(simple.getArguments().get(0).getValue(),false)); - query.addOrderBy(new SPARQL_Term(simple.getArguments().get(0).getValue(), SPARQL_OrderBy.DESC)); - query.setLimit(1); - return query; + out.addOrderBy(new SPARQL_Term(simple.getArguments().get(0).getValue(), SPARQL_OrderBy.DESC)); + out.setLimit(1); + return out; } else if (predicate.equals("minimum")) { - query.addSelTerm(new SPARQL_Term(simple.getArguments().get(0).getValue(),false)); - query.addOrderBy(new SPARQL_Term(simple.getArguments().get(0).getValue(), SPARQL_OrderBy.ASC)); - query.setLimit(1); - return query; + out.addSelTerm(new SPARQL_Term(simple.getArguments().get(0).getValue(),false)); + out.addOrderBy(new SPARQL_Term(simple.getArguments().get(0).getValue(), SPARQL_OrderBy.ASC)); + out.setLimit(1); + return out; } else if (predicate.equals("equal")) { - query.addFilter(new SPARQL_Filter( + out.addFilter(new SPARQL_Filter( new SPARQL_Pair( new SPARQL_Term(simple.getArguments().get(0).getValue(),true), new SPARQL_Term(simple.getArguments().get(1).getValue(),literal), SPARQL_PairType.EQ))); - return query; + return out; } else if (predicate.equals("DATE")) { - query.addFilter(new SPARQL_Filter( + out.addFilter(new SPARQL_Filter( new SPARQL_Pair( new SPARQL_Term(simple.getArguments().get(0).getValue(),false), new SPARQL_Term("'^"+simple.getArguments().get(1).getValue()+"'",true), SPARQL_PairType.REGEX))); } else if (predicate.equals("regex")) { - query.addFilter(new SPARQL_Filter( + out.addFilter(new SPARQL_Filter( new SPARQL_Pair( new SPARQL_Term(simple.getArguments().get(0).getValue(),false), new SPARQL_Term(simple.getArguments().get(1).getValue().replace("_","").trim(),true), @@ -332,12 +348,12 @@ else { if (arity == 1) { SPARQL_Term term = new SPARQL_Term(simple.getArguments().get(0).getValue(),false);term.setIsVariable(true); - query.addCondition(new SPARQL_Triple(term,new SPARQL_Property("type",new SPARQL_Prefix("rdf","")),prop)); + out.addCondition(new SPARQL_Triple(term,new SPARQL_Property("type",new SPARQL_Prefix("rdf","")),prop)); } else if (arity == 2) { String arg1 = simple.getArguments().get(0).getValue();SPARQL_Term term1 = new SPARQL_Term(arg1,false);term1.setIsVariable(true); String arg2 = simple.getArguments().get(1).getValue();SPARQL_Term term2 = new SPARQL_Term(arg2,false);term2.setIsVariable(true); - query.addCondition(new SPARQL_Triple(term1, prop, term2)); + out.addCondition(new SPARQL_Triple(term1, prop, term2)); } else if (arity > 2) { // TODO @@ -349,7 +365,7 @@ if (oxford) { Hashtable<String,Integer> vs = new Hashtable<String,Integer>(); String v1; String v2; - for (SPARQL_Triple c : query.getConditions()) { + for (SPARQL_Triple c : out.getConditions()) { v1 = c.getVariable().toString().replace("?",""); v2 = c.getValue().toString().replace("?",""); // is it a slot variable? @@ -379,11 +395,11 @@ if (maxvar != null) { SPARQL_Term term = new SPARQL_Term(maxvar); term.setIsVariable(true); - query.addSelTerm(term); + out.addSelTerm(term); } } - return query; + return out; } public void redundantEqualRenaming(DRS drs) { Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/Complex_DRS_Condition.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/Complex_DRS_Condition.java 2012-07-03 14:16:28 UTC (rev 3770) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/Complex_DRS_Condition.java 2012-07-04 15:42:53 UTC (rev 3771) @@ -25,8 +25,7 @@ } // full constructors - public Complex_DRS_Condition(DRS_Quantifier quantifier, - DiscourseReferent referent, DRS restrictor, DRS scope) { + public Complex_DRS_Condition(DRS_Quantifier quantifier,DiscourseReferent referent, DRS restrictor, DRS scope) { m_Quantifier = quantifier; m_Referent = referent; m_Restrictor = restrictor; @@ -71,10 +70,20 @@ public String toString() { - return m_Restrictor + " " + m_Quantifier + " " + m_Referent + " " - + m_Scope + "\n"; + String out = m_Restrictor + " " + m_Quantifier + " "; + if (!m_Referent.m_Referent.equals("null")) out += m_Referent + " "; + out += m_Scope + "\n"; + return out; } + public String toTex() { + + String out = m_Restrictor.toTex() + " \\langle " + m_Quantifier + " "; + if (!m_Referent.m_Referent.equals("null")) out += m_Referent; + out += " \\rangle " + m_Scope.toTex(); + + return out; + } public void replaceLabel(Label label1, Label label2) { m_Restrictor.replaceLabel(label1, label2); @@ -100,7 +109,7 @@ Set<String> variables = new HashSet<String>(); - variables.add(m_Referent.m_Referent); + if (!m_Referent.m_Referent.equals("null")) variables.add(m_Referent.m_Referent); variables.addAll(m_Restrictor.collectVariables()); variables.addAll(m_Scope.collectVariables()); @@ -117,8 +126,8 @@ public List<Label> getAllLabels() { List<Label> result = new ArrayList<Label>(); - result.add(m_Restrictor.getLabel()); - result.add(m_Scope.getLabel()); + result.addAll(m_Restrictor.getAllLabels()); + result.addAll(m_Scope.getAllLabels()); return result; } @@ -137,8 +146,7 @@ } public DRS_Condition clone() { - return (new Complex_DRS_Condition(m_Quantifier, m_Referent, - m_Restrictor.clone(), m_Scope.clone())); + return (new Complex_DRS_Condition(m_Quantifier, m_Referent, m_Restrictor.clone(), m_Scope.clone())); } @Override Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/DRS.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/DRS.java 2012-07-03 14:16:28 UTC (rev 3770) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/DRS.java 2012-07-04 15:42:53 UTC (rev 3771) @@ -110,6 +110,25 @@ return string; } + public String toTex() { + + String string =""; + if (m_Label != null) string = string += m_Label.toTex() + ":"; + string += "\\parbox{5cm}{\\Drs{"; + + for (Iterator<DiscourseReferent> i = m_DiscourseReferents.iterator(); i.hasNext();) { + string += i.next().toString(); + if (i.hasNext()) string += ","; + } + string += "}{"; + + for (DRS_Condition cond : m_DRS_Conditions) { + string += cond.toTex() + " \\\\ "; + } + string+= "}}"; + + return string; + } public Label getLabel() { Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/DRS_Condition.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/DRS_Condition.java 2012-07-03 14:16:28 UTC (rev 3770) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/DRS_Condition.java 2012-07-04 15:42:53 UTC (rev 3771) @@ -13,6 +13,7 @@ // iii) a complex condition public String toString(); + public String toTex(); public void replaceReferent(String ref1, String ref2); public void replaceEqualRef(DiscourseReferent dr1, DiscourseReferent dr2, boolean isInUpperUniverse); Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/Negated_DRS.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/Negated_DRS.java 2012-07-03 14:16:28 UTC (rev 3770) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/Negated_DRS.java 2012-07-04 15:42:53 UTC (rev 3771) @@ -36,6 +36,9 @@ { return "NOT "+m_DRS; } + public String toTex() { + return "\\lnot "+m_DRS.toTex(); + } public void replaceLabel(Label label1, Label label2) { m_DRS.replaceLabel(label1, label2); Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/Simple_DRS_Condition.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/Simple_DRS_Condition.java 2012-07-03 14:16:28 UTC (rev 3770) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/Simple_DRS_Condition.java 2012-07-04 15:42:53 UTC (rev 3771) @@ -1,10 +1,6 @@ package org.dllearner.algorithm.tbsl.sem.drs; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; import org.dllearner.algorithm.tbsl.sem.util.Label; @@ -45,6 +41,15 @@ return m_Predicate+string; } + public String toTex() { + String out = "\\text{"+m_Predicate.replaceAll("\\_","\\\\_")+"}("; + for (Iterator<DiscourseReferent> i = m_Arguments.iterator(); i.hasNext();) { + out += i.next().toString(); + if (i.hasNext()) out += ","; + } + out += ")"; + return out; + } // get methods Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParser.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParser.java 2012-07-03 14:16:28 UTC (rev 3770) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParser.java 2012-07-04 15:42:53 UTC (rev 3771) @@ -120,12 +120,12 @@ List<DiscourseReferent> dr_list; Token dr1; Token dr2; - Token dr; + Token dr = null; Token predicate; Token quantifier; DRS drs1; DRS drs2; - if (jj_2_15(2)) { + if (jj_2_17(2)) { predicate = word(); jj_consume_token(6); dr_list = DR_List(); @@ -136,7 +136,7 @@ condition.setPredicate(predicate.toString()); condition.setArguments(dr_list); {if (true) return condition;} - } else if (jj_2_16(2)) { + } else if (jj_2_18(2)) { dr1 = dr(); jj_consume_token(8); dr2 = dr(); @@ -147,13 +147,13 @@ condition.addArgument(new DiscourseReferent(dr1.toString())); condition.addArgument(new DiscourseReferent(dr2.toString())); {if (true) return condition;} - } else if (jj_2_17(2)) { + } else if (jj_2_19(2)) { jj_consume_token(9); drs1 = DRS(); Negated_DRS drs = new Negated_DRS(); drs.setDRS(drs1); {if (true) return drs;} - } else if (jj_2_18(2)) { + } else if (jj_2_20(2)) { drs1 = DRS(); if (jj_2_6(2)) { quantifier = jj_consume_token(EVERY); @@ -173,17 +173,24 @@ quantifier = jj_consume_token(MANY); } else if (jj_2_14(2)) { quantifier = jj_consume_token(NO); + } else if (jj_2_15(2)) { + quantifier = jj_consume_token(OR); } else { jj_consume_token(-1); throw new ParseException(); } - dr = dr(); + if (jj_2_16(2)) { + dr = dr(); + } else { + ; + } drs2 = DRS(); - Complex_DRS_Condition drs; + Complex_DRS_Condition drs; drs = new Complex_DRS_Condition(); - drs.setRestrictor(drs1); + drs.setRestrictor(drs1); drs.setScope(drs2); - drs.setReferent(new DiscourseReferent(dr.toString())); + if (dr != null) drs.setReferent(new DiscourseReferent(dr.toString())); + else drs.setReferent(new DiscourseReferent("null")); if (quantifier.toString().equals("EVERY")) {drs.setQuantifier(DRS_Quantifier.EVERY);} if (quantifier.toString().equals("SOME")) {drs.setQuantifier(DRS_Quantifier.SOME);} @@ -209,7 +216,7 @@ Token dr; List<DiscourseReferent> dr_list=null; dr = dr(); - if (jj_2_19(2)) { + if (jj_2_21(2)) { jj_consume_token(5); dr_list = DR_List(); } else { @@ -236,9 +243,9 @@ final public Token dr() throws ParseException { Token t; - if (jj_2_20(2)) { + if (jj_2_22(2)) { t = jj_consume_token(A); - } else if (jj_2_21(2)) { + } else if (jj_2_23(2)) { t = jj_consume_token(C); } else { jj_consume_token(-1); @@ -250,9 +257,9 @@ final public Token word() throws ParseException { Token t; - if (jj_2_22(2)) { + if (jj_2_24(2)) { t = jj_consume_token(A); - } else if (jj_2_23(2)) { + } else if (jj_2_25(2)) { t = jj_consume_token(B); } else { jj_consume_token(-1); @@ -423,12 +430,26 @@ finally { jj_save(22, xla); } } + private boolean jj_2_24(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_24(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(23, xla); } + } + + private boolean jj_2_25(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_25(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(24, xla); } + } + private boolean jj_3_2() { if (jj_3R_1()) return true; return false; } - private boolean jj_3_18() { + private boolean jj_3_20() { if (jj_3R_5()) return true; return false; } @@ -438,13 +459,18 @@ return false; } - private boolean jj_3_19() { + private boolean jj_3_16() { + if (jj_3R_3()) return true; + return false; + } + + private boolean jj_3_21() { if (jj_scan_token(5)) return true; if (jj_3R_6()) return true; return false; } - private boolean jj_3_17() { + private boolean jj_3_19() { if (jj_scan_token(9)) return true; if (jj_3R_5()) return true; return false; @@ -466,7 +492,7 @@ } private boolean jj_3R_6() { - if (jj_3R_4()) return true; + if (jj_3R_3()) return true; return false; } @@ -475,6 +501,11 @@ return false; } + private boolean jj_3_15() { + if (jj_scan_token(OR)) return true; + return false; + } + private boolean jj_3_1() { if (jj_scan_token(LABEL)) return true; if (jj_scan_token(1)) return true; @@ -497,8 +528,13 @@ return false; } - private boolean jj_3_16() { - if (jj_3R_4()) return true; + private boolean jj_3_25() { + if (jj_scan_token(B)) return true; + return false; + } + + private boolean jj_3_18() { + if (jj_3R_3()) return true; if (jj_scan_token(8)) return true; return false; } @@ -509,11 +545,6 @@ } private boolean jj_3_23() { - if (jj_scan_token(B)) return true; - return false; - } - - private boolean jj_3_21() { if (jj_scan_token(C)) return true; return false; } @@ -524,6 +555,21 @@ return false; } + private boolean jj_3_24() { + if (jj_scan_token(A)) return true; + return false; + } + + private boolean jj_3R_4() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_24()) { + jj_scanpos = xsp; + if (jj_3_25()) return true; + } + return false; + } + private boolean jj_3_22() { if (jj_scan_token(A)) return true; return false; @@ -537,13 +583,13 @@ private boolean jj_3R_7() { Token xsp; xsp = jj_scanpos; - if (jj_3_15()) { + if (jj_3_17()) { jj_scanpos = xsp; - if (jj_3_16()) { + if (jj_3_18()) { jj_scanpos = xsp; - if (jj_3_17()) { + if (jj_3_19()) { jj_scanpos = xsp; - if (jj_3_18()) return true; + if (jj_3_20()) return true; } } } @@ -560,8 +606,8 @@ return false; } - private boolean jj_3_15() { - if (jj_3R_3()) return true; + private boolean jj_3_17() { + if (jj_3R_4()) return true; if (jj_scan_token(6)) return true; return false; } @@ -577,28 +623,13 @@ return false; } - private boolean jj_3_20() { - if (jj_scan_token(A)) return true; - return false; - } - - private boolean jj_3R_4() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_20()) { - jj_scanpos = xsp; - if (jj_3_21()) return true; - } - return false; - } - private boolean jj_3_14() { if (jj_scan_token(NO)) return true; return false; } private boolean jj_3R_1() { - if (jj_3R_4()) return true; + if (jj_3R_3()) return true; Token xsp; xsp = jj_scanpos; if (jj_3_4()) jj_scanpos = xsp; @@ -629,7 +660,7 @@ private static void jj_la1_init_0() { jj_la1_0 = new int[] {}; } - final private JJCalls[] jj_2_rtns = new JJCalls[23]; + final private JJCalls[] jj_2_rtns = new JJCalls[25]; private boolean jj_rescan = false; private int jj_gc = 0; @@ -813,7 +844,7 @@ /** Generate ParseException. */ public ParseException generateParseException() { jj_expentries.clear(); - boolean[] la1tokens = new boolean[28]; + boolean[] la1tokens = new boolean[29]; if (jj_kind >= 0) { la1tokens[jj_kind] = true; jj_kind = -1; @@ -827,7 +858,7 @@ } } } - for (int i = 0; i < 28; i++) { + for (int i = 0; i < 29; i++) { if (la1tokens[i]) { jj_expentry = new int[1]; jj_expentry[0] = i; @@ -854,7 +885,7 @@ private void jj_rescan_token() { jj_rescan = true; - for (int i = 0; i < 23; i++) { + for (int i = 0; i < 25; i++) { try { JJCalls p = jj_2_rtns[i]; do { @@ -884,6 +915,8 @@ case 20: jj_3_21(); break; case 21: jj_3_22(); break; case 22: jj_3_23(); break; + case 23: jj_3_24(); break; + case 24: jj_3_25(); break; } } p = p.next; Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParser.jj =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParser.jj 2012-07-03 14:16:28 UTC (rev 3770) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParser.jj 2012-07-04 15:42:53 UTC (rev 3771) @@ -131,7 +131,7 @@ List<DiscourseReferent> dr_list; Token dr1; Token dr2; - Token dr; + Token dr = null; Token predicate; Token quantifier; DRS drs1; @@ -174,13 +174,14 @@ | drs1=DRS() (quantifier=<EVERY> | quantifier=<SOME> | quantifier=<AFEW> | quantifier=<MOST> | quantifier=<THEMOST> | quantifier=<THELEAST> | - quantifier=<HOWMANY> | quantifier=<MANY> | quantifier=<NO>) dr=dr() drs2=DRS() + quantifier=<HOWMANY> | quantifier=<MANY> | quantifier=<NO> | quantifier=<OR>) (dr=dr())? drs2=DRS() { - Complex_DRS_Condition drs; + Complex_DRS_Condition drs; drs = new Complex_DRS_Condition(); - drs.setRestrictor(drs1); + drs.setRestrictor(drs1); drs.setScope(drs2); - drs.setReferent(new DiscourseReferent(dr.toString())); + if (dr != null) drs.setReferent(new DiscourseReferent(dr.toString())); + else drs.setReferent(new DiscourseReferent("null")); if (quantifier.toString().equals("EVERY")) {drs.setQuantifier(DRS_Quantifier.EVERY);} if (quantifier.toString().equals("SOME")) {drs.setQuantifier(DRS_Quantifier.SOME);} @@ -243,6 +244,8 @@ TOKEN: {<NO: "NO">} +TOKEN: {<OR: "OR">} + TOKEN: {<HOWMANY: "HOWMANY">} TOKEN: {<LABEL: "l"(["0"-"9"])+>} Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParserConstants.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParserConstants.java 2012-07-03 14:16:28 UTC (rev 3770) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParserConstants.java 2012-07-04 15:42:53 UTC (rev 3771) @@ -27,17 +27,19 @@ /** RegularExpression Id. */ int NO = 17; /** RegularExpression Id. */ - int HOWMANY = 18; + int OR = 18; /** RegularExpression Id. */ - int LABEL = 19; + int HOWMANY = 19; /** RegularExpression Id. */ - int A = 20; + int LABEL = 20; /** RegularExpression Id. */ - int B = 21; + int A = 21; /** RegularExpression Id. */ - int C = 22; + int B = 22; /** RegularExpression Id. */ - int QUOTED_STRING = 23; + int C = 23; + /** RegularExpression Id. */ + int QUOTED_STRING = 24; /** Lexical state. */ int DEFAULT = 0; @@ -62,6 +64,7 @@ "\"AFEW\"", "\"MANY\"", "\"NO\"", + "\"OR\"", "\"HOWMANY\"", "<LABEL>", "<A>", Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParserTokenManager.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParserTokenManager.java 2012-07-03 14:16:28 UTC (rev 3770) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParserTokenManager.java 2012-07-04 15:42:53 UTC (rev 3771) @@ -20,29 +20,29 @@ switch (pos) { case 0: - if ((active0 & 0x7fe00L) != 0L) + if ((active0 & 0xffe00L) != 0L) { - jjmatchedKind = 20; + jjmatchedKind = 21; return 4; } return -1; case 1: - if ((active0 & 0x5fc00L) != 0L) + if ((active0 & 0x9fc00L) != 0L) { if (jjmatchedPos != 1) { - jjmatchedKind = 20; + jjmatchedKind = 21; jjmatchedPos = 1; } return 4; } - if ((active0 & 0x20200L) != 0L) + if ((active0 & 0x60200L) != 0L) return 4; return -1; case 2: - if ((active0 & 0x5fc00L) != 0L) + if ((active0 & 0x9fc00L) != 0L) { - jjmatchedKind = 20; + jjmatchedKind = 21; jjmatchedPos = 2; return 4; } @@ -52,9 +52,9 @@ case 3: if ((active0 & 0x19800L) != 0L) return 4; - if ((active0 & 0x46400L) != 0L) + if ((active0 & 0x86400L) != 0L) { - jjmatchedKind = 20; + jjmatchedKind = 21; jjmatchedPos = 3; return 4; } @@ -62,27 +62,27 @@ case 4: if ((active0 & 0x400L) != 0L) return 4; - if ((active0 & 0x46000L) != 0L) + if ((active0 & 0x86000L) != 0L) { - jjmatchedKind = 20; + jjmatchedKind = 21; jjmatchedPos = 4; return 4; } return -1; case 5: - if ((active0 & 0x46000L) != 0L) + if ((active0 & 0x86000L) != 0L) { - jjmatchedKind = 20; + jjmatchedKind = 21; jjmatchedPos = 5; return 4; } return -1; case 6: - if ((active0 & 0x42000L) != 0L) + if ((active0 & 0x82000L) != 0L) return 4; if ((active0 & 0x4000L) != 0L) { - jjmatchedKind = 20; + jjmatchedKind = 21; jjmatchedPos = 6; return 4; } @@ -120,11 +120,13 @@ case 69: return jjMoveStringLiteralDfa1_0(0x400L); case 72: - return jjMoveStringLiteralDfa1_0(0x40000L); + return jjMoveStringLiteralDfa1_0(0x80000L); case 77: return jjMoveStringLiteralDfa1_0(0x10800L); case 78: return jjMoveStringLiteralDfa1_0(0x20200L); + case 79: + return jjMoveStringLiteralDfa1_0(0x40000L); case 83: return jjMoveStringLiteralDfa1_0(0x1000L); case 84: @@ -160,7 +162,11 @@ jjmatchedKind = 17; jjmatchedPos = 1; } - return jjMoveStringLiteralDfa2_0(active0, 0x41a00L); + return jjMoveStringLiteralDfa2_0(active0, 0x81a00L); + case 82: + if ((active0 & 0x40000L) != 0L) + return jjStartNfaWithStates_0(1, 18, 4); + break; case 86: return jjMoveStringLiteralDfa2_0(active0, 0x400L); default : @@ -192,7 +198,7 @@ return jjStartNfaWithStates_0(2, 9, 4); break; case 87: - return jjMoveStringLiteralDfa3_0(active0, 0x40000L); + return jjMoveStringLiteralDfa3_0(active0, 0x80000L); default : break; } @@ -216,7 +222,7 @@ case 76: return jjMoveStringLiteralDfa4_0(active0, 0x4000L); case 77: - return jjMoveStringLiteralDfa4_0(active0, 0x42000L); + return jjMoveStringLiteralDfa4_0(active0, 0x82000L); case 82: return jjMoveStringLiteralDfa4_0(active0, 0x400L); case 84: @@ -248,7 +254,7 @@ switch(curChar) { case 65: - return jjMoveStringLiteralDfa5_0(active0, 0x40000L); + return jjMoveStringLiteralDfa5_0(active0, 0x80000L); case 69: return jjMoveStringLiteralDfa5_0(active0, 0x4000L); case 79: @@ -276,7 +282,7 @@ case 65: return jjMoveStringLiteralDfa6_0(active0, 0x4000L); case 78: - return jjMoveStringLiteralDfa6_0(active0, 0x40000L); + return jjMoveStringLiteralDfa6_0(active0, 0x80000L); case 83: return jjMoveStringLiteralDfa6_0(active0, 0x2000L); default : @@ -302,8 +308,8 @@ return jjStartNfaWithStates_0(6, 13, 4); break; case 89: - if ((active0 & 0x40000L) != 0L) - return jjStartNfaWithStates_0(6, 18, 4); + if ((active0 & 0x80000L) != 0L) + return jjStartNfaWithStates_0(6, 19, 4); break; default : break; @@ -366,8 +372,8 @@ jjCheckNAdd(5); if ((0x3ff008000000000L & l) != 0L) { - if (kind > 20) - kind = 20; + if (kind > 21) + kind = 21; jjCheckNAdd(2); } break; @@ -380,23 +386,23 @@ jjCheckNAdd(7); if ((0x3ff008000000000L & l) != 0L) { - if (kind > 20) - kind = 20; + if (kind > 21) + kind = 21; jjCheckNAdd(2); } break; case 1: if ((0x3ff000000000000L & l) == 0L) break; - if (kind > 19) - kind = 19; + if (kind > 20) + kind = 20; jjstateSet[jjnewStateCnt++] = 1; break; case 2: if ((0x3ff008000000000L & l) == 0L) break; - if (kind > 20) - kind = 20; + if (kind > 21) + kind = 21; jjCheckNAdd(2); break; case 3: @@ -406,8 +412,8 @@ case 5: if ((0x3ff400800000000L & l) == 0L) break; - if (kind > 21) - kind = 21; + if (kind > 22) + kind = 22; jjCheckNAdd(5); break; case 6: @@ -417,8 +423,8 @@ case 7: if ((0x3ff000000000000L & l) == 0L) break; - if (kind > 22) - kind = 22; + if (kind > 23) + kind = 23; jjCheckNAdd(7); break; case 8: @@ -430,8 +436,8 @@ jjCheckNAddTwoStates(9, 10); break; case 10: - if (curChar == 39 && kind > 23) - kind = 23; + if (curChar == 39 && kind > 24) + kind = 24; break; default : break; } @@ -449,8 +455,8 @@ jjCheckNAddTwoStates(3, 4); if ((0x7fffffe87fffffeL & l) != 0L) { - if (kind > 20) - kind = 20; + if (kind > 21) + kind = 21; jjCheckNAdd(2); } break; @@ -459,8 +465,8 @@ jjCheckNAddTwoStates(3, 4); if ((0x7fffffe87fffffeL & l) != 0L) { - if (kind > 20) - kind = 20; + if (kind > 21) + kind = 21; jjCheckNAdd(2); } if (curChar == 108) @@ -469,8 +475,8 @@ case 2: if ((0x7fffffe87fffffeL & l) == 0L) break; - if (kind > 20) - kind = 20; + if (kind > 21) + kind = 21; jjCheckNAdd(2); break; case 3: @@ -480,15 +486,15 @@ case 5: if ((0x7fffffe87fffffeL & l) == 0L) break; - if (kind > 21) - kind = 21; + if (kind > 22) + kind = 22; jjstateSet[jjnewStateCnt++] = 5; break; case 7: if ((0x7fffffe07fffffeL & l) == 0L) break; - if (kind > 22) - kind = 22; + if (kind > 23) + kind = 23; jjstateSet[jjnewStateCnt++] = 7; break; case 9: @@ -535,7 +541,7 @@ public static final String[] jjstrLiteralImages = { "", "\72", "\133", "\174", "\135", "\54", "\50", "\51", "\75", "\116\117\124", "\105\126\105\122\131", "\115\117\123\124", "\123\117\115\105", "\124\110\105\115\117\123\124", -"\124\110\105\114\105\101\123\124", "\101\106\105\127", "\115\101\116\131", "\116\117", +"\124\110\105\114\105\101\123\124", "\101\106\105\127", "\115\101\116\131", "\116\117", "\117\122", "\110\117\127\115\101\116\131", null, null, null, null, null, null, null, null, null, }; /** Lexer state names. */ @@ -543,10 +549,10 @@ "DEFAULT", }; static final long[] jjtoToken = { - 0xffffffL, + 0x1ffffffL, }; static final long[] jjtoSkip = { - 0xf000000L, + 0x1e000000L, }; protected SimpleCharStream input_stream; private final int[] jjrounds = new int[11]; Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/data/Argument.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/data/Argument.java 2012-07-03 14:16:28 UTC (rev 3770) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/data/Argument.java 2012-07-04 15:42:53 UTC (rev 3771) @@ -38,6 +38,9 @@ public String toString() { return "(" + anchor + "," + referent + "," + type + "," + label + ")"; } + public String toTex() { + return "(\\text{"+anchor+"},"+referent+","+type.toTex()+","+label.toTex()+")"; + } public Argument clone() { return new Argument(anchor,referent,type,label); Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/data/Dude.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/data/Dude.java 2012-07-03 14:16:28 UTC (rev 3770) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/data/Dude.java 2012-07-04 15:42:53 UTC (rev 3771) @@ -388,5 +388,26 @@ } } } + + public String toTex() { + + String out = "\\Dude{"+mainReferent+","+mainLabel.toTex()+","+mainType.toTex()+"}"; + out += "{"; + for (DRS drs : components) out += drs.toTex() + " \\\\ "; + out += "}{"; + for (Argument arg : arguments) out += arg.toTex() + "\\ "; + out += "}{"; + for (Iterator<DominanceConstraint> i = dominanceConstraints.iterator(); i.hasNext();) { + out += i.next().toTex(); + if (i.hasNext()) out += ","; + } + out += "}{"; + for (Iterator<Slot> i = slots.iterator(); i.hasNext();) { + out += i.next().toTex(); + if (i.hasNext()) out += ","; + } + out += "}"; + return out; + } } \ No newline at end of file Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/reader/DUDE_Parser.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/reader/DUDE_Parser.java 2012-07-03 14:16:28 UTC (rev 3770) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/reader/DUDE_Parser.java 2012-07-04 15:42:53 UTC (rev 3771) @@ -338,12 +338,12 @@ List<DiscourseReferent> dr_list; Token dr1; Token dr2; - Token dr; + Token dr = null; Token predicate; Token quantifier; DRS drs1; DRS drs2; - if (jj_2_29(2)) { + if (jj_2_31(2)) { predicate = word(); jj_consume_token(10); dr_list = DR_List(); @@ -354,7 +354,7 @@ condition.setPredicate(predicate.toString()); condition.setArguments(dr_list); {if (true) return condition;} - } else if (jj_2_30(2)) { + } else if (jj_2_32(2)) { dr1 = dr(); jj_consume_token(6); dr2 = dr(); @@ -365,13 +365,13 @@ condition.addArgument(new DiscourseReferent(dr1.toString())); condition.addArgument(new DiscourseReferent(dr2.toString())); {if (true) return condition;} - } else if (jj_2_31(2)) { + } else if (jj_2_33(2)) { jj_consume_token(13); drs1 = DRS(); Negated_DRS drs = new Negated_DRS(); drs.setDRS(drs1); {if (true) return drs;} - } else if (jj_2_32(2)) { + } else if (jj_2_34(2)) { drs1 = DRS(); if (jj_2_20(2)) { quantifier = jj_consume_token(EVERY); @@ -391,17 +391,24 @@ quantifier = jj_consume_token(MANY); } else if (jj_2_28(2)) { quantifier = jj_consume_token(NO); + } else if (jj_2_29(2)) { + quantifier = jj_consume_token(OR); } else { jj_consume_token(-1); throw new ParseException(); } - dr = dr(); + if (jj_2_30(2)) { + dr = dr(); + } else { + ; + } drs2 = DRS(); - Complex_DRS_Condition drs; + Complex_DRS_Condition drs; drs = new Complex_DRS_Condition(); - drs.setRestrictor(drs1); + drs.setRestrictor(drs1); drs.setScope(drs2); - drs.setReferent(new DiscourseReferent(dr.toString())); + if (dr != null) drs.setReferent(new DiscourseReferent(dr.toString())); + else drs.setReferent(new DiscourseReferent("null")); if (quantifier.toString().equals("EVERY")) {drs.setQuantifier(DRS_Quantifier.EVERY);} if (quantifier.toString().equals("SOME")) {drs.setQuantifier(DRS_Quantifier.SOME);} @@ -427,7 +434,7 @@ Token dr; List<DiscourseReferent> dr_list=null; dr = dr(); - if (jj_2_33(2)) { + if (jj_2_35(2)) { jj_consume_token(2); dr_list = DR_List(); } else { @@ -456,7 +463,7 @@ Slot slot; List<Slot> slots = null; slot = Slot(); - if (jj_2_34(2)) { + if (jj_2_36(2)) { jj_consume_token(2); slots = Slot_List(); } else { @@ -481,7 +488,7 @@ jj_consume_token(14); type = word(); jj_consume_token(14); - if (jj_2_35(2)) { + if (jj_2_37(2)) { words = Word_List(); } else { ; @@ -507,7 +514,7 @@ Token word; List<String> words = null; word = word(); - if (jj_2_36(2)) { + if (jj_2_38(2)) { jj_consume_token(15); words = Word_List(); } else { @@ -525,9 +532,9 @@ final public Token dr() throws ParseException { Token t; - if (jj_2_37(2)) { + if (jj_2_39(2)) { t = jj_consume_token(A); - } else if (jj_2_38(2)) { + } else if (jj_2_40(2)) { t = jj_consume_token(C); } else { jj_consume_token(-1); @@ -539,9 +546,9 @@ final public Token word() throws ParseException { Token t; - if (jj_2_39(2)) { + if (jj_2_41(2)) { t = jj_consume_token(A); - } else if (jj_2_40(2)) { + } else if (jj_2_42(2)) { t = jj_consume_token(B); } else { jj_consume_token(-1); @@ -831,6 +838,20 @@ finally { jj_save(39, xla); } } + private boolean jj_2_41(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_41(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(40, xla); } + } + + private boolean jj_2_42(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_42(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(41, xla); } + } + private boolean jj_3_12() { if (jj_scan_token(2)) return true; if (jj_3R_1()) return true; @@ -848,7 +869,7 @@ return false; } - private boolean jj_3_32() { + private boolean jj_3_34() { if (jj_3R_11()) return true; return false; } @@ -858,11 +879,21 @@ return false; } + private boolean jj_3_30() { + if (jj_3R_10()) return true; + return false; + } + private boolean jj_3_3() { if (jj_3R_3()) return true; return false; } + private boolean jj_3_42() { + if (jj_scan_token(B)) return true; + return false; + } + private boolean jj_3R_1() { if (jj_3R_11()) return true; return false; @@ -873,19 +904,20 @@ return false; } - private boolean jj_3_31() { + private boolean jj_3_33() { if (jj_scan_token(13)) return true; if (jj_3R_11()) return true; return false; } private boolean jj_3_40() { - if (jj_scan_token(B)) return true; + if (jj_scan_token(C)) return true; return false; } - private boolean jj_3_38() { - if (jj_scan_token(C)) return true; + private boolean jj_3R_16() { + if (jj_3R_7()) return true; + if (jj_scan_token(14)) return true; return false; } @@ -895,13 +927,7 @@ return false; } - private boolean jj_3R_16() { - if (jj_3R_7()) return true; - if (jj_scan_token(14)) return true; - return false; - } - - private boolean jj_3_39() { + private boolean jj_3_41() { if (jj_scan_token(A)) return true; return false; } @@ -909,45 +935,50 @@ private boolean jj_3R_7() { Token xsp; xsp = jj_scanpos; - if (jj_3_39()) { + if (jj_3_41()) { jj_scanpos = xsp; - if (jj_3_40()) return true; + if (jj_3_42()) return true; } return false; } - private boolean jj_3_37() { + private boolean jj_3_39() { if (jj_scan_token(A)) return true; return false; } - private boolean jj_3_23() { - if (jj_scan_token(MOST)) return true; - return false; - } - private boolean jj_3R_10() { Token xsp; xsp = jj_scanpos; - if (jj_3_37()) { + if (jj_3_39()) { jj_scanpos = xsp; - if (jj_3_38()) return true; + if (jj_3_40()) return true; } return false; } - private boolean jj_3_30() { - if (jj_3R_10()) return true; - if (jj_scan_token(6)) return true; + private boolean jj_3_29() { + if (jj_scan_token(OR)) return true; return false; } - private boolean jj_3_34() { + private boolean jj_3_36() { if (jj_scan_token(2)) return true; if (jj_3R_4()) return true; return false; } + private boolean jj_3_23() { + if (jj_scan_token(MOST)) return true; + return false; + } + + private boolean jj_3_32() { + if (jj_3R_10()) return true; + if (jj_scan_token(6)) return true; + return false; + } + private boolean jj_3R_3() { if (jj_3R_15()) return true; return false; @@ -956,20 +987,20 @@ private boolean jj_3R_17() { Token xsp; xsp = jj_scanpos; - if (jj_3_29()) { + if (jj_3_31()) { jj_scanpos = xsp; - if (jj_3_30()) { + if (jj_3_32()) { jj_scanpos = xsp; - if (jj_3_31()) { + if (jj_3_33()) { jj_scanpos = xsp; - if (jj_3_32()) return true; + if (jj_3_34()) return true; } } } return false; } - private boolean jj_3_29() { + private boolean jj_3_31() { if (jj_3R_7()) return true; if (jj_scan_token(10)) return true; return false; @@ -981,13 +1012,13 @@ return false; } - private boolean jj_3_15() { - if (jj_3R_7()) return true; + private boolean jj_3R_4() { + if (jj_3R_16()) return true; return false; } - private boolean jj_3R_4() { - if (jj_3R_16()) return true; + private boolean jj_3_15() { + if (jj_3R_7()) return true; return false; } @@ -1034,7 +1065,7 @@ return false; } - private boolean jj_3_33() { + private boolean jj_3_35() { if (jj_scan_token(2)) return true; if (jj_3R_12()) return true; return false; @@ -1084,17 +1115,17 @@ return false; } + private boolean jj_3R_12() { + if (jj_3R_10()) return true; + return false; + } + private boolean jj_3_13() { if (jj_scan_token(2)) return true; if (jj_3R_2()) return true; return false; } - private boolean jj_3R_12() { - if (jj_3R_10()) return true; - return false; - } - private boolean jj_3_17() { if (jj_3R_9()) return true; return false; @@ -1106,12 +1137,17 @@ return false; } - private boolean jj_3_36() { + private boolean jj_3_38() { if (jj_scan_token(15)) return true; if (jj_3R_13()) return true; return false; } + private boolean jj_3_37() { + if (jj_3R_13()) return true; + return false; + } + private boolean jj_3_25() { if (jj_scan_token(THELEAST)) return true; return false; @@ -1123,11 +1159,6 @@ return false; } - private boolean jj_3_35() { - if (jj_3R_13()) return true; - return false; - } - private boolean jj_3_18() { if (jj_scan_token(2)) return true; if (jj_3R_8()) return true; @@ -1163,19 +1194,19 @@ return false; } - private boolean jj_3R_2() { - if (jj_3R_14()) return true; - return false; - } - private boolean jj_3R_13() { if (jj_3R_7()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_36()) jj_scanpos = xsp; + if (jj_3_38()) jj_scanpos = xsp; return false; } + private boolean jj_3R_2() { + if (jj_3R_14()) return true; + return false; + } + private boolean jj_3R_8() { if (jj_3R_10()) return true; Token xsp; @@ -1208,7 +1239,7 @@ private static void jj_la1_init_1() { jj_la1_1 = new int[] {}; } - final private JJCalls[] jj_2_rtns = new JJCalls[40]; + final private JJCalls[] jj_2_rtns = new JJCalls[42]; private boolean jj_rescan = false; private int jj_gc = 0; @@ -1392,7 +1423,7 @@ /** Generate ParseException. */ public ParseException generateParseException() { jj_expentries.clear(); - boolean[] la1tokens = new boolean[34]; + boolean[] la1tokens = new boolean[35]; if (jj_kind >= 0) { la1to... [truncated message content] |