better support for \\t
authoradam <adam@megacz.com>
Tue, 23 Oct 2007 07:28:14 +0000 (03:28 -0400)
committeradam <adam@megacz.com>
Tue, 23 Oct 2007 07:28:14 +0000 (03:28 -0400)
darcs-hash:20071023072814-5007d-830767df0a9de1c62e62a490bb7caf8c2a1405a3.gz

src/edu/berkeley/sbp/chr/CharAtom.java
src/edu/berkeley/sbp/chr/CharInput.java
src/edu/berkeley/sbp/chr/CharTopology.java
src/edu/berkeley/sbp/meta/GrammarAST.java
src/edu/berkeley/sbp/meta/MetaGrammar.java
src/edu/berkeley/sbp/meta/meta.g

index 7774283..3206269 100644 (file)
@@ -34,7 +34,7 @@ public class CharAtom extends Atom<Character> {
     public static Element string(String s) { return string(s, true); }
     public static Element string(String s, boolean share) {
         if (share && s.length() == 0) return emptyString;
     public static Element string(String s) { return string(s, true); }
     public static Element string(String s, boolean share) {
         if (share && s.length() == 0) return emptyString;
-        final String escapified = "\""+StringUtil.escapify(s, "\"\r\n\\")+"\"";
+        final String escapified = "\""+StringUtil.escapify(s, "\"\r\t\n\\")+"\"";
         Element ret;
         if (share && s.length() == 1) {
             ret =
         Element ret;
         if (share && s.length() == 1) {
             ret =
index 385d0a1..e4ac550 100644 (file)
@@ -165,7 +165,7 @@ public class CharInput extends Cartesian.Input<Character> {
         else ret = cachesubstring(start, start+(maxLength/2-5)) +
                  "..." +
                  cachesubstring(end-(maxLength/2-5), end);
         else ret = cachesubstring(start, start+(maxLength/2-5)) +
                  "..." +
                  cachesubstring(end-(maxLength/2-5), end);
-        return StringUtil.escapify(ret, "\n\r");
+        return StringUtil.escapify(ret, "\n\r\t");
     }
 
     private String cachesubstring(int start, int end) {
     }
 
     private String cachesubstring(int start, int end) {
index 4f1bb31..c4360d9 100644 (file)
@@ -40,7 +40,7 @@ public class CharTopology extends IntegerTopology<Character> implements Functor<
     private String esc(char c) {
         if (c==CharAtom.left) return ">>";
         if (c==CharAtom.right) return "<<";
     private String esc(char c) {
         if (c==CharAtom.left) return ">>";
         if (c==CharAtom.right) return "<<";
-        return StringUtil.escapify(c+"", "[]-~\\\"\'\n\r");
+        return StringUtil.escapify(c+"", "[]-~\\\"\'\n\r\t");
     }
 
 }
     }
 
 }
index ceb126a..ed8fe94 100644 (file)
@@ -137,6 +137,7 @@ public class GrammarAST {
         }
         if (head.equals("\"\"")) return "";
         if (head.equals("\n"))   return "\n";
         }
         if (head.equals("\"\"")) return "";
         if (head.equals("\n"))   return "\n";
+        if (head.equals("\t"))   return "\t";
         if (head.equals("\r"))   return "\r";
         if (head.equals("SubGrammar")) return GrammarAST.buildFromAST(t.child(0), "s", resolver);
         if (head.equals("NonTerminal"))
         if (head.equals("\r"))   return "\r";
         if (head.equals("SubGrammar")) return GrammarAST.buildFromAST(t.child(0), "s", resolver);
         if (head.equals("NonTerminal"))
index 70a7c4a..e35b389 100644 (file)
@@ -175,6 +175,44 @@ class MetaGrammar {
 
 
 
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
         // 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, "NonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })}),
         new edu.berkeley.sbp.Tree(null, "RHS", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
         // 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, "NonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })}),
         new edu.berkeley.sbp.Tree(null, "RHS", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
@@ -803,16 +841,22 @@ new edu.berkeley.sbp.Tree(null, "Grammar", new edu.berkeley.sbp.Tree[] { new edu
         new edu.berkeley.sbp.Tree(null, "::", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\r", new edu.berkeley.sbp.Tree[] { })}),
         new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\\", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { })})})})}),
         new edu.berkeley.sbp.Tree(null, "::", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\r", new edu.berkeley.sbp.Tree[] { })}),
         new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\\", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { })})})})}),
+        new edu.berkeley.sbp.Tree(null, "::", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\t", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\\", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { })})})})}),
         new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\\", new edu.berkeley.sbp.Tree[] { })})}),
         new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { })}),
         new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\\", new edu.berkeley.sbp.Tree[] { })})}),
         new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { })}),
-        new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { })})})})})})})}),
+        new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { })})})})})})})}),
         new edu.berkeley.sbp.Tree(null, "DropNT", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })}),
         new edu.berkeley.sbp.Tree(null, "RHS", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "**", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, " ", new edu.berkeley.sbp.Tree[] { })}),
         new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\r", new edu.berkeley.sbp.Tree[] { })}),
         new edu.berkeley.sbp.Tree(null, "DropNT", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })}),
         new edu.berkeley.sbp.Tree(null, "RHS", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "**", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, " ", new edu.berkeley.sbp.Tree[] { })}),
         new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\r", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\t", new edu.berkeley.sbp.Tree[] { })}),
         new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\n", new edu.berkeley.sbp.Tree[] { })})})})}),
         new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "**", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, " ", new edu.berkeley.sbp.Tree[] { })}),
         new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\r", new edu.berkeley.sbp.Tree[] { })}),
         new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\n", new edu.berkeley.sbp.Tree[] { })})})})}),
         new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "**", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, " ", new edu.berkeley.sbp.Tree[] { })}),
         new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\r", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\t", new edu.berkeley.sbp.Tree[] { })}),
         new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\n", new edu.berkeley.sbp.Tree[] { })})})}),
         new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { })})}),
         new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\n", new edu.berkeley.sbp.Tree[] { })})})}),
         new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { })})}),
@@ -950,3 +994,41 @@ new edu.berkeley.sbp.Tree(null, "Grammar", new edu.berkeley.sbp.Tree[] { new edu
 
 
 
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
index e97f813..a468d32 100644 (file)
@@ -68,7 +68,8 @@ ec            = ~[\-\]\\<>]
               | escaped
 escaped       = "\n"::  "\\n"
               | "\r"::  "\\r"
               | escaped
 escaped       = "\n"::  "\\n"
               | "\r"::  "\\r"
-              |         "\\" ~[nr]
+              | "\t"::  "\\t"
+              |         "\\" ~[nrt]
 
 
-ws!          = [ \r\n]**
-             | [ \r\n]** "//" ~[\n]* "\n" ws
+ws!          = [ \r\t\n]**
+             | [ \r\t\n]** "//" ~[\n]* "\n" ws