diff --git a/xmlschema.ast b/xmlschema.ast index 0a4b7cf6e2a40244bfb15053db15df96abc083ba..53dc470fe8bd44f46cc39e7b86a377a8641b354f 100644 --- a/xmlschema.ast +++ b/xmlschema.ast @@ -30,6 +30,7 @@ XmlHeader ::= Attribute*; abstract Element; abstract ComplexElement : Element ::= Attribute* Element*; +XsAll : ComplexElement; XsAnnotation : ComplexElement; XsAny : ComplexElement; XsAnyAttribute : ComplexElement; diff --git a/xmlschema.jjt b/xmlschema.jjt index c6e4e6e6e2b5842e4ad23b2e2dbe16873e5ebc5e..139ae28720c1ad6475b717657e4cc8719f6ca8bd 100644 --- a/xmlschema.jjt +++ b/xmlschema.jjt @@ -80,7 +80,8 @@ SPECIAL_TOKEN : /* COMMENTS */ <DEFAULT, BOUNDS> TOKEN : /* RESERVED WORDS AND LITERALS */ { - < XS_ANNOTATION : "xs:annotation" > + < XS_ALL : "xs:all" > + | < XS_ANNOTATION : "xs:annotation" > | < XS_ANY : "xs:any" > | < XS_ANYATTRIBUTE : "xs:anyAttribute" > | < XS_APPINFO : "xs:appinfo" > @@ -256,8 +257,8 @@ SPECIAL_TOKEN : /* COMMENTS */ { < LPAREN : "(" > | < RPAREN : ")" > - | < CDATA_START : "<![CDATA[" > - | < CDATA_END : "]]>" > + | < CDATA_START : "<![CDATA[" > + | < CDATA_END : "]]>" > | < LBRACE : "{" > | < RBRACE : "}" > | < LBRACKET : "[" > @@ -266,7 +267,9 @@ SPECIAL_TOKEN : /* COMMENTS */ | < COMMA : "," > | < DOT : "." > | < SQUOTE : "'" > - | < AT : "@" > + | < AT : "@" > + | < PERCENT : "%" > + | < QUESTION : "?" > }// SEPARATORS @@ -357,6 +360,7 @@ void ElementList() #List : {} void Element() : {} { ( "<" (XsAnnotation() + | XsAll() | XsAny() | XsAnyAttribute() | XsAppinfo() @@ -393,6 +397,12 @@ void XsAnnotation() #XsAnnotation : {} (">" ElementList() "</" <XS_ANNOTATION> ">" | ElementList() "/>") } +void XsAll() #XsAll : {} +{ + <XS_ALL> AttributeList() + (">" ElementList() "</" <XS_ALL> ">" | ElementList() "/>") +} + void XsAny() #XsAny : {} { <XS_ANY> AttributeList()