From 32d3b5d2edd4eae2ad09d5cddd80ce378b093344 Mon Sep 17 00:00:00 2001
From: Anders Nilsson <andersn@control.lth.se>
Date: Tue, 27 May 2014 16:08:25 +0200
Subject: [PATCH] Fixes to handle MS project schema

---
 xmlschema.ast |  1 +
 xmlschema.jjt | 18 ++++++++++++++----
 2 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/xmlschema.ast b/xmlschema.ast
index 0a4b7cf..53dc470 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 c6e4e6e..139ae28 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() 
-- 
GitLab