Commit 9507e47e authored by eckhart's avatar eckhart
Browse files

- XML-parser-example: added a few "required markers" to XML.ebnf

parent 2ae8204a
...@@ -54,7 +54,7 @@ ignoreSectContents = IgnoreChars {'<![' ignoreSectContents ']]>' IgnoreChars} ...@@ -54,7 +54,7 @@ ignoreSectContents = IgnoreChars {'<![' ignoreSectContents ']]>' IgnoreChars}
extParsedEnt = [TextDecl] content extParsedEnt = [TextDecl] content
TextDecl = '<?xml' [VersionInfo] EncodingDecl ~ '?>' TextDecl = '<?xml' [VersionInfo] EncodingDecl ~ '?>'
elementdecl = '<!ELEMENT' S Name S contentspec ~ '>' elementdecl = '<!ELEMENT' §S Name ~ contentspec ~ '>'
contentspec = EMPTY | ANY | Mixed | children contentspec = EMPTY | ANY | Mixed | children
EMPTY = 'EMPTY' EMPTY = 'EMPTY'
ANY = 'ANY' ANY = 'ANY'
...@@ -67,8 +67,8 @@ choice = '(' ~ { ~ '|' ~ cp }+ ~ ')' ...@@ -67,8 +67,8 @@ choice = '(' ~ { ~ '|' ~ cp }+ ~ ')'
cp = (Name | choice | seq) ['?' | '*' | '+'] cp = (Name | choice | seq) ['?' | '*' | '+']
seq = '(' ~ cp { ~ ',' ~ cp } ~ ')' seq = '(' ~ cp { ~ ',' ~ cp } ~ ')'
AttlistDecl = '<!ATTLIST' S Name { S AttDef } ~ '>' AttlistDecl = '<!ATTLIST' §S Name { ~ AttDef } ~ '>'
AttDef = Name S AttType S DefaultDecl AttDef = Name ~ §AttType S DefaultDecl
AttType = StringType | TokenizedType | EnumeratedType AttType = StringType | TokenizedType | EnumeratedType
StringType = 'CDATA' StringType = 'CDATA'
TokenizedType = ID | IDREF | IDREFS | ENTITY | ENTITIES | NMTOKEN | NMTOKENS TokenizedType = ID | IDREF | IDREFS | ENTITY | ENTITIES | NMTOKEN | NMTOKENS
...@@ -90,16 +90,16 @@ IMPLIED = '#IMPLIED' ...@@ -90,16 +90,16 @@ IMPLIED = '#IMPLIED'
FIXED = ['#FIXED' S] AttValue FIXED = ['#FIXED' S] AttValue
EntityDecl = GEDecl | PEDecl EntityDecl = GEDecl | PEDecl
GEDecl = '<!ENTITY' S Name S EntityDef ~ '>' GEDecl = '<!ENTITY' S Name §S EntityDef ~ '>'
PEDecl = '<!ENTITY' S '%' S Name S PEDef ~ '>' PEDecl = '<!ENTITY' S '%' §S Name S PEDef ~ '>'
EntityDef = EntityValue | ExternalID [NDataDecl] EntityDef = EntityValue | ExternalID [NDataDecl]
PEDef = EntityValue | ExternalID PEDef = EntityValue | ExternalID
NotationDecl = '<!NOTATION' S Name ~ (ExternalID | PublicID) ~ '>' NotationDecl = '<!NOTATION' §S Name ~ (ExternalID | PublicID) ~ '>'
ExternalID = 'SYSTEM' S SystemLiteral ExternalID = 'SYSTEM' §S SystemLiteral
PublicID = 'PUBLIC' S PubidLiteral PublicID = 'PUBLIC' §S PubidLiteral
NDataDecl = 'NData' S Name NDataDecl = 'NData' §S Name
####################################################################### #######################################################################
...@@ -108,14 +108,14 @@ NDataDecl = 'NData' S Name ...@@ -108,14 +108,14 @@ NDataDecl = 'NData' S Name
# #
####################################################################### #######################################################################
element = EmptyElemTag | STag content ETag element = EmptyElemTag | STag §content ETag
STag = '<' TagName { ~ Attribute } ~ '>' STag = '<' TagName { ~ Attribute } ~ '>'
ETag = '</' ::TagName ~ '>' ETag = '</' §::TagName ~ '>'
EmptyElemTag = '<' Name { ~ Attribute } ~ '/>' EmptyElemTag = '<' Name { ~ Attribute } ~ '/>'
TagName = Name TagName = Name
Attribute = Name ~ '=' ~ AttValue Attribute = Name ~ §'=' ~ AttValue
content = [ CharData ] content = [ CharData ]
{ (element | Reference | CDSect | PI | Comment) { (element | Reference | CDSect | PI | Comment)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment