class Universe extends AnyRef
Represent the set of characters that is the union of the sets of characters of a group of regular expressions. Regex must belong to the same Universe to be able to make operations between them.
- Alphabetic
- By Inheritance
- Universe
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
- new Universe(parsedRegex: Seq[ParsedRegex])
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- val alphabet: Map[AbstractRange, Seq[CharInterval]]
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
-
def
collect(ast: Node): Seq[AbstractRange]
Regular expressions can have character classes and wildcards.
Regular expressions can have character classes and wildcards. In order to produce a NFA, they should be expanded to disjunctions. As the base alphabet is Unicode, just adding a wildcard implies a disjunction of more than one million code points. Same happens with negated character classes or normal classes with large ranges.
To prevent this, the sets are not expanded to all characters individually, but only to disjoint intervals.
Example:
[abc] -> a-c [efg] -> 0-c|h-MAX mno[efg] -> def(0-c|h-l|m|n|o|p-MAX) . -> 0-MAX
Care must be taken when the regex is meant to be used for an operation with another regex (such as intersection or difference). In this case, the sets must be disjoint across all the "universe"
This method collects the interval, so they can then be made disjoint.
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
Dregex is a Scala/JVM library that implements a regular expression engine using deterministic finite automata (DFA). The range of features supported is an middle ground between Perl-style (slow) engines and DFA-based ones. Yet it retains the linear matching time offered by the latter.