checkpoint
[sbp.git] / src / edu / berkeley / sbp / meta / MetaGrammarBindings.java
index b70ddb8..d33758c 100644 (file)
@@ -16,6 +16,7 @@ public class MetaGrammarBindings {
     public static class GrammarNode extends HashMap<String,NonTerminalNode> {
         public @bind.as("Grammar") GrammarNode(NonTerminalNode[] nonterminals) {
             for(NonTerminalNode nt : nonterminals) {
+                if (nt==null) continue;
                 if (this.get(nt.name)!=null)
                     throw new RuntimeException("duplicate definition of nonterminal \""+nt.name+"\"");
                 this.put(nt.name, nt);
@@ -62,6 +63,11 @@ public class MetaGrammarBindings {
         }
     }
 
+    public static @bind.as("#import") NonTerminalNode poundimport(String fileName) {
+        System.err.println("#import " + fileName);
+        return null;
+    }
+
     public static class NonTerminalNode extends UnionNode {
         public boolean rep;
         public String  name = null;
@@ -366,7 +372,7 @@ public class MetaGrammarBindings {
         public Context(Tree t, GrammarBindingResolver rm) {
             this.rm = rm;
             Tree.TreeFunctor<Object,Object> red = (Tree.TreeFunctor<Object,Object>)t.head();
-            this.grammar = (GrammarNode)red.invoke(t.children());
+            this.grammar = (GrammarNode)red.invoke(t);
         }
         public Union peek(String name) { return map.get(name); }
         public void  put(String name, Union u) { map.put(name, u); }