MarkupParser

dotty.tools.dotc.parsing.xml.MarkupParsers$.MarkupParser
class MarkupParser(parser: Parser, val preserveWS: Boolean)(using x$3: Context)

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any

Members list

Type members

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

adds entity/character to ts as side-effect

adds entity/character to ts as side-effect

Attributes

Attributes

def curOffset: Int
def element: Tree

'<' 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

Create a lookahead reader which does not influence the input

Create a lookahead reader which does not influence the input

Attributes

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 truncatedError(msg: String): Nothing

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

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

def xComment: Tree

Comment ::= ''

Comment ::= ''

see [15]

Attributes

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

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

def xPattern: Tree

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

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

Attributes

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)

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 <.

Value parameters

endCh

either ' or "

Attributes

Inherited from:
MarkupParserCommon (hidden)

Attributes

Inherited from:
MarkupParserCommon (hidden)

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 tmppos: Span