From: adam Date: Tue, 23 Oct 2007 07:28:14 +0000 (-0400) Subject: better support for \\t X-Git-Url: http://git.megacz.com/?p=sbp.git;a=commitdiff_plain;h=14b3d2ee6a2d2ef84628e541ec291961f2061a5a;hp=a52082e6bfc788b85ab34daa7802789d532c83ee better support for \\t darcs-hash:20071023072814-5007d-830767df0a9de1c62e62a490bb7caf8c2a1405a3.gz --- diff --git a/src/edu/berkeley/sbp/chr/CharAtom.java b/src/edu/berkeley/sbp/chr/CharAtom.java index 7774283..3206269 100644 --- a/src/edu/berkeley/sbp/chr/CharAtom.java +++ b/src/edu/berkeley/sbp/chr/CharAtom.java @@ -34,7 +34,7 @@ public class CharAtom extends Atom { 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 = diff --git a/src/edu/berkeley/sbp/chr/CharInput.java b/src/edu/berkeley/sbp/chr/CharInput.java index 385d0a1..e4ac550 100644 --- a/src/edu/berkeley/sbp/chr/CharInput.java +++ b/src/edu/berkeley/sbp/chr/CharInput.java @@ -165,7 +165,7 @@ public class CharInput extends Cartesian.Input { 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) { diff --git a/src/edu/berkeley/sbp/chr/CharTopology.java b/src/edu/berkeley/sbp/chr/CharTopology.java index 4f1bb31..c4360d9 100644 --- a/src/edu/berkeley/sbp/chr/CharTopology.java +++ b/src/edu/berkeley/sbp/chr/CharTopology.java @@ -40,7 +40,7 @@ public class CharTopology extends IntegerTopology implements Functor< 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"); } } diff --git a/src/edu/berkeley/sbp/meta/GrammarAST.java b/src/edu/berkeley/sbp/meta/GrammarAST.java index ceb126a..ed8fe94 100644 --- a/src/edu/berkeley/sbp/meta/GrammarAST.java +++ b/src/edu/berkeley/sbp/meta/GrammarAST.java @@ -137,6 +137,7 @@ public class GrammarAST { } 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")) diff --git a/src/edu/berkeley/sbp/meta/MetaGrammar.java b/src/edu/berkeley/sbp/meta/MetaGrammar.java index 70a7c4a..e35b389 100644 --- a/src/edu/berkeley/sbp/meta/MetaGrammar.java +++ b/src/edu/berkeley/sbp/meta/MetaGrammar.java @@ -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[] { }), @@ -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, "\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, "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, "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, "\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[] { })})}), @@ -950,3 +994,41 @@ new edu.berkeley.sbp.Tree(null, "Grammar", new edu.berkeley.sbp.Tree[] { new edu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/edu/berkeley/sbp/meta/meta.g b/src/edu/berkeley/sbp/meta/meta.g index e97f813..a468d32 100644 --- a/src/edu/berkeley/sbp/meta/meta.g +++ b/src/edu/berkeley/sbp/meta/meta.g @@ -68,7 +68,8 @@ ec = ~[\-\]\\<>] | 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