X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Fmeta%2FMetaGrammarBindings.java;h=0bad0b2c7d0f07af980cb5e6fd0fa46c67f764bd;hp=196394a9de1a07ec89a30af67328cb228c82a06b;hb=4378d20232cd88fb2a57edc5a5114f952ab58a18;hpb=24112db237318c030b4d4f457d90c34fd69d652b diff --git a/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java b/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java index 196394a..0bad0b2 100644 --- a/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java +++ b/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java @@ -68,7 +68,7 @@ public class MetaGrammarBindings extends AnnotationGrammarBindings { Atom ret = null; for(Seq[] ss : sequences) for(Seq s : ss) - ret = ret==null ? s.toAtom(cx) : infer(ret.union(s.toAtom(cx))); + ret = ret==null ? s.toAtom(cx) : (Atom)ret.union(s.toAtom(cx)); return ret; } public void build(Context cx, Union u, NonTerminalNode cnt) { @@ -78,16 +78,13 @@ public class MetaGrammarBindings extends AnnotationGrammarBindings { Union u2 = new Union(null, false); if (sequences.length==1) u2 = u; for(int j=0; j bad2 = new HashSet(); Union urep = new Union(null, false); - urep.add(Sequence.empty); + urep.add(Sequence.newEmptySequence()); if (sep != null) - urep.add(Sequence.singleton(new Element[] { cx.get(sep), u }, 1)); + urep.add(Sequence.newSingletonSequence(new Element[] { cx.get(sep), u }, 1)); else - urep.add(Sequence.singleton(new Element[] { u }, 0)); + urep.add(Sequence.newSingletonSequence(new Element[] { u }, 0)); for(int i=0; i)Atom.toAtom(e)); } - static Atom infer(Topology t) { return new CharAtom(new CharTopology(t)); } + static Atom infer(Object t) { return (Atom)t; } public static class Context { public HashMap map = new HashMap(); @@ -506,10 +492,12 @@ public class MetaGrammarBindings extends AnnotationGrammarBindings { public String getLabel() { return label; } } + /* static class Invert extends Atom { private final Atom a; public Invert(Atom a) { this.a = a; } public Topology top() { return a.complement(); } public String toString() { return "~"+a; } } + */ }