X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Fmeta%2FMetaGrammarBindings.java;h=d33758c87374e7bb3818ff0e8fff7b2384fb869c;hp=b70ddb8dc5f462a81d6f548db577abc1a4737c0b;hb=f3b4ef0d81d572694905f4fe284cac6311a29ea4;hpb=c4b4207ce1be50359c6bd8abe1d657ff8ae8ad6e diff --git a/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java b/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java index b70ddb8..d33758c 100644 --- a/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java +++ b/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java @@ -16,6 +16,7 @@ public class MetaGrammarBindings { public static class GrammarNode extends HashMap { 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 red = (Tree.TreeFunctor)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); }