X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Fmisc%2FMetaGrammar.java;h=e9c4413eed6c6b1fd0103db6e96be35368c857a4;hp=73c6fdd4fcfceea9e90ae4218ace94fcd4e328dd;hb=bb4357ee026741cacecdfbfdcdd2d44699306536;hpb=03f91bd299c8c8724fe966f527b7410d2cea675d diff --git a/src/edu/berkeley/sbp/misc/MetaGrammar.java b/src/edu/berkeley/sbp/misc/MetaGrammar.java index 73c6fdd..e9c4413 100644 --- a/src/edu/berkeley/sbp/misc/MetaGrammar.java +++ b/src/edu/berkeley/sbp/misc/MetaGrammar.java @@ -50,6 +50,10 @@ public class MetaGrammar extends StringWalker { public static class Meta { public Object repeatTag() { return null; } + public Sequence tryResolveTag(String s, String nonTerminalName, Element[] els, Object[] labels, boolean [] drops) { + //return resolveTag(s, nonTerminalName, els, labels, drops); + return null; + } public Sequence resolveTag(String s, String nonTerminalName, Element[] els, Object[] labels, boolean [] drops) { return Sequence.rewritingSequence(s, els, labels, drops); } @@ -195,6 +199,9 @@ public class MetaGrammar extends StringWalker { boolean dropAll = false; if (tag!=null && tag.equals("[]")) unwrap = true; if (tag!=null && "()".equals(tag)) dropAll=true; + + NonTerminal old = bc.currentNonTerminal; + bc.currentNonTerminal = null; for(int i=0; i " + ret); } else { - int idx = -1; - for(int i=0; i t) { this.body = makeConjunct(t); } + public MetaTree(Conjunct c) { this.body = c; } public String toString() { return "{ " + body + " }"; } public Element build(BuildContext bc) { - return new Union("{}");// body.buildSequence(); + Union u = new Union(); + Union u2 = new Union(); + Sequence seq = body.buildSequence(bc); + u2.add(seq); + u.add(Sequence.singleton(new Element[] { CharRange.leftBrace, + new NonTerminalReference("ws").build(bc), + u2, + new NonTerminalReference("ws").build(bc), + CharRange.rightBrace } + , 2)); + //u.add(seq); + return u; } } - */ + public class MetaRange extends MetaClause { Range.Set range = new Range.Set(); public String toString() { return range.toString(); } @@ -371,6 +394,7 @@ public class MetaGrammar extends StringWalker { public class NonTerminalReference extends MetaClause { public String name; public NonTerminalReference(Tree name) { this.name = string(name); } + public NonTerminalReference(String name) { this.name = name; } public Element build(BuildContext bc) { return bc.build(name); } public String toString() { return name; } }