From eef891a53c43901acccac0dead16a79dbdb34c77 Mon Sep 17 00:00:00 2001 From: adam Date: Tue, 27 Mar 2007 19:44:19 -0400 Subject: [PATCH] rename edu.berkeley.sbp.Cache to Grammar darcs-hash:20070327234419-5007d-fcc7f31c972cdaf5ed1b7f1b90c313a4d36aaa48.gz --- src/edu/berkeley/sbp/{Cache.java => Grammar.java} | 17 ++++++++++++----- src/edu/berkeley/sbp/ParseFailed.java | 2 +- src/edu/berkeley/sbp/Parser.java | 4 ++-- src/edu/berkeley/sbp/Sequence.java | 14 +++++++------- src/edu/berkeley/sbp/Union.java | 2 +- 5 files changed, 23 insertions(+), 16 deletions(-) rename src/edu/berkeley/sbp/{Cache.java => Grammar.java} (93%) diff --git a/src/edu/berkeley/sbp/Cache.java b/src/edu/berkeley/sbp/Grammar.java similarity index 93% rename from src/edu/berkeley/sbp/Cache.java rename to src/edu/berkeley/sbp/Grammar.java index c600454..9b332d8 100644 --- a/src/edu/berkeley/sbp/Cache.java +++ b/src/edu/berkeley/sbp/Grammar.java @@ -1,15 +1,22 @@ // Copyright 2006 all rights reserved; see LICENSE file for BSD-style license package edu.berkeley.sbp; -import edu.berkeley.sbp.*; import edu.berkeley.sbp.util.*; import edu.berkeley.sbp.Sequence.Position; import java.io.*; import java.util.*; -import java.lang.reflect.*; -import java.lang.ref.*; -abstract class Cache { +/** + * A collection of Elements and Sequences which only reference each other. + * + * All analyses are done at the Grammar level, since a given + * Element/Sequence can appear in multiple Grammars. Some of these + * analyses depend on which elements *reference* a given element, + * rather than which elements *are referenced by* a given element. + * + * This class is package-private because it is likely to change often. + */ +abstract class Grammar { protected Union rootUnion; public HashMap follow = new HashMap(); @@ -18,7 +25,7 @@ abstract class Cache { public HashSet all = new HashSet(); abstract Topology emptyTopology(); - public Cache(Union root) { + public Grammar(Union root) { this.rootUnion = root; if (root != null) for(Sequence s : root) diff --git a/src/edu/berkeley/sbp/ParseFailed.java b/src/edu/berkeley/sbp/ParseFailed.java index b6a05e0..8e759a8 100644 --- a/src/edu/berkeley/sbp/ParseFailed.java +++ b/src/edu/berkeley/sbp/ParseFailed.java @@ -83,7 +83,7 @@ public class ParseFailed extends Exception { /* else if (p.pos-raise > 0) barf(sb, n, indent, false, 1); - if (!new Cache(null, null).possiblyEpsilon(p.element())) + if (!new Grammar(null, null).possiblyEpsilon(p.element())) break; */ p = p.next(); diff --git a/src/edu/berkeley/sbp/Parser.java b/src/edu/berkeley/sbp/Parser.java index 64ad67a..de96760 100644 --- a/src/edu/berkeley/sbp/Parser.java +++ b/src/edu/berkeley/sbp/Parser.java @@ -24,7 +24,7 @@ public abstract class Parser { public abstract Topology emptyTopology(); public String toString() { return pt.toString(); } - Cache cache() { return pt; } + Grammar cache() { return pt; } /** parse input, and return the shared packed parse forest (or throw an exception) */ public Forest parse(Input input) throws IOException, ParseFailed { @@ -76,7 +76,7 @@ public abstract class Parser { // Table ////////////////////////////////////////////////////////////////////////////// /** an SLR(1) parse table which may contain conflicts */ - class Table extends Cache { + class Table extends Grammar { /** the start state */ final State start; diff --git a/src/edu/berkeley/sbp/Sequence.java b/src/edu/berkeley/sbp/Sequence.java index 0ce5f55..968d78f 100644 --- a/src/edu/berkeley/sbp/Sequence.java +++ b/src/edu/berkeley/sbp/Sequence.java @@ -20,7 +20,7 @@ public abstract class Sequence implements Iterable, SequenceOrElement { final HashSet needs = new HashSet(); final HashSet hates = new HashSet(); - // FIXME: these are ugly -- migrate into Cache + // FIXME: these are ugly -- migrate into Grammar HashMap canNeed = new HashMap(); HashMap canKill = new HashMap(); @@ -104,7 +104,7 @@ public abstract class Sequence implements Iterable, SequenceOrElement { this.firstp = new Position(0, null); } - abstract Forest epsilonForm(Input.Region loc, Cache cache); + abstract Forest epsilonForm(Input.Region loc, Grammar cache); protected abstract Forest postReduce(Input.Region loc, Forest[] args, Position p); @@ -154,7 +154,7 @@ public abstract class Sequence implements Iterable, SequenceOrElement { // Position ///////////////////////////////////////////////////////////////////////////////// - final Forest rewrite(Input.Region loc, Cache cache) { + final Forest rewrite(Input.Region loc, Grammar cache) { if (this==firstp()) epsilonForm(loc, cache); for(int i=0; i, SequenceOrElement { public Forest postReduce(Input.Region loc, Forest[] args, Position p) { return (Forest)Forest.create(loc, result, null, false); } - Forest epsilonForm(Input.Region loc, Cache cache) { + Forest epsilonForm(Input.Region loc, Grammar cache) { return Forest.create(loc, result, null, false); } } @@ -230,7 +230,7 @@ public abstract class Sequence implements Iterable, SequenceOrElement { public Singleton(Element[] e, int idx) { super(e); this.idx = idx; } public Forest postReduce(Input.Region loc, Forest[] args, Position p) { return args[idx]; } Sequence _clone() { return new Singleton(elements,idx); } - Forest epsilonForm(Input.Region loc, Cache cache) { + Forest epsilonForm(Input.Region loc, Grammar cache) { return ((Union)elements[idx]).epsilonForm(loc, cache); } } @@ -251,7 +251,7 @@ public abstract class Sequence implements Iterable, SequenceOrElement { for(int i=0; i, SequenceOrElement { if (spacing) for(int i=0; i<50-len; i++) sb.append(' '); return sb; } - Forest epsilonForm(Input.Region loc, Cache cache) { + Forest epsilonForm(Input.Region loc, Grammar cache) { return Forest.create(loc, tag, new Forest[0], false); } } diff --git a/src/edu/berkeley/sbp/Union.java b/src/edu/berkeley/sbp/Union.java index c164262..fddb09b 100644 --- a/src/edu/berkeley/sbp/Union.java +++ b/src/edu/berkeley/sbp/Union.java @@ -74,7 +74,7 @@ public class Union extends Element implements Iterable { } /** the Forest which results from matching this Union against the empty string at region region */ - Forest epsilonForm(Input.Region region, Cache cache) { + Forest epsilonForm(Input.Region region, Grammar cache) { viewed = true; Forest.Many epsilonForm = new Forest.Many(); for(Sequence s : this) -- 1.7.10.4