From 0c8e6b67673f47003a92c496a9d005ab7d5354fa Mon Sep 17 00:00:00 2001 From: adam Date: Tue, 27 Mar 2007 20:28:50 -0400 Subject: [PATCH 1/1] clean up metagrammar handling of drop and question-mark darcs-hash:20070328002850-5007d-fe9e50e8faf3831371b2dc77b062876d200c4ee1.gz --- src/edu/berkeley/sbp/meta/GrammarBuilder.java | 41 ++++++++++++++----------- src/edu/berkeley/sbp/meta/Repeat.java | 19 ++++++++---- tests/regression.tc | 12 +++++++- 3 files changed, 47 insertions(+), 25 deletions(-) diff --git a/src/edu/berkeley/sbp/meta/GrammarBuilder.java b/src/edu/berkeley/sbp/meta/GrammarBuilder.java index 3651be3..e6e06ad 100644 --- a/src/edu/berkeley/sbp/meta/GrammarBuilder.java +++ b/src/edu/berkeley/sbp/meta/GrammarBuilder.java @@ -264,7 +264,7 @@ public class GrammarBuilder { public class NonTerminalNode extends UnionNode { public boolean alwaysDrop; public String name = null; - public boolean drop() { return alwaysDrop; } + public boolean drop(Context cx) { return alwaysDrop; } public NonTerminalNode(String name, Seq[][] sequences, boolean rep, String sep, boolean alwaysDrop) { super(sequences, rep, sep==null?null:(prefix + sep)); this.name = prefix + name; @@ -275,7 +275,7 @@ public class GrammarBuilder { public class Seq { public boolean alwaysDrop = false; - public boolean drop() { return alwaysDrop; } + public boolean drop(Context cx) { return alwaysDrop; } HashSet and = new HashSet(); HashSet not = new HashSet(); ElementNode[] elements; @@ -326,13 +326,10 @@ public class GrammarBuilder { public Sequence build0(Context cx, NonTerminalNode cnt, boolean dropall) { boolean[] drops = new boolean[elements.length]; Element[] els = new Element[elements.length]; - dropall |= drop(); + dropall |= drop(cx); for(int i=0; i Z + Y = Y:: "a" B? "a" + Z = Z:: "a" "b"* "a" + B = "b" +} -- 1.7.10.4