MarkupParser

dotty.tools.dotc.parsing.xml.MarkupParsers$.MarkupParser
class MarkupParser(parser: Parser, val preserveWS: Boolean)(implicit src: SourceFile)

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any

Members list

Concise view

Type members

Types

type AttributesType = Map[String, Tree]
type NamespaceType = Any

Value members

Concrete methods

def appendText(span: Span, ts: Buffer[Tree], txt: String): Unit
def ch: Char

The library and compiler parsers had the interesting distinction of different behavior for nextch (a function for which there are a total of two plausible behaviors, so we know the design space was fully explored.) One of them returned the value of nextch before the increment and one of them the new value. So to unify code we have to at least temporarily abstract over the nextchs.

The library and compiler parsers had the interesting distinction of different behavior for nextch (a function for which there are a total of two plausible behaviors, so we know the design space was fully explored.) One of them returned the value of nextch before the increment and one of them the new value. So to unify code we have to at least temporarily abstract over the nextchs.

Attributes

def content: Buffer[Tree]
def content_AMP(ts: ArrayBuffer[Tree]): Unit

adds entity/character to ts as side-effect

adds entity/character to ts as side-effect

Attributes

def content_BRACE(p: Span, ts: ArrayBuffer[Tree]): Unit

Attributes

def curOffset: Int

'<' element ::= xmlTag1 '>' { xmlExpr | '{' simpleExpr '}' } ETag | xmlTag1 '/' '>'

'<' element ::= xmlTag1 '>' { xmlExpr | '{' simpleExpr '}' } ETag | xmlTag1 '/' '>'

Attributes

def eof: Boolean
def errorNoEnd(tag: String): Nothing
def escapeToScala[A](op: => A, kind: String): A
def lookahead(): BufferedIterator[Char]

Create a lookahead reader which does not influence the input

Create a lookahead reader which does not influence the input

Attributes

def mkAttributes(name: String, other: NamespaceType): AttributesType
def mkProcInstr(position: Span, name: String, text: String): ElementType
def nextch(): Unit

this method assign the next character to ch and advances in input

this method assign the next character to ch and advances in input

Attributes

def reportSyntaxError(offset: Int, str: String): Unit
def reportSyntaxError(str: String): Unit
def truncatedError(msg: String): Nothing
def xAttributes: LinkedHashMap[String, Tree]

parse attribute and add it to listmap [41] Attributes ::= { S Name Eq AttValue } AttValue ::= ' { _ } ' | " { _ } " | { scalablock }

parse attribute and add it to listmap [41] Attributes ::= { S Name Eq AttValue } AttValue ::= ' { _ } ' | " { _ } " | { scalablock }

Attributes

'<! CharData ::= [CDATA[ ( {char} - {char}"]]>"{char} ) ']]>'

'<! CharData ::= [CDATA[ ( {char} - {char}"]]>"{char} ) ']]>'

see [15]

Attributes

def xCheckEmbeddedBlock: Boolean

checks whether next character starts a Scala block, if yes, skip it.

checks whether next character starts a Scala block, if yes, skip it.

Attributes

Returns:

true if next character starts a scala block

Comment ::= ''

Comment ::= ''

see [15]

Attributes

def xHandleError(that: Char, msg: String): Unit

xLiteral = element { element }

xLiteral = element { element }

Attributes

Returns:

Scala representation of this xml literal

Attributes

Returns:

this xml pattern

See also:

xmlPattern. resynchronizes after successful parse

'<' xPattern ::= Name [S] { xmlPattern | '{' pattern3 '}' } ETag | Name [S] '/' '>'

'<' xPattern ::= Name [S] { xmlPattern | '{' pattern3 '}' } ETag | Name [S] '/' '>'

Attributes

def xScalaPatterns: List[Tree]

xScalaPatterns ::= patterns

xScalaPatterns ::= patterns

Attributes

Inherited methods

protected def errorAndResult[T](msg: String, x: T): T

Attributes

Inherited from:
MarkupParserCommon (hidden)
def returning[T](x: T)(f: T => Unit): T

Apply a function and return the passed value

Apply a function and return the passed value

Attributes

