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.
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.
adds entity/character to ts as side-effect
'<' element ::= xmlTag1 '>' { xmlExpr | '{' simpleExpr '}' } ETag | xmlTag1 '/' '>'
Create a lookahead reader which does not influence the input
Create a lookahead reader which does not influence the input
this method assign the next character to ch and advances in input
this method assign the next character to ch and advances in input
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 "
.
attribute value, terminated by either '
or "
. value may not contain <
.
either '
or "
parse attribute and add it to listmap
[41] Attributes ::= { S Name Eq AttValue }
AttValue ::= '
{ _ } '
| "
{ _ } "
| {
scalablock }
'<! CharData ::= [CDATA[ ( {char} - {char}"]]>"{char} ) ']]>'
'<! CharData ::= [CDATA[ ( {char} - {char}"]]>"{char} ) ']]>'
see [15]
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]
checks whether next character starts a Scala block, if yes, skip it.
checks whether next character starts a Scala block, if yes, skip it.
true if next character starts a scala block
Comment ::=
Comment ::=
see [15]
scan [S] '=' [S]
scan [S] '=' [S]
[42] '<' xmlEndTag ::= '<' '/' Name S? '>'
[42] '<' xmlEndTag ::= '<' '/' Name S? '>'
xLiteral = element { element }
xLiteral = element { element }
Scala representation of this xml literal
this xml pattern
xmlPattern. resynchronizes after successful parse
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 ':'
'<' xPattern ::= Name [S] { xmlPattern | '{' pattern3 '}' } ETag | Name [S] '/' '>'
'<?' ProcInstr ::= Name [S ({Char} - ({Char}'>?' {Char})]'?>'
'<?' ProcInstr ::= Name [S ({Char} - ({Char}'>?' {Char})]'?>'
see [15]
xScalaPatterns ::= patterns
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.
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.
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.