public Element _rightparen_(Object e) { return SELF; }
public PreSequence _amp_(PreSequence p, Object[] o) {
- p.needs.add(new PreSequence(o, null, true).buildSequence(null, true, false));
+ p.and.add(new PreSequence(o, null, true).buildSequence(null, true, false));
return p;
}
public PreSequence _amp__tilde_(PreSequence p, Object[] o) {
- p.hates.add(new PreSequence(o, null, true).buildSequence(null, true, false));
+ p.not.add(new PreSequence(o, null, true).buildSequence(null, true, false));
return p;
}
public MetaGrammar grammar(Object o, Union[] u, Object x) { return this; }
public char _backslash_n() { return '\n'; }
public char _backslash_r() { return '\r'; }
- //public String literal(String s) { return s; }
-
- public Object literal(String s) {
- Element e = CharToken.string(s);
- return new MyDrop(e);
- //dropAll.add(e);
- //return e;
- }
-
- public Range range(char a) { return new Range(a, a); }
+ public Object literal(String s) { return new MyDrop(CharToken.string(s)); }
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 Range range(char a) { return new Range(a, a); }
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)
else ret.remove(r);
return CharToken.set(ret);
}
- public Element rangex(Object o, Object[] r) {
- Range.Set ret = o==null ? new Range.Set() : new Range.Set(new Range(true, true));
- if (r != null)
- for(Object aa : r) {
- Range range =
- aa instanceof Range
- ? (Range)aa
- : aa instanceof Character
- ? new Range(((Character)aa).charValue())
- : new Range(((String)aa).charAt(0));
- if (o==null) ret.add(range);
- else ret.remove(range);
- }
- return CharToken.set(ret);
- }
////////////////////////////////////////////////////////////////////////////////
if (s[i]==null) continue;
HashSet<Sequence> temp = new HashSet<Sequence>();
for(PreSequence pre : s[i]) {
- pre.hates.addAll(seqs);
+ pre.not.addAll(seqs);
Sequence seq = pre.buildSequence(n, false, dropAll);
temp.add(seq);
n.add(seq);
public char unescape(char c) { return StringUtil.unescapify("\\"+c).charAt(0); }
public PreSequence sequence(Object[] o) { return new PreSequence(o, null); }
- public static class PreBrace {
- public final Object[] o;
- public PreBrace(Object[] o) { this.o = o; }
- }
-
public PreSequence _equals__greater_(Object[] o, String s) { return new PreSequence(o, s); }
public PreSequence wrap(Object[] o) { return new PreSequence(o, ""); }
public PreSequence mwrap(Object[] o) { return new PreSequence(o, ""); }
return rewrite(o3);
}
+ public static class PreBrace {
+ public final Object[] o;
+ public PreBrace(Object[] o) { this.o = o; }
+ }
+
public static class Rep {
private final Element e;
private final Element s;
}
public static class PreSequence {
- public final HashSet<Sequence> needs = new HashSet<Sequence>();
- public final HashSet<Sequence> hates = new HashSet<Sequence>();
+ public final HashSet<Sequence> and = new HashSet<Sequence>();
+ public final HashSet<Sequence> not = new HashSet<Sequence>();
public /*final*/ String tag;
public final Object[] o;
public final boolean keeper;
}
public Sequence buildSequence(Union u) { return buildSequence(u, false, false); }
public Sequence buildSequence(Union u, boolean lame, boolean dropAll) {
- HashSet<Sequence> and = needs;
- HashSet<Sequence> not = hates;
for(Sequence s : and) u.add(s);
for(Sequence s : not) u.add(s);
HashSet<Sequence> set = new HashSet<Sequence>();