This is not a public trait - it contains common code shared between the library level XML parser and the compiler's. All members should be accessed through those.
Constructors
Members
The library and compiler parsers had the interesting distinction of different behavior for nextch (a function for which there are a total of two plausib...
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.
Create a lookahead reader which does not influence the input
Create a lookahead reader which does not influence the input
Replaces only character references right now. see spec 3.3.3
Replaces only character references right now. see spec 3.3.3
Create a non-destructive lookahead reader and see if the head of the input would match the given String. If yes, return true and drop the entire String...
Create a non-destructive lookahead reader and see if the head of the input would match the given String. If yes, return true and drop the entire String from input; if no, return false and leave input unchanged.
Apply a function and return the passed value
Apply a function and return the passed value
Execute body with a variable saved and restored after execution
Execute body with a variable saved and restored after execution
attribute value, terminated by either '
or "
. value may not contain <
.
attribute value, terminated by either '
or "
. value may not contain <
.
CharRef ::= "&#" '0'..'9' {'0'..'9'} ";" | "&#x" '0'..'9'|'A'..'F'|'a'..'f' { hexdigit } ";"
see [66]
CharRef ::= "&#" '0'..'9' {'0'..'9'} ";" | "&#x" '0'..'9'|'A'..'F'|'a'..'f' { hexdigit } ";"
see [66]
scan [S] '=' [S]
scan [S] '=' [S]
[42] '<' xmlEndTag ::= '<' '/' Name S? '>'
[42] '<' xmlEndTag ::= '<' '/' Name S? '>'
actually, Name ::= (Letter | '_' | ':') (NameChar)* but starting with ':' cannot happen Name ::= (Letter | '_') (NameChar)*
see [5] of XML 1.0 specifica...
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 ':'
'' ProcInstr ::= Name [S ({Char} - ({Char}'>?' {Char})]'?>'
see [15]
'' ProcInstr ::= Name [S ({Char} - ({Char}'>?' {Char})]'?>'
see [15]
scan [3] S ::= (#x20 | #x9 | #xD | #xA)+
scan [3] S ::= (#x20 | #x9 | #xD | #xA)+
skip optional space S?
skip optional space S?
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]
Take characters from input stream until given String "until" is seen. Once seen, the accumulated characters are passed along with the current Position...
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.