From e87676acf584aa0cd6786f001b0c343631c8d2de Mon Sep 17 00:00:00 2001 From: adam Date: Thu, 14 Sep 2006 13:27:42 -0400 Subject: [PATCH] checkpoint darcs-hash:20060914172742-5007d-038c7d0cab6d86b285ec6a9df40f185fb87eb241.gz --- src/edu/berkeley/sbp/chr/CharInput.java | 54 +++++++++++++------------------ 1 file changed, 23 insertions(+), 31 deletions(-) diff --git a/src/edu/berkeley/sbp/chr/CharInput.java b/src/edu/berkeley/sbp/chr/CharInput.java index 10150d5..95609bc 100644 --- a/src/edu/berkeley/sbp/chr/CharInput.java +++ b/src/edu/berkeley/sbp/chr/CharInput.java @@ -82,8 +82,6 @@ public class CharInput extends Cartesian.Input { int indentation = -1; int lastIndentation = 0; - int queuedIndentation = 0; - char queuedCharacter = ' '; int delta = 0; public boolean isCR() { return cr; } @@ -102,25 +100,6 @@ public class CharInput extends Cartesian.Input { cr = false; - if (queuedIndentation < 0) { - queuedIndentation++; - return CharAtom.right; - } - if (queuedSpaces > 0) { - queuedSpaces--; - return ' '; - } - if (queuedIndentation > 0) { - queuedIndentation--; - return CharAtom.left; - } - - if (queuedCharacter != ' ') { - char ret = queuedCharacter; - queuedCharacter = ' '; - return ret; - } - int i = r.read(); if (i==-1) { /*System.err.print("\r...done \r"); */ @@ -138,14 +117,27 @@ public class CharInput extends Cartesian.Input { cr = c=='\n'; if (indent) - if (cr) { - indentation = 0; - } else if (c==' ' && indentation >= 0) { - indentation++; - } else if (indentation >= 0) { - //System.err.println("\r \rindent: " + (indentation - lastIndentation)); - redent(indentation - lastIndentation); - r.unread(c); + if (cr && ignore) { + ignore = false; + } else if (cr) { + while(true) { + indentation = 0; + do { i = r.read(); if (i==' ') indentation++; } while (i==' '); + if (i=='\n') { /* FIXME */ continue; } + if (i==-1) { /* FIXME */ } + if (indentation - lastIndentation > 0) { + r.unread('\n'); + for(int j=0; j { return c; } + private boolean ignore = false; + private void redent(int i) { if (i<0) { r.unread(CharAtom.right); redent(i+1); return; } if (i>0) { r.unread(CharAtom.left); redent(i-1); return; } } - int queuedSpaces = 0; - public String showRegion(Region rc) { if (cache == null) return null; Cartesian.Region r = (Cartesian.Region)rc; -- 1.7.10.4