private String startSymbol;
     private boolean strings;
 
-    private Element  set(Range.Set r) { return CharToken.set(r); }
-    private Element  string(String s) { return CharToken.string(s); }
-    private Topology top()            { return CharToken.top(); }
-    private Atom     leftBrace()      { return CharToken.leftBrace; }
-    private Atom     rightBrace()     { return CharToken.rightBrace; }
+    private Element  set(Range.Set r) { if (strings) throw new Error(); return CharToken.set(r); }
+    private Element  string(String s) { return strings ? StringToken.string(s) : CharToken.string(s); }
+    private Atom     leftBrace()      { return strings ? StringToken.leftBrace : CharToken.leftBrace; }
+    private Atom     rightBrace()     { return strings ? StringToken.rightBrace : CharToken.rightBrace; }
 
     public MetaGrammar() { this("s", false); }
     public MetaGrammar(String s) { this(s, false); }