X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Fedu%2Fberkeley%2Fsbp%2Fmisc%2FDemo.java;h=9c205d8670c78212a5024cdc3388c5f0690edf80;hb=9a51c5df6d121f44c34a60fea128c5da7c3dba87;hp=02482fa3619b601656c2eef809b98b5b0b03d2e7;hpb=98ae7592861f7e7d3bf5744b5db84ffdefc6011d;p=sbp.git diff --git a/src/edu/berkeley/sbp/misc/Demo.java b/src/edu/berkeley/sbp/misc/Demo.java index 02482fa..9c205d8 100644 --- a/src/edu/berkeley/sbp/misc/Demo.java +++ b/src/edu/berkeley/sbp/misc/Demo.java @@ -70,14 +70,14 @@ public class Demo { Production p = new Production(tag, nonTerminalName, els, labels, drops); for(Method m : _cl.getMethods()) if (new TargetMethod(m).isCompatible(p)) - return Sequence.rewritingSequence(m, els, labels, drops); + return new TargetMethod(m).makeSequence(p); for(Class c : _inner) for(Constructor con : c.getConstructors()) if (new TargetConstructor(con).isCompatible(p)) - return Sequence.rewritingSequence(con, els, labels, drops); + return new TargetConstructor(con).makeSequence(p); for(Class c : _inner) if (new TargetClass(c).isCompatible(p)) - return Sequence.rewritingSequence(c, els, labels, drops); + return new TargetClass(c).makeSequence(p); throw new RuntimeException("could not find a Java method/class/ctor matching tag \""+tag+"\", nonterminal \""+nonTerminalName+"\""); } } @@ -156,6 +156,7 @@ public class Demo { public abstract tag getTag(); public abstract nonterminal getNonTerminal(); public abstract boolean buildSequence(Production p); + public abstract Sequence makeSequence(Production p); public boolean isCompatible(Production p) { tag t = getTag(); if (t != null && @@ -215,6 +216,9 @@ public class Demo { return true; return false; } + public Sequence makeSequence(Production p) { + return Sequence.rewritingSequence(_class, p.elements, p.labels, p.drops); + } } public static class TargetConstructor extends Target { public final Constructor _ctor; @@ -241,6 +245,9 @@ public class Demo { if (ret!=null) return true; return false; } + public Sequence makeSequence(Production p) { + return Sequence.rewritingSequence(_ctor, p.elements, p.labels, p.drops); + } } public static class TargetMethod extends Target { public final Method _method; @@ -260,6 +267,9 @@ public class Demo { if (ret!=null) return true; return false; } + public Sequence makeSequence(Production p) { + return Sequence.rewritingSequence(_method, p.elements, p.labels, p.drops); + } } public class MG {