checkpoint
authoradam <adam@megacz.com>
Sun, 2 Jul 2006 03:51:56 +0000 (23:51 -0400)
committeradam <adam@megacz.com>
Sun, 2 Jul 2006 03:51:56 +0000 (23:51 -0400)
darcs-hash:20060702035156-5007d-cfd15d52ed7d2e64f49a0b7841a1c3cf65b548ea.gz

src/edu/berkeley/sbp/Repeat.java
src/edu/berkeley/sbp/misc/Demo.java
src/edu/berkeley/sbp/misc/MetaGrammar.java
src/edu/berkeley/sbp/util/Reflection.java

index 89199c5..c85bfc6 100644 (file)
@@ -23,6 +23,7 @@ class Repeat extends Union {
         }
         if (zeroOkay) {
             add(new Sequence.RewritingSequence(tag, new Element[] { }, null));
+            //add(new Sequence.Constant.Empty());
             // FUGLY
             add(new Sequence.Singleton(Sequence.many1(e, separator, tag)));
         } else {
index 3174b62..638bf31 100644 (file)
@@ -242,6 +242,7 @@ public class Demo {
                         objects[i] = null;
                     }
                 }
+                System.err.println("input tree: " + t);
                 return plant(objects, map);
             }
         }
@@ -383,6 +384,7 @@ public class Demo {
                         System.err.println("setting a " + argTypes[i].getName() + " to " + Reflection.show(tgt));
                         args[i] = tgt;
                     }
+                System.err.println("invoking " + _method + " with " + Reflection.show(args));
                 return _method.invoke(null, args);
             } catch (Exception e) {
                 throw new RuntimeException(e);
@@ -419,8 +421,8 @@ public class Demo {
     }
 
     public static class MG {
-        public static @tag Grammar grammar(Grammar g) { return g; }
-        public static @nonterminal class Grammar {
+        //public static @tag Grammar grammar(Grammar g) { return g; }
+        public static @tag("grammar") class Grammar {
             public @arg("NonTerminal") NonTerminal[] nonterminals;
             public String toString() {
                 String ret = "[ ";
@@ -471,14 +473,14 @@ public class Demo {
         public static @tag("^")   void caret(String s) { }
         public static @tag("~")   void tilde(El e) { }
         public static @tag("^^")  void doublecaret(El e) { }
-        public static @tag("(")   void subexpression(/*Seq[][]*/Object rhs) { }
+        public static @tag("(")   void subexpression(Seq[][] rhs) { }
 
         public static @nonterminal("Word")    String word(String s) { return null; }
         public static @nonterminal("Quoted")  String quoted(String s) { return null; }
-        public static @nonterminal("escaped") String c(char c) { return null; }
-        public static @tag("\"\"")            String emptystring() { return null; }
-        public static @tag("\r")              String lf() { return null; }
-        public static @tag("\n")              String cr() { return null; }
+        public static @nonterminal("escaped") String c(char c) { return c+""; }
+        public static @tag("\"\"")            String emptystring() { return ""; }
+        public static @tag("\n")              String retur() { return "\n"; }
+        public static @tag("\r")              String lf() { return "\r"; }
     }
 
 }
index a284938..826087c 100644 (file)
@@ -210,6 +210,7 @@ public class MetaGrammar extends StringWalker {
                 else if (unwrap) ret = Sequence.unwrap(els, repeatTag(), drops);
                 else if (tag!=null) {
                     ret = resolveTag(tag, bc.currentNonTerminal==null ? null : bc.currentNonTerminal.name, els, labels, drops);
+                    System.err.println("resolvetag " + tag + " => " + ret);
                 } else {
                     int idx = -1;
                     for(int i=0; i<els.length; i++)
index fd43a45..c404ab5 100644 (file)
@@ -70,7 +70,7 @@ public final class Reflection {
         Object[] arr = (Object[])o;
         StringBuffer ret = new StringBuffer();
         ret.append(o.getClass().getComponentType().getName());
-        ret.append("[]:\n");
+        ret.append("["+arr.length+"]:\n");
         for(int i=0; i<arr.length; i++)
             ret.append(indent(show(arr[i]), 4) + "\n");
         return ret.toString();