X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Fmeta%2FAnnotationGrammarBindingResolver.java;h=ca10c04f1d8753ae0a627101ce96ac1f7c59331c;hb=80128a38a1c907f1860a5cb13769d691be059a5f;hp=1955f7fd1bc56fb4679358b039a596da6c34b28c;hpb=f7d5c2384df4e9e586f3c3465a6e6e0f4212115c;p=sbp.git diff --git a/src/edu/berkeley/sbp/meta/AnnotationGrammarBindingResolver.java b/src/edu/berkeley/sbp/meta/AnnotationGrammarBindingResolver.java index 1955f7f..ca10c04 100644 --- a/src/edu/berkeley/sbp/meta/AnnotationGrammarBindingResolver.java +++ b/src/edu/berkeley/sbp/meta/AnnotationGrammarBindingResolver.java @@ -35,19 +35,23 @@ public class AnnotationGrammarBindingResolver extends GrammarBindingResolver { } public Sequence tryResolveTag(String tag, String nonTerminalName, Element[] els, Object[] labels, boolean[] drops) { + MetaGrammar.Production p = new MetaGrammar.Production(tag, nonTerminalName, els, labels, drops); + if (labels != null && labels.length > 0 && "numeric".equals(labels[0])) + System.out.println("here! "); for(Method m : _cl.getMethods()) - if (new MetaGrammar.Target(m).isCompatible(tag, nonTerminalName, els, labels, drops)) - return new MetaGrammar.Target(m).makeSequence(tag, nonTerminalName, els, labels, drops); + if (new MetaGrammar.Target(m).isCompatible(p)) + return new MetaGrammar.Target(m).makeSequence(p); for(Class c : _inner) for(Constructor con : c.getConstructors()) - if (new MetaGrammar.Target(con).isCompatible(tag, nonTerminalName, els, labels, drops)) - return new MetaGrammar.Target(con).makeSequence(tag, nonTerminalName, els, labels, drops); + if (new MetaGrammar.Target(con).isCompatible(p)) + return new MetaGrammar.Target(con).makeSequence(p); for(Class c : _inner) - if (new MetaGrammar.Target(c).isCompatible(tag, nonTerminalName, els, labels, drops)) - return new MetaGrammar.Target(c).makeSequence(tag, nonTerminalName, els, labels, drops); + if (new MetaGrammar.Target(c).isCompatible(p)) + return new MetaGrammar.Target(c).makeSequence(p); return null; } public Sequence resolveTag(String tag, String nonTerminalName, Element[] els, Object[] labels, boolean[] drops) { + MetaGrammar.Production p = new MetaGrammar.Production(tag, nonTerminalName, els, labels, drops); Sequence ret = tryResolveTag(tag, nonTerminalName, els, labels, drops); if (ret != null) return ret; String message = "could not find a Java method/class/ctor matching tag \""+tag+