Inherited from:
MarkupParserCommon (hidden)
def saving[A, B](getter: A, setter: A => Unit)(body: => B): B

Execute body with a variable saved and restored after execution

Execute body with a variable saved and restored after execution

Attributes

Inherited from:
MarkupParserCommon (hidden)
protected def unreachable: Nothing

Attributes

Inherited from:
MarkupParserCommon (hidden)
def xAttributeValue(): String

Attributes

Inherited from:
MarkupParserCommon (hidden)
def xAttributeValue(endCh: Char): String

attribute value, terminated by either ' or ". value may not contain <.

attribute value, terminated by either ' or ". value may not contain <.

Attributes

endCh

either ' or "

Inherited from:
MarkupParserCommon (hidden)
def xCharRef: String

Attributes

Inherited from:
MarkupParserCommon (hidden)
def xCharRef(it: Iterator[Char]): String

Attributes

Inherited from:
MarkupParserCommon (hidden)
def xCharRef(ch: () => Char, nextch: () => Unit): String

CharRef ::= "&#" '0'..'9' {'0'..'9'} ";" | "&#x" '0'..'9'|'A'..'F'|'a'..'f' { hexdigit } ";"

CharRef ::= "&#" '0'..'9' {'0'..'9'} ";" | "&#x" '0'..'9'|'A'..'F'|'a'..'f' { hexdigit } ";"

see [66]

Attributes

Inherited from:
MarkupParserCommon (hidden)
def xEQ(): Unit

scan [S] '=' [S]

scan [S] '=' [S]

Attributes

Inherited from:
MarkupParserCommon (hidden)
def xEndTag(startName: String): Unit

[42] '<' xmlEndTag ::= '<' '/' Name S? '>'

[42] '<' xmlEndTag ::= '<' '/' Name S? '>'

Attributes

Inherited from:
MarkupParserCommon (hidden)
def xName: String

actually, Name ::= (Letter | '_' | ':') (NameChar)* but starting with ':' cannot happen Name ::= (Letter | '_') (NameChar)*

actually, Name ::= (Letter | '_' | ':') (NameChar)* but starting with ':' cannot happen Name ::= (Letter | '_') (NameChar)*

see [5] of XML 1.0 specification

pre-condition: ch != ':' // assured by definition of XMLSTART token post-condition: name does neither start, nor end in ':'

Attributes

Inherited from:
MarkupParserCommon (hidden)
def xProcInstr: ElementType

'?' {Char})]'?>'

'?' {Char})]'?>'

see [15]

Attributes

Inherited from:
MarkupParserCommon (hidden)
def xSpace(): Unit

scan [3] S ::= (#x20 | #x9 | #xD | #xA)+

scan [3] S ::= (#x20 | #x9 | #xD | #xA)+

Attributes

Inherited from:
MarkupParserCommon (hidden)
def xSpaceOpt(): Unit

skip optional space S?

skip optional space S?

Attributes

Inherited from:
MarkupParserCommon (hidden)
protected def xTag(pscope: NamespaceType): (String, AttributesType)

parse a start or empty tag. [40] STag ::= '<' Name { S Attribute } [S] [44] EmptyElemTag ::= '<' Name { S Attribute } [S]

parse a start or empty tag. [40] STag ::= '<' Name { S Attribute } [S] [44] EmptyElemTag ::= '<' Name { S Attribute } [S]

Attributes

Inherited from:
MarkupParserCommon (hidden)
protected def xTakeUntil[T](handler: (PositionType, String) => T, positioner: () => PositionType, until: String): T

Take characters from input stream until given String "until" is seen. Once seen, the accumulated characters are passed along with the current Position to the supplied handler function.

Take characters from input stream until given String "until" is seen. Once seen, the accumulated characters are passed along with the current Position to the supplied handler function.

Attributes

Inherited from:
MarkupParserCommon (hidden)
def xToken(that: Seq[Char]): Unit

Attributes

Inherited from:
MarkupParserCommon (hidden)
def xToken(that: Char): Unit

Attributes

Inherited from:
MarkupParserCommon (hidden)

Concrete fields

final val preserveWS: Boolean
var xEmbeddedBlock: Boolean