checkpoint
[sbp.git] / src / edu / berkeley / sbp / meta / MetaGrammarBindings.java
index 5168c34..ca253f1 100644 (file)
@@ -11,6 +11,8 @@ import java.io.*;
 
 /** The java classes typically used to represent a parsed grammar AST */
 public class MetaGrammarBindings {
+
+    /** A grammar (a set of nonterminals) */
     public static class Grammar extends HashMap<String,NonTerminal> {
         public @bind Grammar(NonTerminal[] nonterminals) {
             for(NonTerminal nt : nonterminals) this.put(nt.name, nt); }
@@ -20,6 +22,7 @@ public class MetaGrammarBindings {
             return ret + " ]";
         }
     }
+
     public abstract static class Un extends El {
         public Seq[][] sequences;
         public void build(MetaGrammar.Context cx, Union u) {
@@ -42,6 +45,7 @@ public class MetaGrammarBindings {
             }
         }
     }
+
     public static class NonTerminal extends Un {
         public String  name = null;
         public @bind NonTerminal(@bind.arg String name,
@@ -63,10 +67,9 @@ public class MetaGrammarBindings {
         }
     }
 
-    //public static @bind.as void range(char c) { }
     public static class Range {
-        public @bind.as("range") Range(char only) { first = only; last = only; }
-        public @bind.as("-")     Range(char first, char last) { this.first = first; this.last = last; }
+        public @bind Range(char only) { first = only; last = only; }
+        public @bind Range(char first, char last) { this.first = first; this.last = last; }
         public char first;
         public char last;
     }
@@ -181,15 +184,13 @@ public class MetaGrammarBindings {
     public static @bind.as(")")   void close(String foo)                 { throw new Error("not supported"); }
     public static @bind.as("()")  El   epsilon()                         { return new Constant(Union.epsilon); }
 
-    public static @bind.as("nonTerminal") class NonTerminalReference extends El {
+    public static @bind class NonTerminalReference extends El {
         public @bind.arg String nonTerminal;
-        public Element build(MetaGrammar.Context cx) {
-            return cx.get(nonTerminal);
-        }
+        public Element build(MetaGrammar.Context cx) { return cx.get(nonTerminal); }
     }
 
-    public static class StringLiteral        extends Constant {
-        public @bind.as("literal") StringLiteral(String string) { super(CharRange.string(string)); }
+    public static class Literal extends Constant {
+        public @bind Literal(@bind.arg String string) { super(CharRange.string(string)); }
         public boolean drop() { return true; }
     }