xml-grammatik umformen
-
Hallo,
soll folgende XML-Grammatik umformen: (damit sie später in einen recursiv-descent-parser passt)
element → emptytag | starttag content endtag
starttag → < name (sep+ attribute)* sep? >
attribute → name = attrvalue
endtag → </ name >
content → (chardata | element)*
emptytag → < name (sep+ attribute)* sep? />
attrvalue → ' data '
name → letter | name letter | name digit
letter → a | b | ... | z | -
digit → 0 | 1 | ... | 9
sep → blank | crund zwar mit folgenden Regeln:
A → u* bedeutet A → ε | uA
A → u+ bedeutet A → u | uA
A → u? bedeutet A → ε | uneue Nichtterminalsymbole können eingeführt werden.
Außerdem hat die Produktion für element zwei alternativen. Der Parser kann nicht unterscheiden, welche Alternative er anwenden soll, denn emtytag und starttag beginnen gleich. Es soll ein neues Nichtterminalsymbol für den gemeinsamen Anfang eingeführt werden und die Produktionen für element entsprechend umgeformt werden.
Hat jemand ne idee?
thx i.A.