[Nice-commit] Nice/src/bossa/link Alternative.java,1.51,1.52 Dispatch.java,1.70,1.71 ImportedAlterna
Brought to you by:
bonniot
From: Arjan B. <ar...@us...> - 2004-08-07 14:20:36
|
Update of /cvsroot/nice/Nice/src/bossa/link In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27902/F:/nice/src/bossa/link Modified Files: Alternative.java Dispatch.java ImportedAlternative.java Log Message: Split up Pattern.java in subclasses and converted the subclasses to nice code. Index: ImportedAlternative.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/link/ImportedAlternative.java,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** ImportedAlternative.java 9 Jun 2004 17:02:11 -0000 1.9 --- ImportedAlternative.java 7 Aug 2004 14:20:27 -0000 1.10 *************** *** 61,65 **** try { Pattern p; ! while ((p = Pattern.read(rep, at, fullName)) != null) { if (p.getTC() == bossa.syntax.PrimitiveType.arrayTC) --- 61,65 ---- try { Pattern p; ! while ((p = bossa.syntax.dispatch.readPattern(rep, at)) != null) { if (p.getTC() == bossa.syntax.PrimitiveType.arrayTC) Index: Alternative.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/link/Alternative.java,v retrieving revision 1.51 retrieving revision 1.52 diff -C2 -d -r1.51 -r1.52 *** Alternative.java 3 Aug 2004 10:16:14 -0000 1.51 --- Alternative.java 7 Aug 2004 14:20:27 -0000 1.52 *************** *** 61,65 **** { for(int i = 0; i<a.patterns.length; i++) ! if (!a.patterns[i].leq(b.patterns[i])) return false; return true; --- 61,65 ---- { for(int i = 0; i<a.patterns.length; i++) ! if (! bossa.syntax.dispatch.leq(a.patterns[i], b.patterns[i])) return false; return true; *************** *** 74,80 **** for (int i = 0; i < a.patterns.length; i++) ! if (!a.patterns[i].leq(b.patterns[i])) return false; ! else if (!b.patterns[i].leq(a.patterns[i])) strictly = true; --- 74,80 ---- for (int i = 0; i < a.patterns.length; i++) ! if (! bossa.syntax.dispatch.leq(a.patterns[i], b.patterns[i])) return false; ! else if (! bossa.syntax.dispatch.leq(b.patterns[i], a.patterns[i])) strictly = true; *************** *** 85,89 **** { for(int i = 0; i<a.patterns.length; i++) ! if (a.patterns[i].disjoint(b.patterns[i])) return true; --- 85,89 ---- { for(int i = 0; i<a.patterns.length; i++) ! if (bossa.syntax.dispatch.disjoint(a.patterns[i], b.patterns[i])) return true; Index: Dispatch.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/link/Dispatch.java,v retrieving revision 1.70 retrieving revision 1.71 diff -C2 -d -r1.70 -r1.71 *** Dispatch.java 5 Aug 2004 19:01:19 -0000 1.70 --- Dispatch.java 7 Aug 2004 14:20:27 -0000 1.71 *************** *** 364,367 **** --- 364,368 ---- failed = true; errors.add("no alternative matches "+ toString(tags, values, isValue)); + Debug.println(sortedAlternatives.toString() + "\n" + toString(tags, values, isValue)); break; } *************** *** 526,530 **** } ! /** Generate all combinations of non boolean values from the alternatives * @return List<ConstantExp> */ --- 527,531 ---- } ! /** Generate all combinations of values from the alternatives * @return List<ConstantExp> */ *************** *** 539,556 **** for (Iterator i = alternatives.iterator(); i.hasNext(); ) { ! Pattern pat = ((Alternative)i.next()).getPatterns()[pos]; ! if (pat.atEnumerableValue()) { isValue[pos] = true; ! for (Iterator it = pat.getEnumValues().iterator(); it.hasNext(); ) ! valuesAtPos.add(it.next()); ! } - else if (pat.atSimpleValue()) - { - isValue[pos] = true; - valuesAtPos.add(pat.atValue); - } } //remove duplicates /* for (int i = 0; i < valuesAtPos.size(); i++) --- 540,551 ---- for (Iterator i = alternatives.iterator(); i.hasNext(); ) { ! Pattern pat = ((Alternative)i.next()).getPatterns()[pos]; ! if (pat.atValue()) { isValue[pos] = true; ! pat.addValues(valuesAtPos); } } + //remove duplicates /* for (int i = 0; i < valuesAtPos.size(); i++) *************** *** 559,607 **** valuesAtPos.remove(j--); */ - for (Iterator i = alternatives.iterator(); i.hasNext(); ) - { - Pattern pat = ((Alternative)i.next()).getPatterns()[pos]; - if (pat.atIntCompare()) - { - isValue[pos] = true; - long val = pat.atValue.longValue(); - long lo,hi; - if (pat.compareKind == Pattern.LT || pat.compareKind == Pattern.GE) - { - lo = val-1; - hi = val; - } - else - { - lo = val; - hi = val+1; - } - - outer: - for (;true; lo--) - { - for (int j = 0; j<valuesAtPos.size(); j++) - if (((ConstantExp)valuesAtPos.get(j)).value instanceof Number && - ((ConstantExp)valuesAtPos.get(j)).longValue() == lo) - continue outer; - - break; - } - valuesAtPos.add(new ConstantExp(new Long(lo))); - - outer: - for (;true; hi++) - { - for (int j = 0; j<valuesAtPos.size(); j++) - if (((ConstantExp)valuesAtPos.get(j)).value instanceof Number && - ((ConstantExp)valuesAtPos.get(j)).longValue() == hi) - continue outer; - - break; - } - - valuesAtPos.add(new ConstantExp(new Long(hi))); - } - } int valueCount = valuesAtPos.size(); --- 554,557 ---- |