X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Fmeta%2FAnnotationGrammarBindingResolver.java;h=825dc56cab56344f022b7b40b59d06ebbe70dd49;hp=1955f7fd1bc56fb4679358b039a596da6c34b28c;hb=1976ed1b8cf49284016a99114e717d46a3be3617;hpb=f7d5c2384df4e9e586f3c3465a6e6e0f4212115c diff --git a/src/edu/berkeley/sbp/meta/AnnotationGrammarBindingResolver.java b/src/edu/berkeley/sbp/meta/AnnotationGrammarBindingResolver.java index 1955f7f..825dc56 100644 --- a/src/edu/berkeley/sbp/meta/AnnotationGrammarBindingResolver.java +++ b/src/edu/berkeley/sbp/meta/AnnotationGrammarBindingResolver.java @@ -35,19 +35,21 @@ 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); 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+