public override void ComputeLastPos(RegexpBuilder bld) { Left.ComputeLastPos(bld); Right.ComputeLastPos(bld); LastPos = (BitArray)Left.FirstPos.Clone(); LastPos.Or(Right.LastPos); }
public override void ComputeFollowPos(RegexpBuilder b) { Left.ComputeFollowPos(b); Right.ComputeFollowPos(b); FollowPos = (BitArray)Left.FollowPos.Clone(); FollowPos.Or(Right.FollowPos); }
public override void ComputeFirstPos(RegexpBuilder bld) { Left.ComputeFirstPos(bld); Right.ComputeFirstPos(bld); FirstPos = (BitArray)Left.FirstPos.Clone(); if (Left.Nullable) { FirstPos.Or(Right.FirstPos); } }
public override void ComputeLastPos(RegexpBuilder bld) { Left.ComputeLastPos(bld); Right.ComputeLastPos(bld); LastPos = (BitArray)Right.LastPos.Clone(); if (Right.Nullable) { LastPos.Or(Left.LastPos); } }
protected void DumpCore(StringBuilder sb) { sb.AppendFormat( "\tnull {3}\r\n" + "\tfirst {0}\r\n" + "\tlast {1}\r\n" + "\tfollow {2}\r\n", RegexpBuilder.DumpSet(FirstPos), RegexpBuilder.DumpSet(LastPos), RegexpBuilder.DumpSet(FollowPos), Nullable); }
public override void ComputeFollowPos(RegexpBuilder bld) { node.ComputeFollowPos(bld); FollowPos = node.FollowPos; for (int i = 0; i != LastPos.Length; ++i) { if (!LastPos[i]) { continue; } ByteNode ii = (ByteNode)bld.positions[i]; ii.FollowPos.Or(FirstPos); } }
public override void ComputeFollowPos(RegexpBuilder bld) { Left.ComputeFollowPos(bld); Right.ComputeFollowPos(bld); FollowPos = new BitArray(0); for (int i = 0; i != Left.LastPos.Length; ++i) { if (!Left.LastPos.Get(i)) { continue; } ByteNode ii = (ByteNode)bld.positions[i]; ii.FollowPos.Or(Right.FirstPos); } }
public override string ToString() { StringBuilder sb = new StringBuilder(); sb.AppendFormat("s{0} posn {1}", Index, RegexpBuilder.DumpSet(Positions)); if (Accepts) { sb.Append(" (acc)"); } sb.Append(" next:"); for (int i = 0; i != NextState.Length; ++i) { if (NextState[i] != null) { sb.AppendFormat(" {0:X2}->s{1}", i, NextState[i].Index); } } return(sb.ToString()); }
public abstract void ComputeLastPos(RegexpBuilder bld);
public override void ComputeLastPos(RegexpBuilder bld) { LastPos = new BitArray(bld.positions.Count); LastPos.Set(Position, true); }
public abstract void ComputeFollowPos(RegexpBuilder bld);
public override void ComputeFollowPos(RegexpBuilder b) { FollowPos = new BitArray(b.positions.Count); }
public override void ComputeLastPos(RegexpBuilder bld) { node.ComputeLastPos(bld); LastPos = (BitArray)node.LastPos.Clone(); }
public override void ComputeLastPos(RegexpBuilder bld) { node.ComputeLastPos(bld); LastPos = (BitArray) node.LastPos.Clone(); }
public override void ComputeFollowPos(RegexpBuilder bld) { Left.ComputeFollowPos(bld); Right.ComputeFollowPos(bld); FollowPos = new BitArray(0); for (int i = 0; i != Left.LastPos.Length; ++i) { if (!Left.LastPos.Get(i)) continue; ByteNode ii = (ByteNode) bld.positions[i]; ii.FollowPos.Or(Right.FirstPos); } }
public override void ComputeLastPos(RegexpBuilder bld) { Left.ComputeLastPos(bld); Right.ComputeLastPos(bld); LastPos = (BitArray) Right.LastPos.Clone(); if (Right.Nullable) { LastPos.Or(Left.LastPos); } }
public override void ComputeFirstPos(RegexpBuilder bld) { Left.ComputeFirstPos(bld); Right.ComputeFirstPos(bld); FirstPos = (BitArray) Left.FirstPos.Clone(); if (Left.Nullable) { FirstPos.Or(Right.FirstPos); } }
public override void ComputeFollowPos(RegexpBuilder bld) { node.ComputeFollowPos(bld); FollowPos = node.FollowPos; for (int i = 0; i != LastPos.Length; ++i) { if (!LastPos[i]) continue; ByteNode ii = (ByteNode) bld.positions[i]; ii.FollowPos.Or(FirstPos); } }
public static Regexp Compile(string s) { RegexpBuilder b = new RegexpBuilder(s); return(b.Build()); }
/// <summary> /// Compiles a scanner corresponding to the regular expression. /// </summary> /// <param name="s"></param> /// <returns>A scanner ready to use</returns> public static Regexp Compile(string s) { RegexpBuilder b = new RegexpBuilder(s); return b.Build(); }