X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Fmisc%2FMetaGrammar.java;h=13da0cae7e6ac183576f1e23fbcc833f3ea955cb;hp=bc171da5b27891926668380c71226f606326c66b;hb=7e98c8cefa1a3d5501c7ab513ba37d4aefa291e6;hpb=a19f44a6cc6e3a2b0c2f3dadd7be2263d6ff0c3e diff --git a/src/edu/berkeley/sbp/misc/MetaGrammar.java b/src/edu/berkeley/sbp/misc/MetaGrammar.java index bc171da..13da0ca 100644 --- a/src/edu/berkeley/sbp/misc/MetaGrammar.java +++ b/src/edu/berkeley/sbp/misc/MetaGrammar.java @@ -152,16 +152,25 @@ public class MetaGrammar extends ReflectiveWalker { public PreSequence sparse(Object e) { Object[] ret; - if (o.length <= 1) ret = o; - else { + boolean[] drops; + if (o.length <= 1) { + ret = o; + drops = new boolean[this.drops.length]; + System.arraycopy(this.drops, 0, drops, 0, this.drops.length); + } else { ret = new Object[o.length * 2 - 1]; + drops = new boolean[o.length * 2 - 1]; for(int i=0; i set = new HashSet(); Element[] o2 = o==null ? new Element[0] : new Element[o.length]; int nonDrop = 0; - boolean[] drops = null; if (o != null) { - drops = new boolean[o.length]; int j = 0; for(int i=0; i