Type Members
-
abstract
class
BinderEnv extends AnyRef
-
-
case class
BoundElement[boundElement <: NameElement](el: boundElement, scope: Scope[boundElement]) extends NameElement with Proxy with BindingSensitive with Product with Serializable
-
trait
Element extends Positional
-
trait
Mappable[T] extends AnyRef
-
trait
Mapper extends AnyRef
-
-
trait
ReturnAndDo[T] extends AnyRef
-
class
Scope[binderType <: NameElement] extends AbstractIterable[binderType] with Iterable[binderType]
-
class
UnboundElement[N <: NameElement] extends NameElement
-
class
UnderBinder[binderType <: NameElement, elementT] extends Element with BindingSensitive
Abstract Value Members
-
abstract
def
UserNameElementIsMappable[t <: NameElement](self: t): Mappable[t]
Concrete Value Members
-
final
def
!=(arg0: AnyRef): Boolean
-
final
def
!=(arg0: Any): Boolean
-
final
def
##(): Int
-
final
def
==(arg0: AnyRef): Boolean
-
final
def
==(arg0: Any): Boolean
-
-
implicit
def
ListIsMappable[t](xs: List[t])(implicit arg0: (t) ⇒ Mappable[t]): Mappable[List[t]]
-
-
implicit
def
OptionIsMappable[t](xs: Option[t])(implicit arg0: (t) ⇒ Mappable[t]): Mappable[Option[t]]
-
implicit
def
ScopeIsMappable[bt <: NameElement](scope: Scope[bt])(implicit arg0: (bt) ⇒ Mappable[bt]): Mappable[Scope[bt]]
-
implicit
def
StringIsMappable(s: String): Mappable[String]
-
-
implicit
def
UnderBinderIsMappable[bt <: NameElement, st](ub: UnderBinder[bt, st])(implicit arg0: (bt) ⇒ Mappable[bt], arg1: (st) ⇒ Mappable[st]): Mappable[UnderBinder[bt, st]]
-
final
def
asInstanceOf[T0]: T0
-
def
clone(): AnyRef
-
final
def
eq(arg0: AnyRef): Boolean
-
-
def
finalize(): Unit
-
final
def
getClass(): Class[_]
-
def
hashCode(): Int
-
final
def
isInstanceOf[T0]: Boolean
-
final
def
ne(arg0: AnyRef): Boolean
-
final
def
notify(): Unit
-
final
def
notifyAll(): Unit
-
def
return_[T](result: T): ReturnAndDo[T]
-
def
sequence[bt <: NameElement, st](orig: List[UnderBinder[bt, st]])(implicit arg0: (st) ⇒ Mappable[st]): UnderBinder[bt, List[st]]
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
-
def
toString(): String
-
def
unsequence[bt <: NameElement, st](orig: UnderBinder[bt, List[st]])(implicit arg0: (st) ⇒ Mappable[st]): List[UnderBinder[bt, st]]
-
final
def
wait(): Unit
-
final
def
wait(arg0: Long, arg1: Int): Unit
-
final
def
wait(arg0: Long): Unit
Value Members
-
implicit
def
ListIsMappable[t](xs: List[t])(implicit arg0: (t) ⇒ Mappable[t]): Mappable[List[t]]
-
implicit
def
OptionIsMappable[t](xs: Option[t])(implicit arg0: (t) ⇒ Mappable[t]): Mappable[Option[t]]
-
implicit
def
StringIsMappable(s: String): Mappable[String]
Inherited from AnyRef
Value Members
-
final
def
!=(arg0: AnyRef): Boolean
-
final
def
##(): Int
-
final
def
==(arg0: AnyRef): Boolean
-
def
clone(): AnyRef
-
final
def
eq(arg0: AnyRef): Boolean
-
-
def
finalize(): Unit
-
final
def
getClass(): Class[_]
-
def
hashCode(): Int
-
final
def
ne(arg0: AnyRef): Boolean
-
final
def
notify(): Unit
-
final
def
notifyAll(): Unit
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
-
def
toString(): String
-
final
def
wait(): Unit
-
final
def
wait(arg0: Long, arg1: Int): Unit
-
final
def
wait(arg0: Long): Unit
Inherited from Any
Value Members
-
final
def
!=(arg0: Any): Boolean
-
final
def
==(arg0: Any): Boolean
-
final
def
asInstanceOf[T0]: T0
-
final
def
isInstanceOf[T0]: Boolean
This component provides functionality for enforcing variable binding during parse-time.
When parsing simple languages, like Featherweight Scala, these parser combinators will fully enforce the binding discipline. When names are allowed to be left unqualified, these mechanisms would have to be complemented by an extra phase that resolves names that couldn't be resolved using the naive binding rules. (Maybe some machinery to model
implicit
binders (e.g.,this
and imported qualifiers) and selection on a binder will suffice?)