Hi Folks,
Consider this XML entity:
&
What is its meaning?
I am not sure it has a meaning, and it is an entity reference not an entity,
Answer: its meaning is & and & is literal syntax.
Entities have Replacement texts (not meanings), The replacement text of amp is pre-defined by XML and is
&
(not &)
The meaning of this character entity:
A
that is not an entity reference at all, it is a character reference. It doesn't reference an entity that holds a replacement text, it is replaced inline by the referenced character.
is A and A is literal syntax.
Recall that in a parser there are two stages to processing an input string:
input string --> lexical analysis (lexer) --> syntax analysis (parser)
The lexer groups the characters in the input string into tokens and sends the tokens to the parser.
Flex is a lexer-generator, i.e., the output of Flex is a lexer.
In the Flex manual [1] it recommends on page 76 that a lexer be designed to send the meaning of an entity to the parser, not the literal syntax, i.e.,
& --> lexer --> & --> parser
Pretty interesting, I think.
Entity and character references are expanded at different times.
After
<!ENTITY foo "aaa < bbb">
the entity foo has replacement text
"aaa < bbb" as the reference to the entity lt; is not expanded while defining foo.
But
<!ENTITY foo "aaa < bbb">
is a syntax error as < is replaced while reading the definition so this is
<!ENTITY foo "aaa < bbb">
with a non-well formed start tag,
David
/Roger
[1] Flex manual is here: https://epaperpress.com/lexandyacc/download/flex.pdf
_______________________________________________________________________
XML-DEV is a publicly archived, unmoderated list hosted by OASIS
to support XML implementation and development. To minimize
spam in the archives, you must subscribe before posting.
[Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/
Or unsubscribe: xml-dev-unsubscribe@lists.xml.org
subscribe: xml-dev-subscribe@lists.xml.org
List archive: http://lists.xml.org/archives/xml-dev/
List Guidelines: http://www.oasis-open.org/maillists/guidelines.php