checkpoint
authoradam <adam@megacz.com>
Wed, 14 Dec 2005 05:27:53 +0000 (00:27 -0500)
committeradam <adam@megacz.com>
Wed, 14 Dec 2005 05:27:53 +0000 (00:27 -0500)
darcs-hash:20051214052753-5007d-bbff8372273ba526f90256c6660b910919fb512a.gz

src/edu/berkeley/sbp/misc/MetaGrammar.java
tests/meta.g

index d1ec416..eb4a34f 100644 (file)
@@ -28,7 +28,6 @@ public class MetaGrammar extends ReflectiveWalker {
     // MetaGrammar //////////////////////////////////////////////////////////////////////////////
 
     public Object      _star_(Element r)                                              { return new Rep(r, null, false, true); }
-    public Element     _leftbracket_(Object o, Object[] args)                         { return rangex(o==null || !(o instanceof Character) ? null : o, args); }
     public Union       _colon__colon__equals_(String s, PreSequence[][] p)            { return nonTerminalZ(s, p); }
     public Union       _bang__colon__colon__equals_(String s, PreSequence[][] p)      { return nonTerminalZ(s, p, true); }
     public Union       _colon__colon__equals_(boolean q, String s, PreSequence[][] p) { return nonTerminalZ(s, p, q); }
@@ -100,6 +99,8 @@ public class MetaGrammar extends ReflectiveWalker {
     public Range     _minus_(char a, char b) { return new Range(a, b); }
     public Element   rangesx(Range[] rr) { return ranges("~", rr); }
     public Element   ranges(Range[] rr) { return ranges(null, rr); }
+    public Element   _leftbracket_       (Range[] rr) { return ranges(null, rr); }
+    public Element   _leftbracket__tilde_(Range[] rr) { return ranges("~",  rr); }
     public Element   ranges(Object o, Range[] rr) {
         Range.Set ret = !"~".equals(o+"") ? new Range.Set() : new Range.Set(new Range(true, true));
         if (rr != null)
index f709a77..975e855 100644 (file)
@@ -31,8 +31,8 @@ range    ::= ec          => "range"
 e        ::= word                             => "nonTerminalY"
            |    [(][)] => "epsilon"
            |    ^"{" alternatives "}"   /ws
-           |     "["  (range*) "]" => "ranges"
-           |     "[~" (range*) "]" => "rangesx"
+           |    ^"["  (range*) "]"
+           |    ^"[~" (range*) "]"
            |  e ^"+/" e                 /ws
            |  e ^"*/" e                 /ws
            |  e ^"?"                    /ws