X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Fmeta%2FMetaGrammar.java;h=e39fd4bac79af0a63e3e1759426fb38bd639d243;hb=f56263f0f1cf0c01dfbd8ea7bd1ba8a9c6bd8042;hp=aa02d5f475633c88e3eb6450b067d936b0789f6e;hpb=92fb8d7453b3caad1471d84dd452f5ec07785e5e;p=sbp.git diff --git a/src/edu/berkeley/sbp/meta/MetaGrammar.java b/src/edu/berkeley/sbp/meta/MetaGrammar.java index aa02d5f..e39fd4b 100644 --- a/src/edu/berkeley/sbp/meta/MetaGrammar.java +++ b/src/edu/berkeley/sbp/meta/MetaGrammar.java @@ -121,22 +121,24 @@ public class MetaGrammar { public boolean isCompatible(Production p) { bind.as t = getBindAs(); + bind b = getBind(); + if (t != null && - (t.value().equals(p.tag) || - (t.value().equals("") && getName().equals(p.tag)))) + (t.value().equals(p.tag))) return buildSequence(p)!=null; - bind b = getBind(); - System.out.println(_bindable.getClass().getSimpleName() + ": " + _bindable.getSimpleName()); + if (t != null && + ((t.value().equals("") && getName().equals(p.tag)))) + return buildSequence(p)!=null; if (b != null && getName().equals(p.tag)) return buildSequence(p)!=null; - bind.as n = getBindAs(); - if (n != null && - (n.value().equals(p.nonTerminal) || - (n.value().equals("") && getName().equals(p.nonTerminal)))) + if (t != null && + (t.value().equals(p.nonTerminal))) + return buildSequence(p)!=null; + if (t != null && + ((t.value().equals("") && getName().equals(p.nonTerminal)))) return buildSequence(p)!=null; - if (b != null && getName().equals(p.nonTerminal)) return buildSequence(p)!=null; @@ -150,15 +152,27 @@ public class MetaGrammar { argTagged++; // FIXME: can be smarter here - if (names.length==p.count) { - int[] ret = new int[p.count]; - for(int i=0; i