From e74711e9cb411d80137ebd1f8d9b3bc9a0886f60 Mon Sep 17 00:00:00 2001 From: adam Date: Thu, 30 Mar 2006 14:03:09 -0500 Subject: [PATCH] checkpoint darcs-hash:20060330190309-5007d-f536654062e5431d8a49dc9fbacf8cf0994fc059.gz --- src/edu/berkeley/sbp/Atom.java | 9 +++++---- src/edu/berkeley/sbp/Input.java | 2 +- src/edu/berkeley/sbp/Parser.java | 4 ++-- src/edu/berkeley/sbp/misc/MetaGrammar.java | 2 ++ src/edu/berkeley/sbp/tib/Tib.java | 8 ++++---- 5 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/edu/berkeley/sbp/Atom.java b/src/edu/berkeley/sbp/Atom.java index 32e7f0f..6c7a25e 100644 --- a/src/edu/berkeley/sbp/Atom.java +++ b/src/edu/berkeley/sbp/Atom.java @@ -11,7 +11,7 @@ import edu.berkeley.sbp.*; public abstract class Atom extends Element implements Topology { protected abstract Topology top(); - public abstract String toString(); + public abstract String toString(); public StringBuffer toString(StringBuffer sb) { sb.append(this); return sb; } // Topology Thunks ////////////////////////////////////////////////////////////////////////////// @@ -28,9 +28,10 @@ public abstract class Atom extends Element implements Topology { public int hashCode() { return top().hashCode(); } public boolean equals(Object o) { return o != null && o instanceof Atom && ((Atom)o).top().equals(top()); } - // Subclasses ////////////////////////////////////////////////////////////////////////////// - - + /** if all expressions matching e are exactly one token + * long, attempt to return an Atom representing that token + * (undecidable in general; only works in trivial cases) + */ public static Topology toAtom(Element e) { if (e instanceof Atom) return (Atom)e; if (e instanceof Sequence) return ((Sequence)e).toAtom(); diff --git a/src/edu/berkeley/sbp/Input.java b/src/edu/berkeley/sbp/Input.java index a2c9baa..eeb3cc1 100644 --- a/src/edu/berkeley/sbp/Input.java +++ b/src/edu/berkeley/sbp/Input.java @@ -10,7 +10,7 @@ import edu.berkeley.sbp.util.*; public interface Input { /** returns the token just beyond the current location and advances beyond it */ - public Token next(int numstates, int resets, int waits) throws IOException; + public Token next() throws IOException; /** returns the location the input stream is currently at */ public Location getLocation(); diff --git a/src/edu/berkeley/sbp/Parser.java b/src/edu/berkeley/sbp/Parser.java index 31bd1b3..bbcb032 100644 --- a/src/edu/berkeley/sbp/Parser.java +++ b/src/edu/berkeley/sbp/Parser.java @@ -21,14 +21,14 @@ public abstract class Parser { public Forest parse(Input input) throws IOException, ParseFailed { GSS gss = new GSS(); Input.Location loc = input.getLocation(); - GSS.Phase current = gss.new Phase(null, this, null, input.next(1, 0, 0), loc, null); + GSS.Phase current = gss.new Phase(null, this, null, input.next(), loc, null); current.newNode(null, Forest.leaf(null, null, null), pt.start, true); int count = 1; for(;;) { loc = input.getLocation(); current.reduce(); Forest forest = current.token==null ? null : shiftToken((Tok)current.token, loc); - GSS.Phase next = gss.new Phase(current, this, current, input.next(count, gss.resets, gss.waits), loc, forest); + GSS.Phase next = gss.new Phase(current, this, current, input.next(), loc, forest); count = next.size(); if (current.isDone()) return (Forest)gss.finalResult; current = next; diff --git a/src/edu/berkeley/sbp/misc/MetaGrammar.java b/src/edu/berkeley/sbp/misc/MetaGrammar.java index bdb8096..5ea468d 100644 --- a/src/edu/berkeley/sbp/misc/MetaGrammar.java +++ b/src/edu/berkeley/sbp/misc/MetaGrammar.java @@ -527,6 +527,7 @@ public class MetaGrammar extends StringWalker { + // DO NOT EDIT STUFF BELOW: IT IS AUTOMATICALLY GENERATED new edu.berkeley.sbp.Tree(null, "grammar", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "=", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })}), new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "!", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }), @@ -1188,3 +1189,4 @@ new edu.berkeley.sbp.Tree(null, "grammar", new edu.berkeley.sbp.Tree[] { new edu + diff --git a/src/edu/berkeley/sbp/tib/Tib.java b/src/edu/berkeley/sbp/tib/Tib.java index a30e269..93f2ce1 100644 --- a/src/edu/berkeley/sbp/tib/Tib.java +++ b/src/edu/berkeley/sbp/tib/Tib.java @@ -53,8 +53,8 @@ public class Tib implements Input { boolean indenting = true; int indentation = 0; private ArrayList istack = new ArrayList(); - public Character next(int numstates, int resets, int waits) throws IOException { - Character ret = nextc(numstates, resets); + public Character next() throws IOException { + Character ret = nextc(); if (ret==null) return null; else if (ret==left) System.out.print("\033[31m{\033[0m"); else if (ret==right) System.out.print("\033[31m}\033[0m"); @@ -63,7 +63,7 @@ public class Tib implements Input { } Character waitingBrace = null; - public Character nextc(int numstates, int resets) throws IOException { + public Character nextc() throws IOException { char c; if (waitingBrace != null) { Character ret = waitingBrace; @@ -88,7 +88,7 @@ public class Tib implements Input { } if (indenting) { if (c==' ') { indentation++; return done(c); } - if (c=='\n') { indentation = 0; if (blank) return nextc(numstates, resets); blank = true; waiting = true; waitingChar='\n'; return '\n'; } + if (c=='\n') { indentation = 0; if (blank) return nextc(); blank = true; waiting = true; waitingChar='\n'; return '\n'; } int last = istack.size()==0 ? -1 : istack.get(istack.size()-1); if (indentation==last) { if (blank) { -- 1.7.10.4