package descriptions
This package contains the descriptions of various lexical structures to be fed to Lexer
.
- Source
- token-package.scala
- Since
4.0.0
- Alphabetic
- By Inheritance
- descriptions
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Type Members
- final case class LexicalDesc(nameDesc: NameDesc, symbolDesc: SymbolDesc, numericDesc: NumericDesc, textDesc: TextDesc, spaceDesc: SpaceDesc) extends Product with Serializable
This class describes the aggregation of a bunch of different sub-configurations for lexing a specific language.
This class describes the aggregation of a bunch of different sub-configurations for lexing a specific language.
- nameDesc
the description of name-like lexemes
- symbolDesc
the description of specific symbolic lexemes
- numericDesc
the description of numeric literals
- textDesc
the description of text literals
- spaceDesc
the description of whitespace
- Since
4.0.0
- final case class NameDesc(identifierStart: CharPredicate, identifierLetter: CharPredicate, operatorStart: CharPredicate, operatorLetter: CharPredicate) extends Product with Serializable
The class describes how name-like things are described lexically.
The class describes how name-like things are described lexically.
- identifierStart
what characters may start an identifier?
- identifierLetter
what characters may continue an identifier?
- operatorStart
what characters may start a user-defined operator?
- operatorLetter
what characters may continue a user-defined operator?
- Since
4.0.0
- final case class SpaceDesc(commentStart: String, commentEnd: String, commentLine: String, commentLineAllowsEOF: Boolean, nestedComments: Boolean, space: CharPredicate, whitespaceIsContextDependent: Boolean) extends Product with Serializable
This class describes how whitespace should be handled lexically.
This class describes how whitespace should be handled lexically.
- commentStart
how do multi-line comments start? (empty for no multi-line comments)
- commentEnd
how do multi-line comments end? (empty for no multi-line comments)
- commentLine
how do single-line comments start? (empty for no single-line comments)
- commentLineAllowsEOF
can a single-line comment be terminated by the end-of-file, or must it ends with a newline
- nestedComments
can multi-line comments be nested within each other?
- space
what characters serve as whitespace within the language?
- whitespaceIsContextDependent
can the definition of whitespace change depending on context? (in Python, say, newlines are valid whitespace within parentheses, but are significant outside of them)
- Since
4.0.0
- final case class SymbolDesc(hardKeywords: Set[String], hardOperators: Set[String], caseSensitive: Boolean) extends Product with Serializable
This class describes how symbols (textual literals in a BNF) should be processed lexically.
This class describes how symbols (textual literals in a BNF) should be processed lexically.
- hardKeywords
what keywords are always treated as keywords within the language.
- hardOperators
what operators are always treated as reserved operators within the language.
- caseSensitive
are the keywords case sensitive: when
false
,IF == if
.
- Since
4.0.0
Value Members
- object LexicalDesc extends Serializable
This object contains any preconfigured lexical definitions.
This object contains any preconfigured lexical definitions.
- Since
4.0.0
- object NameDesc extends Serializable
This object contains any preconfigured name definitions.
This object contains any preconfigured name definitions.
- Since
4.0.0
- object SpaceDesc extends Serializable
This object contains any default configurations describing whitespace.
This object contains any default configurations describing whitespace.
- Since
4.0.0
- object SymbolDesc extends Serializable
This object contains any preconfigured symbol descriptions.
This object contains any preconfigured symbol descriptions.
- Since
4.0.0