summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2010-12-29 01:52:23 +0000
committerPaul Phillips <paulp@improving.org>2010-12-29 01:52:23 +0000
commit6ae3eb1ad96270774e117e7931e48cd5ce98945a (patch)
tree5a85167bca58f1d37c540c726e7e15f85e7743d1 /src
parent969fd08a04cac5951d35e36ca639433355b5cf80 (diff)
downloadscala-6ae3eb1ad96270774e117e7931e48cd5ce98945a.tar.gz
scala-6ae3eb1ad96270774e117e7931e48cd5ce98945a.tar.bz2
scala-6ae3eb1ad96270774e117e7931e48cd5ce98945a.zip
Some accumulated cleanup done while profiling a...
Some accumulated cleanup done while profiling and reducing uses of length. No review.
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/ast/parser/SymbolicXMLBuilder.scala4
-rw-r--r--src/compiler/scala/tools/nsc/backend/ScalaPrimitives.scala9
-rw-r--r--src/compiler/scala/tools/nsc/backend/WorklistAlgorithm.scala4
-rw-r--r--src/compiler/scala/tools/nsc/backend/icode/Members.scala4
-rw-r--r--src/compiler/scala/tools/nsc/backend/icode/analysis/DataFlowAnalysis.scala11
-rw-r--r--src/compiler/scala/tools/nsc/backend/icode/analysis/Liveness.scala2
-rw-r--r--src/compiler/scala/tools/nsc/doc/html/page/Template.scala4
-rw-r--r--src/compiler/scala/tools/nsc/interpreter/ReflectionCompletion.scala2
-rw-r--r--src/compiler/scala/tools/nsc/interpreter/XMLCompletion.scala4
-rw-r--r--src/compiler/scala/tools/nsc/matching/ParallelMatching.scala4
-rw-r--r--src/compiler/scala/tools/nsc/util/ClassPath.scala5
-rw-r--r--src/library/scala/collection/IterableLike.scala4
-rw-r--r--src/library/scala/collection/IterableViewLike.scala3
-rw-r--r--src/library/scala/collection/LinearSeqLike.scala3
-rw-r--r--src/library/scala/collection/generic/TraversableForwarder.scala9
-rw-r--r--src/library/scala/collection/mutable/LazyBuilder.scala3
-rw-r--r--src/library/scala/reflect/Tree.scala3
-rw-r--r--src/library/scala/util/automata/BaseBerrySethi.scala6
-rw-r--r--src/library/scala/util/automata/DetWordAutom.scala20
-rw-r--r--src/library/scala/util/automata/NondetWordAutom.scala16
-rw-r--r--src/library/scala/util/automata/SubsetConstruction.scala24
-rw-r--r--src/library/scala/util/automata/WordBerrySethi.scala36
22 files changed, 68 insertions, 112 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/parser/SymbolicXMLBuilder.scala b/src/compiler/scala/tools/nsc/ast/parser/SymbolicXMLBuilder.scala
index 81bb5db286..a78e46ea84 100644
--- a/src/compiler/scala/tools/nsc/ast/parser/SymbolicXMLBuilder.scala
+++ b/src/compiler/scala/tools/nsc/ast/parser/SymbolicXMLBuilder.scala
@@ -6,7 +6,7 @@
package scala.tools.nsc
package ast.parser
-import collection.mutable.Map
+import scala.collection.{ mutable, immutable }
import xml.{ EntityRef, Text }
import xml.XML.{ xmlns }
import symtab.Flags.MUTABLE
@@ -184,7 +184,7 @@ abstract class SymbolicXMLBuilder(p: Parsers#Parser, preserveWS: Boolean) {
def unparsed(pos: Position, str: String): Tree =
atPos(pos)( New(_scala_xml_Unparsed, LL(const(str))) )
- def element(pos: Position, qname: String, attrMap: Map[String, Tree], args: Seq[Tree]): Tree = {
+ def element(pos: Position, qname: String, attrMap: mutable.Map[String, Tree], args: Seq[Tree]): Tree = {
def handleNamespaceBinding(pre: String, z: String): Tree = {
def mkAssign(t: Tree): Tree = Assign(
Ident(_tmpscope),
diff --git a/src/compiler/scala/tools/nsc/backend/ScalaPrimitives.scala b/src/compiler/scala/tools/nsc/backend/ScalaPrimitives.scala
index 2754a7b113..70ab35b13c 100644
--- a/src/compiler/scala/tools/nsc/backend/ScalaPrimitives.scala
+++ b/src/compiler/scala/tools/nsc/backend/ScalaPrimitives.scala
@@ -8,8 +8,7 @@ package scala.tools.nsc
package backend
import scala.tools.nsc.backend.icode._
-
-import scala.collection.mutable.{Map, HashMap}
+import scala.collection.{ mutable, immutable }
/**
* Scala primitive operations are represented as methods in Any and
@@ -203,13 +202,11 @@ abstract class ScalaPrimitives {
final val D2F = 265 // RunTime.d2f(x)
final val D2D = 266 // RunTime.d2d(x)
-
- private var primitives: Map[Symbol, Int] = _
+ private val primitives: mutable.Map[Symbol, Int] = new mutable.HashMap()
/** Initialize the primitive map */
def init {
- primitives = new HashMap()
-
+ primitives.clear()
// scala.Any
addPrimitive(Any_==, EQ)
addPrimitive(Any_!=, NE)
diff --git a/src/compiler/scala/tools/nsc/backend/WorklistAlgorithm.scala b/src/compiler/scala/tools/nsc/backend/WorklistAlgorithm.scala
index cc2c2b3517..93c37cd5df 100644
--- a/src/compiler/scala/tools/nsc/backend/WorklistAlgorithm.scala
+++ b/src/compiler/scala/tools/nsc/backend/WorklistAlgorithm.scala
@@ -8,7 +8,7 @@ package scala.tools.nsc
package backend
import scala.tools.nsc.ast._
-import scala.collection.mutable.Stack
+import scala.collection.{ mutable, immutable }
/**
* Simple implementation of a worklist algorithm. A processing
@@ -26,7 +26,7 @@ import scala.collection.mutable.Stack
*/
trait WorklistAlgorithm {
type Elem
- type WList = Stack[Elem]
+ type WList = mutable.Stack[Elem]
val worklist: WList
diff --git a/src/compiler/scala/tools/nsc/backend/icode/Members.scala b/src/compiler/scala/tools/nsc/backend/icode/Members.scala
index 6392131e58..fccab4a44c 100644
--- a/src/compiler/scala/tools/nsc/backend/icode/Members.scala
+++ b/src/compiler/scala/tools/nsc/backend/icode/Members.scala
@@ -9,7 +9,6 @@ package backend
package icode
import java.io.PrintWriter
-
import scala.collection.{ mutable, immutable }
import mutable.{ HashMap, ListBuffer }
import symtab.Flags.{ DEFERRED }
@@ -219,8 +218,7 @@ trait Members { self: ICodes =>
* This method should be most effective after heavy inlining.
*/
def normalize: Unit = if (this.code ne null) {
- import scala.collection.mutable.{Map, HashMap}
- val nextBlock: Map[BasicBlock, BasicBlock] = HashMap.empty
+ val nextBlock: mutable.Map[BasicBlock, BasicBlock] = mutable.HashMap.empty
for (b <- code.blocks.toList
if b.successors.length == 1;
val succ = b.successors.head;
diff --git a/src/compiler/scala/tools/nsc/backend/icode/analysis/DataFlowAnalysis.scala b/src/compiler/scala/tools/nsc/backend/icode/analysis/DataFlowAnalysis.scala
index dd9341ac91..c45983d5b6 100644
--- a/src/compiler/scala/tools/nsc/backend/icode/analysis/DataFlowAnalysis.scala
+++ b/src/compiler/scala/tools/nsc/backend/icode/analysis/DataFlowAnalysis.scala
@@ -7,7 +7,7 @@
package scala.tools.nsc
package backend.icode.analysis
-import scala.collection.mutable.{Map, HashMap, Set, HashSet, LinkedHashSet}
+import scala.collection.{ mutable, immutable }
/** A generic framework for data flow analysis.
*/
@@ -16,11 +16,10 @@ trait DataFlowAnalysis[L <: SemiLattice] {
type P <: ProgramPoint[P]
val lattice: L
- val worklist: Set[P] = new LinkedHashSet
-
- val in: Map[P, lattice.Elem] = new HashMap
- val out: Map[P, lattice.Elem] = new HashMap
- val visited: HashSet[P] = new HashSet
+ val worklist: mutable.Set[P] = new mutable.LinkedHashSet
+ val in: mutable.Map[P, lattice.Elem] = new mutable.HashMap
+ val out: mutable.Map[P, lattice.Elem] = new mutable.HashMap
+ val visited: mutable.HashSet[P] = new mutable.HashSet
/** collect statistics? */
var stat = true
diff --git a/src/compiler/scala/tools/nsc/backend/icode/analysis/Liveness.scala b/src/compiler/scala/tools/nsc/backend/icode/analysis/Liveness.scala
index 0e76044977..a211860754 100644
--- a/src/compiler/scala/tools/nsc/backend/icode/analysis/Liveness.scala
+++ b/src/compiler/scala/tools/nsc/backend/icode/analysis/Liveness.scala
@@ -9,7 +9,7 @@ package backend.icode
package analysis
import scala.collection.{ mutable, immutable }
-import scala.collection.immutable.{ Set, ListSet }
+import immutable.ListSet
/**
* Compute liveness information for local variables.
diff --git a/src/compiler/scala/tools/nsc/doc/html/page/Template.scala b/src/compiler/scala/tools/nsc/doc/html/page/Template.scala
index 9132d8754d..b6819e7a33 100644
--- a/src/compiler/scala/tools/nsc/doc/html/page/Template.scala
+++ b/src/compiler/scala/tools/nsc/doc/html/page/Template.scala
@@ -9,9 +9,7 @@ package html
package page
import model._
-
-import scala.xml.{NodeSeq, Text}
-import scala.collection.mutable.HashSet
+import scala.xml.{ NodeSeq, Text }
class Template(tpl: DocTemplateEntity) extends HtmlPage {
diff --git a/src/compiler/scala/tools/nsc/interpreter/ReflectionCompletion.scala b/src/compiler/scala/tools/nsc/interpreter/ReflectionCompletion.scala
index 70f1ffa5a7..440f2933f9 100644
--- a/src/compiler/scala/tools/nsc/interpreter/ReflectionCompletion.scala
+++ b/src/compiler/scala/tools/nsc/interpreter/ReflectionCompletion.scala
@@ -9,8 +9,6 @@ package interpreter
import java.lang.reflect
import reflect.{ Modifier, AccessibleObject }
import Modifier.{ isPrivate, isProtected, isStatic }
-import scala.reflect.NameTransformer
-import scala.collection.mutable.HashMap
import ReflectionCompletion._
trait ReflectionCompletion extends CompletionAware {
diff --git a/src/compiler/scala/tools/nsc/interpreter/XMLCompletion.scala b/src/compiler/scala/tools/nsc/interpreter/XMLCompletion.scala
index f2af57cc36..583e0adc58 100644
--- a/src/compiler/scala/tools/nsc/interpreter/XMLCompletion.scala
+++ b/src/compiler/scala/tools/nsc/interpreter/XMLCompletion.scala
@@ -8,10 +8,10 @@ package interpreter
import xml.{ XML, Group, Node, NodeSeq }
import XMLCompletion._
-import scala.collection.mutable.HashMap
+import scala.collection.{ mutable, immutable }
class XMLCompletion(root: Node) extends CompletionAware {
- private val nodeCache = new HashMap[String, Node]
+ private val nodeCache = new mutable.HashMap[String, Node]
private def getNode(s: String): Option[Node] = {
completions // make sure cache is populated
nodeCache get s
diff --git a/src/compiler/scala/tools/nsc/matching/ParallelMatching.scala b/src/compiler/scala/tools/nsc/matching/ParallelMatching.scala
index e20fdd7516..6d0100d705 100644
--- a/src/compiler/scala/tools/nsc/matching/ParallelMatching.scala
+++ b/src/compiler/scala/tools/nsc/matching/ParallelMatching.scala
@@ -7,10 +7,11 @@
package scala.tools.nsc
package matching
+import PartialFunction._
+import scala.collection.{ mutable, immutable }
import util.Position
import transform.ExplicitOuter
import symtab.Flags
-import collection._
import mutable.ListBuffer
import immutable.IntMap
import annotation.elidable
@@ -28,7 +29,6 @@ trait ParallelMatching extends ast.TreeDSL
import CODE._
import Types._
import Debug._
- import PartialFunction._
/** Transition **/
def toPats(xs: List[Tree]): List[Pattern] = xs map Pattern.apply
diff --git a/src/compiler/scala/tools/nsc/util/ClassPath.scala b/src/compiler/scala/tools/nsc/util/ClassPath.scala
index 4994542fdb..830fb9538e 100644
--- a/src/compiler/scala/tools/nsc/util/ClassPath.scala
+++ b/src/compiler/scala/tools/nsc/util/ClassPath.scala
@@ -7,10 +7,9 @@
package scala.tools.nsc
package util
-import java.io.{ File => JFile }
import java.net.URL
-
-import scala.collection.mutable.{ListBuffer, ArrayBuffer, HashSet => MutHashSet}
+import scala.collection.{ mutable, immutable }
+import mutable.ListBuffer
import io.{ File, Directory, Path, AbstractFile }
import scala.tools.util.StringOps.splitWhere
import Path.isJarOrZip
diff --git a/src/library/scala/collection/IterableLike.scala b/src/library/scala/collection/IterableLike.scala
index 00c2275ab5..70009391a2 100644
--- a/src/library/scala/collection/IterableLike.scala
+++ b/src/library/scala/collection/IterableLike.scala
@@ -6,10 +6,10 @@
** |/ **
\* */
-
package scala.collection
+
import generic._
-import immutable.{List, Stream}
+import immutable.{ List, Stream }
import annotation.unchecked.uncheckedVariance
/** A template trait for iterable collections of type `Iterable[A]`.
diff --git a/src/library/scala/collection/IterableViewLike.scala b/src/library/scala/collection/IterableViewLike.scala
index a7578e9a01..a580fd7097 100644
--- a/src/library/scala/collection/IterableViewLike.scala
+++ b/src/library/scala/collection/IterableViewLike.scala
@@ -6,12 +6,9 @@
** |/ **
\* */
-
-
package scala.collection
import generic._
-import collection.immutable.Stream
import TraversableView.NoBuilder
/** A template trait for non-strict views of iterable collections.
diff --git a/src/library/scala/collection/LinearSeqLike.scala b/src/library/scala/collection/LinearSeqLike.scala
index 8bf45348db..397e4131c7 100644
--- a/src/library/scala/collection/LinearSeqLike.scala
+++ b/src/library/scala/collection/LinearSeqLike.scala
@@ -7,10 +7,9 @@
\* */
-
package scala.collection
-import generic._
+import generic._
import mutable.ListBuffer
import immutable.List
import scala.util.control.Breaks._
diff --git a/src/library/scala/collection/generic/TraversableForwarder.scala b/src/library/scala/collection/generic/TraversableForwarder.scala
index 3995a5258b..ef42a7dcc0 100644
--- a/src/library/scala/collection/generic/TraversableForwarder.scala
+++ b/src/library/scala/collection/generic/TraversableForwarder.scala
@@ -6,14 +6,11 @@
** |/ **
\* */
-
-
package scala.collection.generic
-import scala.collection._
-import mutable.{Buffer, StringBuilder}
-import immutable.{List, Stream}
-// import immutable.{List, Nil, ::, Stream}
+import scala.collection._
+import mutable.{ Buffer, StringBuilder }
+import immutable.{ List, Stream }
/** <p>
* This trait implements a forwarder for traversable objects. It forwards
diff --git a/src/library/scala/collection/mutable/LazyBuilder.scala b/src/library/scala/collection/mutable/LazyBuilder.scala
index db6ca19f2b..aef47801c8 100644
--- a/src/library/scala/collection/mutable/LazyBuilder.scala
+++ b/src/library/scala/collection/mutable/LazyBuilder.scala
@@ -6,12 +6,9 @@
** |/ **
\* */
-
package scala.collection
package mutable
-import immutable.{List, Nil}
-
/** A builder that constructs its result lazily. Iterators or iterables to
* be added to this builder with `++=` are not evaluated until `result` is called.
*
diff --git a/src/library/scala/reflect/Tree.scala b/src/library/scala/reflect/Tree.scala
index ff7fc73c8a..7917d27166 100644
--- a/src/library/scala/reflect/Tree.scala
+++ b/src/library/scala/reflect/Tree.scala
@@ -7,11 +7,8 @@
\* */
-
package scala.reflect
-import collection.immutable.{List, Nil}
-
/** This type is required by the compiler and <b>should not be used in client code</b>. */
abstract class Tree
diff --git a/src/library/scala/util/automata/BaseBerrySethi.scala b/src/library/scala/util/automata/BaseBerrySethi.scala
index 63eb0aba9f..4e7c7c4f02 100644
--- a/src/library/scala/util/automata/BaseBerrySethi.scala
+++ b/src/library/scala/util/automata/BaseBerrySethi.scala
@@ -10,12 +10,8 @@
package scala.util.automata
-
import scala.util.regexp.{ Base }
-
import scala.collection.{ mutable, immutable }
-import mutable.{ HashMap }
-import immutable.{ Set }
// todo: replace global variable pos with acc
@@ -30,7 +26,7 @@ abstract class BaseBerrySethi {
protected var pos = 0
// results which hold all info for the NondetWordAutomaton
- protected var follow: HashMap[Int, Set[Int]] = _
+ protected var follow: mutable.HashMap[Int, Set[Int]] = _
protected var finalTag: Int = _
diff --git a/src/library/scala/util/automata/DetWordAutom.scala b/src/library/scala/util/automata/DetWordAutom.scala
index e1e19589c2..0af49e9d40 100644
--- a/src/library/scala/util/automata/DetWordAutom.scala
+++ b/src/library/scala/util/automata/DetWordAutom.scala
@@ -6,12 +6,9 @@
** |/ **
\* */
-
-
package scala.util.automata
-
-import scala.collection.{Set, Map}
+import scala.collection.{ mutable, immutable }
/** A deterministic automaton. States are integers, where
* 0 is always the only initial state. Transitions are represented
@@ -24,21 +21,14 @@ import scala.collection.{Set, Map}
* @version 1.0
*/
abstract class DetWordAutom[T <: AnyRef] {
-
val nstates: Int
val finals: Array[Int]
- val delta: Array[Map[T,Int]]
+ val delta: Array[mutable.Map[T, Int]]
val default: Array[Int]
- def isFinal(q: Int) = finals(q) != 0
- def isSink(q: Int) = delta(q).isEmpty && default(q) == q
-
- def next(q: Int, label: T) = {
- delta(q).get(label) match {
- case Some(p) => p
- case _ => default(q)
- }
- }
+ def isFinal(q: Int) = finals(q) != 0
+ def isSink(q: Int) = delta(q).isEmpty && default(q) == q
+ def next(q: Int, label: T) = delta(q).getOrElse(label, default(q))
override def toString() = {
val sb = new StringBuilder("[DetWordAutom nstates=")
diff --git a/src/library/scala/util/automata/NondetWordAutom.scala b/src/library/scala/util/automata/NondetWordAutom.scala
index 4434ed395d..ed3da00832 100644
--- a/src/library/scala/util/automata/NondetWordAutom.scala
+++ b/src/library/scala/util/automata/NondetWordAutom.scala
@@ -7,11 +7,9 @@
\* */
-
package scala.util.automata
-import scala.collection.{ immutable, mutable, Set, Seq, Map }
-import immutable.{ BitSet }
+import scala.collection.{ immutable, mutable }
/** A nondeterministic automaton. States are integers, where
* 0 is always the only initial state. Transitions are represented
@@ -20,13 +18,13 @@ import immutable.{ BitSet }
* All states are reachable. Accepting states are those for which
* the partial function 'finals' is defined.
*/
-abstract class NondetWordAutom[T <: AnyRef]
-{
+abstract class NondetWordAutom[T <: AnyRef] {
+ import immutable.BitSet
+
val nstates: Int
val labels: Seq[T]
-
val finals: Array[Int] // 0 means not final
- val delta: Array[Map[T, BitSet]]
+ val delta: Array[mutable.Map[T, BitSet]]
val default: Array[BitSet]
/** returns true if the state is final */
@@ -41,10 +39,10 @@ abstract class NondetWordAutom[T <: AnyRef]
/** returns true if there are no accepting states */
final def isEmpty = (0 until nstates) forall (x => !isFinal(x))
- /** returns a bitset with the next states for given state and label */
+ /** returns a BitSet with the next states for given state and label */
def next(q: Int, a: T): BitSet = delta(q).getOrElse(a, default(q))
- /** returns a bitset with the next states for given state and label */
+ /** returns a BitSet with the next states for given state and label */
def next(Q: BitSet, a: T): BitSet = next(Q, next(_, a))
def nextDefault(Q: BitSet): BitSet = next(Q, default)
diff --git a/src/library/scala/util/automata/SubsetConstruction.scala b/src/library/scala/util/automata/SubsetConstruction.scala
index d5b1a19083..5b5df33b11 100644
--- a/src/library/scala/util/automata/SubsetConstruction.scala
+++ b/src/library/scala/util/automata/SubsetConstruction.scala
@@ -6,21 +6,21 @@
** |/ **
\* */
-
package scala.util.automata
+import scala.collection.{ mutable, immutable }
+
class SubsetConstruction[T <: AnyRef](val nfa: NondetWordAutom[T]) {
import nfa.labels
- import collection.{ mutable, Map }
- import collection.immutable.BitSet
+ import immutable.BitSet
def selectTag(Q: BitSet, finals: Array[Int]) =
Q map finals filter (_ > 0) min
def determinize: DetWordAutom[T] = {
// for assigning numbers to bitsets
- var indexMap = Map[BitSet, Int]()
- var invIndexMap = Map[Int, BitSet]()
+ var indexMap = collection.Map[BitSet, Int]()
+ var invIndexMap = collection.Map[Int, BitSet]()
var ix = 0
// we compute the dfa with states = bitsets
@@ -29,10 +29,10 @@ class SubsetConstruction[T <: AnyRef](val nfa: NondetWordAutom[T]) {
var states = Set(q0, sink) // initial set of sets
val delta = new mutable.HashMap[BitSet, mutable.HashMap[T, BitSet]]
- var deftrans = Map(q0 -> sink, sink -> sink) // initial transitions
- var finals: Map[BitSet, Int] = Map()
-
+ var deftrans = mutable.Map(q0 -> sink, sink -> sink) // initial transitions
+ var finals: mutable.Map[BitSet, Int] = mutable.Map()
val rest = new mutable.Stack[BitSet]
+
rest.push(sink, q0)
def addFinal(q: BitSet) {
@@ -40,8 +40,8 @@ class SubsetConstruction[T <: AnyRef](val nfa: NondetWordAutom[T]) {
finals = finals.updated(q, selectTag(q, nfa.finals))
}
def add(Q: BitSet) {
- if (!states.contains(Q)) {
- states = states + Q
+ if (!states(Q)) {
+ states += Q
rest push Q
addFinal(Q)
}
@@ -74,7 +74,7 @@ class SubsetConstruction[T <: AnyRef](val nfa: NondetWordAutom[T]) {
// create DetWordAutom, using indices instead of sets
val nstatesR = states.size
- val deltaR = new Array[Map[T,Int]](nstatesR)
+ val deltaR = new Array[mutable.Map[T, Int]](nstatesR)
val defaultR = new Array[Int](nstatesR)
val finalsR = new Array[Int](nstatesR)
@@ -83,7 +83,7 @@ class SubsetConstruction[T <: AnyRef](val nfa: NondetWordAutom[T]) {
val trans = delta(Q)
val transDef = deftrans(Q)
val qDef = indexMap(transDef)
- val ntrans = new mutable.HashMap[T,Int]()
+ val ntrans = new mutable.HashMap[T, Int]()
for ((label, value) <- trans) {
val p = indexMap(value)
diff --git a/src/library/scala/util/automata/WordBerrySethi.scala b/src/library/scala/util/automata/WordBerrySethi.scala
index 4a41cbbf5a..26f48441d8 100644
--- a/src/library/scala/util/automata/WordBerrySethi.scala
+++ b/src/library/scala/util/automata/WordBerrySethi.scala
@@ -10,8 +10,7 @@
package scala.util.automata
-import scala.collection.{ immutable, mutable, Map }
-import immutable.{ Set }
+import scala.collection.{ immutable, mutable }
import mutable.{ HashSet, HashMap }
import scala.util.regexp.WordExp
@@ -25,17 +24,14 @@ import scala.util.regexp.WordExp
abstract class WordBerrySethi extends BaseBerrySethi {
override val lang: WordExp
- import lang.{ Alt, Eps, Letter, Meta, RegExp, Sequ, Star }
+ import lang.{ Alt, Eps, Letter, Meta, RegExp, Sequ, Star, _labelT }
- protected var labels: HashSet[lang._labelT] = _
+ protected var labels: HashSet[_labelT] = _
// don't let this fool you, only labelAt is a real, surjective mapping
- protected var labelAt: immutable.Map[Int, lang._labelT] = _ // new alphabet "gamma"
-
- protected var deltaq: Array[HashMap[lang._labelT, List[Int]]] = _ // delta
-
- protected var defaultq: Array[List[Int]] = _ // default transitions
-
- protected var initials: Set[Int] = _
+ protected var labelAt: Map[Int, _labelT] = _ // new alphabet "gamma"
+ protected var deltaq: Array[HashMap[_labelT, List[Int]]] = _ // delta
+ protected var defaultq: Array[List[Int]] = _ // default transitions
+ protected var initials: Set[Int] = _
/** Computes <code>first(r)</code> where the word regexp <code>r</code>.
*
@@ -75,13 +71,13 @@ abstract class WordBerrySethi extends BaseBerrySethi {
*/
/** called at the leaves of the regexp */
- protected def seenLabel(r: RegExp, i: Int, label: lang._labelT) {
+ protected def seenLabel(r: RegExp, i: Int, label: _labelT) {
labelAt = labelAt.updated(i, label)
this.labels += label
}
// overridden in BindingBerrySethi
- protected def seenLabel(r: RegExp, label: lang._labelT): Int = {
+ protected def seenLabel(r: RegExp, label: _labelT): Int = {
pos += 1
seenLabel(r, pos, label)
pos
@@ -95,7 +91,7 @@ abstract class WordBerrySethi extends BaseBerrySethi {
}
- protected def makeTransition(src: Int, dest: Int, label: lang._labelT) {
+ protected def makeTransition(src: Int, dest: Int, label: _labelT) {
val q = deltaq(src)
q.update(label, dest :: q.getOrElse(label, Nil))
}
@@ -114,11 +110,11 @@ abstract class WordBerrySethi extends BaseBerrySethi {
protected def initializeAutom() {
finals = immutable.Map.empty[Int, Int] // final states
- deltaq = new Array[HashMap[lang._labelT, List[Int]]](pos) // delta
+ deltaq = new Array[HashMap[_labelT, List[Int]]](pos) // delta
defaultq = new Array[List[Int]](pos) // default transitions
for (j <- 0 until pos) {
- deltaq(j) = HashMap[lang._labelT, List[Int]]()
+ deltaq(j) = HashMap[_labelT, List[Int]]()
defaultq(j) = Nil
}
}
@@ -129,7 +125,7 @@ abstract class WordBerrySethi extends BaseBerrySethi {
else makeTransition(j, k, labelAt(k))
}
- def automatonFrom(pat: RegExp, finalTag: Int): NondetWordAutom[lang._labelT] = {
+ def automatonFrom(pat: RegExp, finalTag: Int): NondetWordAutom[_labelT] = {
this.finalTag = finalTag
pat match {
@@ -150,14 +146,14 @@ abstract class WordBerrySethi extends BaseBerrySethi {
val finalsArr = 0 until pos map (k => finals.getOrElse(k, 0)) toArray // 0 == not final
val initialsArr = initials.toArray
- val deltaArr: Array[Map[lang._labelT, immutable.BitSet]] =
+ val deltaArr: Array[mutable.Map[_labelT, immutable.BitSet]] =
(0 until pos map { x =>
HashMap(delta1(x).toSeq map { case (k, v) => k -> immutable.BitSet(v: _*) } : _*)
- }) toArray
+ }).toArray
val defaultArr = 0 until pos map (k => immutable.BitSet(defaultq(k): _*)) toArray
- new NondetWordAutom[lang._labelT] {
+ new NondetWordAutom[_labelT] {
val nstates = pos
val labels = WordBerrySethi.this.labels.toList
val initials = initialsArr