X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fibex%2Futil%2FGrammar.java;fp=src%2Forg%2Fibex%2Futil%2FGrammar.java;h=0000000000000000000000000000000000000000;hb=ac84b5a03467c0853c7275105712ece6c71be1f1;hp=683c118964a12668c75453f155c47c06ed7468cb;hpb=3f8aa5300e178e8975b0edc896a5a9d303e7bdf3;p=org.ibex.core.git diff --git a/src/org/ibex/util/Grammar.java b/src/org/ibex/util/Grammar.java deleted file mode 100644 index 683c118..0000000 --- a/src/org/ibex/util/Grammar.java +++ /dev/null @@ -1,107 +0,0 @@ -package org.ibex.util; - -import org.ibex.js.*; - -public abstract class Grammar extends JS { - - public JS action = null; - - // FIXME: Updae for new api - - // means we call()ed a Grammar that hasn't been bound to a scope yet - /*public Object call(Object a0, Object a1, Object a2, Object[] rest, int nargs) throws JSExn { - throw new Error("this should never happen"); - } - - private static Object NULL = new Object(); - - public abstract int match(String s, int start, Hash v, JSScope scope) throws JSExn; - public int matchAndWrite(final String s, final int start, Hash v, JSScope scope, String key) throws JSExn { - final Hash v2 = new Hash(); - final int ret = match(s, start, v2, scope); - Object result = ret == -1 ? NULL : action == null ? - s.substring(start, ret) : - JS.cloneWithNewParentScope(action, new JSScope(scope) { - public Object get(Object key) throws JSExn { - Object val = v2.get(key); - if (val == NULL) return null; - if (val != null) return val; - if (key.equals("whole")) return s.substring(start, ret); - return super.get(key); - } - }).call(null, null, null, null, 0); - if (key != null) { - Object old = v.get(key); - if (old == null || old == NULL) { } - else if (old instanceof JSArray) { if (result != NULL) { ((JSArray)old).addElement(result); result = old; } } - else if (result != NULL) { JSArray j = new JSArray(); j.addElement(old); j.addElement(result); result = j; } - v.put(key, result); - } - return ret; - } - - public static class Alternative extends Grammar { - private Grammar r1, r2; - public Alternative(Grammar r1, Grammar r2) { this.r1 = r1; this.r2 = r2; } - public int match(String s, int start, Hash v, JSScope r) throws JSExn { - int s1 = r1.match(s, start, v, r); - if (s1 != -1) return s1; - int s2 = r2.match(s, start, v, r); - if (s2 != -1) return s2; - return -1; - } - } - - public static class Juxtaposition extends Grammar { - private Grammar r1, r2; - public Juxtaposition(Grammar r1, Grammar r2) { this.r1 = r1; this.r2 = r2; } - public int match(String s, int start, Hash v, JSScope r) throws JSExn { - int s1 = r1.match(s, start, v, r); - if (s1 == -1) return -1; - int s2 = r2.match(s, s1, v, r); - if (s2 == -1) return -1; - return s2; - } - } - - public static class Repetition extends Grammar { - private Grammar r1; - private int min, max; - public Repetition(Grammar r1, int min, int max) { this.r1 = r1; this.min = min; this.max = max; } - public int match(String s, int start, Hash v, JSScope r) throws JSExn { - int i; - for(i=0; i= min && s.charAt(start) <= max)) return -1; - return start + 1; - } - } - - public static class Reference extends Grammar { - String key; - public Reference(String key) { this.key = key; } - public int match(String s, int start, Hash v, JSScope scope) throws JSExn { - return ((Grammar)scope.get(key)).matchAndWrite(s, start, v, scope, key); - } - }*/ -}