Skip to content
Snippets Groups Projects
xmlschema.jjt 18.7 KiB
Newer Older
Anders Nilsson's avatar
Anders Nilsson committed
/* -*-Java-*- */

/* 
 * Copyright (C) 2007,2008,2009  Anders Nilsson <anders.nilsson@cs.lth.se>
 * This file is part of XMLSchemaCompiler.
 *
 * XMLSchemaCompiler is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * XMLSchemaCompiler is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with XMLSchemaCompiler.  If not, see <http://www.gnu.org/licenses/>.
*/
Anders Nilsson's avatar
Anders Nilsson committed

options {
    MULTI                       = true;
    VISITOR                     = true;
    NODE_DEFAULT_VOID           = true;
    NODE_SCOPE_HOOK             = false;
    NODE_PREFIX                 = "";
    JAVA_UNICODE_ESCAPE         = true;
    STATIC                      = false;
//    	DEBUG_PARSER                = true;
Anders Nilsson's avatar
Anders Nilsson committed
//    	DEBUG_TOKEN_MANAGER         = true;
//   	DEBUG_LOOKAHEAD             = true;
Anders Nilsson's avatar
Anders Nilsson committed
} // options


PARSER_BEGIN(SchemaParser)
package AST;
public class SchemaParser {
}
PARSER_END(SchemaParser)


//--------------------------------------------------------------------//
//                           LEXICAL TOKENS                           //
//--------------------------------------------------------------------//

Anders Nilsson's avatar
Anders Nilsson committed
// <DEFAULT, BOUNDS> SKIP : /* WHITE SPACE */
SPECIAL_TOKEN : /* WHITE SPACE */
Anders Nilsson's avatar
Anders Nilsson committed
{
    " "
    |
    "\t"
    |
    "\n"
    |
    "\r"
    |
    "\f"
}// WHITE SPACE


// <DEFAULT,BOUNDS> SPECIAL_TOKEN : /* COMMENTS */
// {
//     <SLASH_SLASH_COMMENT :  "//" (~["\n","\r"])* >
// }

SPECIAL_TOKEN : /* COMMENTS */
{
//     <SLASH_STAR_COMMENT  :  "/*" (~["*"])* "*" ("*" | (~["*","/"] (~["*"])* "*"))* "/"  >
< "<!--" ( ~["-"] | ( "-" ~["-"] ) )* "-->">
// 	| < "<rdfs:comment" ( ~["<"] | ( "<" ~["/"] ) )* "</rdfs:comment>" >
//     <XML_COMMENT  :  "<!--" (~["-","-",">"])* "-->"  >
}// COMMENTS


// <BOUNDS> TOKEN: {
//     < BEGINCOMMENT : "<!--"     >
//   | < ENDCOMMENT   : "-->"     >
// }

<DEFAULT, BOUNDS> TOKEN : /* RESERVED WORDS AND LITERALS */
{
    < XS_ANNOTATION            : "xs:annotation" >
  | < XS_ANY                   : "xs:any" >
  | < XS_ANYATTRIBUTE          : "xs:anyAttribute" >
  | < XS_APPINFO               : "xs:appinfo" >
Anders Nilsson's avatar
Anders Nilsson committed
  | < XS_ATTRIBUTE             : "xs:attribute" >
  | < XS_ATTRIBUTEGROUP        : "xs:attributeGroup" >
  | < XS_CHOICE                : "xs:choice" >
Anders Nilsson's avatar
Anders Nilsson committed
  | < XS_COMPLEXCONTENT        : "xs:complexContent" >
  | < XS_COMPLEXTYPE           : "xs:complexType" >
  | < XS_DOCUMENTATION         : "xs:documentation" >
  | < XS_ELEMENT               : "xs:element" >
Anders Nilsson's avatar
Anders Nilsson committed
  | < XS_ENUMERATION           : "xs:enumeration" >
  | < XS_EXTENSION             : "xs:extension" >
  | < XS_GROUP                 : "xs:group" >
  | < XS_INCLUDE               : "xs:include" >
Anders Nilsson's avatar
Anders Nilsson committed
  | < XS_LIST                  : "xs:list" >
  | < XS_MAXINCLUSIVE          : "xs:maxInclusive" >
  | < XS_MININCLUSIVE          : "xs:minInclusive" >
  | < XS_MINEXCLUSIVE          : "xs:minExclusive" >
Anders Nilsson's avatar
Anders Nilsson committed
  | < XS_MINLENGTH             : "xs:minLength" >
  | < XS_PATTERN               : "xs:pattern" >
  | < XS_RESTRICTION           : "xs:restriction" >
  | < XS_SEQUENCE              : "xs:sequence" >
  | < XS_SCHEMA                : "xs:schema" >
  | < XS_SIMPLECONTENT         : "xs:simpleContent" >
  | < XS_SIMPLETYPE            : "xs:simpleType" >
Anders Nilsson's avatar
Anders Nilsson committed
  | < XS_WHITESPACE            : "xs:whiteSpace" >
  | < ABSTRACT                 : "abstract" >
  | < ATTRIBUTEFORMDEFAULT     : "attributeFormDefault" >
  | < BASE                     : "base" >
Anders Nilsson's avatar
Anders Nilsson committed
  | < DEFAULT_ATTR             : "default" >
  | < ELEMENTFORMDEFAULT       : "elementFormDefault" >
  | < ENCODING                 : "encoding" >
Anders Nilsson's avatar
Anders Nilsson committed
  | < FIXED                    : "fixed" >
  | < ITEMTYPE                 : "itemType" >
  | < MINOCCURS                : "minOccurs" >
  | < MAXOCCURS                : "maxOccurs" >
  | < MIXED                    : "mixed" >
  | < NAME                     : "name" >
  | < NAMESPACE                : "namespace" >
  | < PROCESSCONTENTS          : "processContents" >
Anders Nilsson's avatar
Anders Nilsson committed
  | < REF                      : "ref" >
  | < SCHEMALOCATION           : "schemaLocation" >
  | < SOURCE                   : "source" >
  | < TARGETNAMESPACE          : "targetNamespace" >
Anders Nilsson's avatar
Anders Nilsson committed
  | < TYPE                     : "type" >
  | < USE                      : "use" >
Anders Nilsson's avatar
Anders Nilsson committed
  | < VALUE                    : "value" >
  | < VERSION                  : "version" >
  | < XML                      : "xml"          >
  | < XMLNS_XS                 : "xmlns:xs" >
  | < XMLNS_SCXML              : "xmlns:scxml" >
Anders Nilsson's avatar
Anders Nilsson committed

}// RESERVED WORDS AND LITERALS
<DEFAULT, BOUNDS> TOKEN : /* LITERALS */
{
    < INTEGER_LITERAL:
        <DECIMAL_LITERAL> (["l","L"])?
        |
        <HEX_LITERAL> (["l","L"])?
        |
        <OCTAL_LITERAL> (["l","L"])?
    >
    |
    < #DECIMAL_LITERAL: ["1"-"9"] (["0"-"9"])* >
    |
    < #HEX_LITERAL: "0" ["x","X"] (["0"-"9","a"-"f","A"-"F"])+ >
    |
    < #OCTAL_LITERAL: "0" (["0"-"7"])* >
    |
    < FLOAT_LITERAL:
        (["0"-"9"])+ "." (["0"-"9"])* (<EXPONENT>)? (["f","F","d","D"])?
        |
        "." (["0"-"9"])+ (<EXPONENT>)? (["f","F","d","D"])?
        |
        (["0"-"9"])+ <EXPONENT> (["f","F","d","D"])?
        |
        (["0"-"9"])+ (<EXPONENT>)? ["f","F","d","D"]
    >
    |
    < #EXPONENT: ["e","E"] (["+","-"])? (["0"-"9"])+ >
//     |
//     < CHARACTER_LITERAL:
//         "'"
//         (   (~["'","\\","\n","\r"])
//             |
//             ("\\"
//                 (   ["n","t","b","r","f","\\","'","\""]
//                     |
//                     ["0"-"7"] ( ["0"-"7"] )?
//                     |
//                     ["0"-"3"] ["0"-"7"] ["0"-"7"]
//                 )
//             )
//         )
//         "'"
//     >
Anders Nilsson's avatar
Anders Nilsson committed
    |
    < STRING_LITERAL:
        "\""
Anders Nilsson's avatar
Anders Nilsson committed
        (   (~["\""])
		|
        "\'"
        (   (~["\'","\n","\r"])
        )*
        "\'"
Anders Nilsson's avatar
Anders Nilsson committed
//     < STRING_LITERAL:
//         "\""
//         (   (~["\"","\\","\n","\r"])
//             |
//             ("\\"
//                 (    ["n","t","b","r","f","\\","'","\""]
//                      |
//                      ["0"-"7"] ( ["0"-"7"] )?
//                      |
//                      ["0"-"3"] ["0"-"7"] ["0"-"7"]
//                 )
//             )
//         )*
//         "\""
//     >
Anders Nilsson's avatar
Anders Nilsson committed
}// LITERALS

<DEFAULT, BOUNDS> TOKEN : /* IDENTIFIERS */
{
    < IDENTIFIER: <LETTER> (<LETTER>|<DIGIT>|"-")* >
    |
    < #LETTER:
        [
        "\u0024",
        "\u0041"-"\u005a",
        "\u005f",
        "\u0061"-"\u007a",
        "\u00c0"-"\u00d6",
Anders Nilsson's avatar
Anders Nilsson committed
		"\u00d7",
Anders Nilsson's avatar
Anders Nilsson committed
        "\u00d8"-"\u00f6",
        "\u00f8"-"\u00ff",
        "\u0100"-"\u1fff",
        "\u3040"-"\u318f",
        "\u3300"-"\u337f",
        "\u3400"-"\u3d2d",
        "\u4e00"-"\u9fff",
        "\uf900"-"\ufaff"
        ]
    >
    |
    < #DIGIT:
        [
        "\u0030"-"\u0039",
        "\u0660"-"\u0669",
        "\u06f0"-"\u06f9",
        "\u0966"-"\u096f",
        "\u09e6"-"\u09ef",
        "\u0a66"-"\u0a6f",
        "\u0ae6"-"\u0aef",
        "\u0b66"-"\u0b6f",
        "\u0be7"-"\u0bef",
        "\u0c66"-"\u0c6f",
        "\u0ce6"-"\u0cef",
        "\u0d66"-"\u0d6f",
        "\u0e50"-"\u0e59",
        "\u0ed0"-"\u0ed9",
        "\u1040"-"\u1049"
        ]
    >
}// IDENTIFIERS

<DEFAULT,BOUNDS> TOKEN : /* SEPARATORS */
{
      < LPAREN               : "("    >
    | < RPAREN               : ")"    >
     | < CDATA_START         : "<![CDATA["    >
     | < CDATA_END           : "]]>"    >
    | < LBRACE               : "{"    >
Anders Nilsson's avatar
Anders Nilsson committed
    | < RBRACE               : "}"    >
    | < LBRACKET             : "["    >
    | < RBRACKET             : "]"    >
    | < SEMICOLON            : ";"    >
    | < COMMA                : ","    >
    | < DOT                  : "."    >
    | < SQUOTE               : "'"    >
Anders Nilsson's avatar
Anders Nilsson committed
}// SEPARATORS


<DEFAULT,BOUNDS> TOKEN : /* OPERATORS */
{
      < ASSIGN               : "="    >
     | < GT                  : ">"    >
     | < END_TAG             : "</"    >
     | < LT                   : "<"    >
Anders Nilsson's avatar
Anders Nilsson committed
//     | < BANG                 : "!"    >
//     | < TILDE                : "~"    >
//     | < HOOK                 : "?"    >
     | < COLON                : ":"    >
     | < HASH                 : "#"    >
Anders Nilsson's avatar
Anders Nilsson committed
//     | < EQ                   : "=="   >
//     | < LE                   : "<="   >
//     | < GE                   : ">="   >
//     | < NE                   : "!="   >
//     | < SC_OR                : "||"   >
//     | < SC_AND               : "&&"   >
//     | < INCR                 : "++"   >
//     | < DECR                 : "--"   >
     | < PLUS                 : "+"    >
     | < MINUS                : "-"    >
     | < STAR                 : "*"    >
Anders Nilsson's avatar
Anders Nilsson committed
     | < SLASH                : "/"    >
Anders Nilsson's avatar
Anders Nilsson committed
     | < BACKSLASH            : "\\"    >
Anders Nilsson's avatar
Anders Nilsson committed
//     | < BIT_AND              : "&"    >
Anders Nilsson's avatar
Anders Nilsson committed
     | < VBAR                 : "|"    >
Anders Nilsson's avatar
Anders Nilsson committed
//     | < XOR                  : "^"    >
//     | < REM                  : "%"    >
//     | < LSHIFT               : "<<"   >
//     | < RSIGNEDSHIFT         : ">>"   >
//     | < RUNSIGNEDSHIFT       : ">>>"  >
//     | < PLUSASSIGN           : "+="   >
//     | < MINUSASSIGN          : "-="   >
//     | < STARASSIGN           : "*="   >
//     | < SLASHASSIGN          : "/="   >
//     | < ANDASSIGN            : "&="   >
//     | < ORASSIGN             : "|="   >
//     | < XORASSIGN            : "^="   >
//     | < REMASSIGN            : "%="   >
//     | < LSHIFTASSIGN         : "<<="  >
//     | < RSIGNEDSHIFTASSIGN   : ">>="  >
//     | < RUNSIGNEDSHIFTASSIGN : ">>>=" >
}// OPERATORS


// <DEFAULT,BOUNDS> TOKEN : /* TEXT */
// {
//     < TEXT : <LETTER> (~["<",">"])*    >
// }// TEXT


//--------------------------------------------------------------------//
//                      THE XMLSCHEMA GRAMMAR                         //
Anders Nilsson's avatar
Anders Nilsson committed
//--------------------------------------------------------------------//

Start Start() #Start : {}
{
    Specification()
  { return jjtThis; }
}

void Specification() #Specification : {}
{
    XmlHeader()
 	XsSchema()
Anders Nilsson's avatar
Anders Nilsson committed
}

void XmlHeader() #XmlHeader : {}
{
    "<?" <XML> AttributeList() "?>"
}

void XsSchema() #XsSchema : {}
    "<"  <XS_SCHEMA> AttributeList() ">"
Anders Nilsson's avatar
Anders Nilsson committed
	ElementList()
    "</" <XS_SCHEMA> ">"
Anders Nilsson's avatar
Anders Nilsson committed
}

void ElementList() #List : {}
{
    (Element())*    
}

void Element() : {}
{
    ( "<" (XsAnnotation()
	| XsAny()
	| XsAnyAttribute()
	| XsAppinfo()
	| XsAttribute()
	| XsAttributeGroup()
	| XsChoice()
	| XsComplexContent()
	| XsComplexType()
        | XsDocumentation()
Anders Nilsson's avatar
Anders Nilsson committed
        | XsEnumeration()
        | XsExtension()
        | XsGroup()
        | XsInclude()
Anders Nilsson's avatar
Anders Nilsson committed
        | XsList()
        | XsMaxInclusive()
        | XsMinInclusive()
        | XsMinExclusive()
Anders Nilsson's avatar
Anders Nilsson committed
        | XsMinLength()
        | XsPattern()
        | XsRestriction()
        | XsSequence()
        | XsSimpleType()
Anders Nilsson's avatar
Anders Nilsson committed
        | XsWhiteSpace()
    ))
	| SimpleElement()
void XsAnnotation() #XsAnnotation : {}
    <XS_ANNOTATION> AttributeList() 
		 (">" ElementList() "</" <XS_ANNOTATION> ">" | ElementList() "/>")
void XsAny() #XsAny : {}
{
    <XS_ANY> AttributeList() 
		 (">" ElementList() "</" <XS_ANY> ">" | ElementList() "/>")
}

void XsAnyAttribute() #XsAnyAttribute : {}
{
    <XS_ANYATTRIBUTE> AttributeList() 
		 (">" ElementList() "</" <XS_ANYATTRIBUTE> ">" | ElementList() "/>")
}

void XsAppinfo() #XsAppinfo : {}
    <XS_APPINFO> AttributeList() 
		 (">" ElementList() "</" <XS_APPINFO> ">" | ElementList() "/>")
Anders Nilsson's avatar
Anders Nilsson committed
void XsAttribute() #XsAttribute : {}
{
    <XS_ATTRIBUTE> AttributeList() 
		 (">" ElementList() "</" <XS_ATTRIBUTE> ">" | ElementList() "/>")
}

void XsAttributeGroup() #XsAttributeGroup : {}
{
    <XS_ATTRIBUTEGROUP> AttributeList() 
		 (">" ElementList() "</" <XS_ATTRIBUTEGROUP> ">" | ElementList() "/>")
}

void XsChoice() #XsChoice : {}
{
    <XS_CHOICE> AttributeList() 
		 (">" ElementList() "</" <XS_CHOICE> ">" | ElementList() "/>")
}

Anders Nilsson's avatar
Anders Nilsson committed
void XsComplexContent() #XsComplexContent : {}
{
    <XS_COMPLEXCONTENT> AttributeList() 
		 (">" ElementList() "</" <XS_COMPLEXCONTENT> ">" | ElementList() "/>")
}

void XsComplexType() #XsComplexType : {}
{
    <XS_COMPLEXTYPE> AttributeList() 
		 (">" ElementList() "</" <XS_COMPLEXTYPE> ">" | ElementList() "/>")
}

void XsDocumentation() #XsDocumentation : {}
    <XS_DOCUMENTATION> AttributeList() 
		 (">" ElementList() "</" <XS_DOCUMENTATION> ">" | ElementList() "/>")
void XsElement() #XsElement : {}
{
    <XS_ELEMENT> AttributeList() 
		 (">" ElementList() "</" <XS_ELEMENT> ">" | ElementList() "/>")
}

Anders Nilsson's avatar
Anders Nilsson committed
void XsEnumeration() #XsEnumeration : {}
{
    <XS_ENUMERATION> AttributeList() 
		 (">" ElementList() "</" <XS_ENUMERATION> ">" | ElementList() "/>")
}

void XsExtension() #XsExtension : {}
{
    <XS_EXTENSION> AttributeList() 
		 (">" ElementList() "</" <XS_EXTENSION> ">" | ElementList() "/>")
}

void XsGroup() #XsGroup : {}
{
    <XS_GROUP> AttributeList() 
		 (">" ElementList() "</" <XS_GROUP> ">" | ElementList() "/>")
}

void XsInclude() #XsInclude : {}
    <XS_INCLUDE> AttributeList() 
		 (">" ElementList() "</" <XS_INCLUDE> ">" | ElementList() "/>")
void XsMaxInclusive() #XsMaxInclusive : {}
{
    <XS_MAXINCLUSIVE> AttributeList() 
		 (">" ElementList() "</" <XS_MAXINCLUSIVE> ">" | ElementList() "/>")
}

void XsMinInclusive() #XsMinInclusive : {}
{
    <XS_MININCLUSIVE> AttributeList() 
		 (">" ElementList() "</" <XS_MININCLUSIVE> ">" | ElementList() "/>")
}

void XsMinExclusive() #XsMinExclusive : {}
{
    <XS_MINEXCLUSIVE> AttributeList() 
		 (">" ElementList() "</" <XS_MINEXCLUSIVE> ">" | ElementList() "/>")
}

Anders Nilsson's avatar
Anders Nilsson committed
void XsList() #XsList : {}
{
    <XS_LIST> AttributeList() 
		 (">" ElementList() "</" <XS_LIST> ">" | ElementList() "/>")
}

void XsMinLength() #XsMinLength : {}
{
    <XS_MINLENGTH> AttributeList() 
		 (">" ElementList() "</" <XS_MINLENGTH> ">" | ElementList() "/>")
}

void XsPattern() #XsPattern : {}
{
    <XS_PATTERN> AttributeList() 
		 (">" ElementList() "</" <XS_PATTERN> ">" | ElementList() "/>")
}

void XsRestriction() #XsRestriction : {}
    <XS_RESTRICTION> AttributeList() 
		 (">" ElementList() "</" <XS_RESTRICTION> ">" | ElementList() "/>")
void XsSequence() #XsSequence : {}
{
    <XS_SEQUENCE> AttributeList() 
		 (">" ElementList() "</" <XS_SEQUENCE> ">" | ElementList() "/>")
}

void XsSimpleContent() #XsSimpleContent : {}
{
    <XS_SIMPLECONTENT> AttributeList() 
		 (">" ElementList() "</" <XS_SIMPLECONTENT> ">" | ElementList() "/>")
}

void XsSimpleType() #XsSimpleType : {}
    <XS_SIMPLETYPE> AttributeList() 
		 (">" ElementList() "</" <XS_SIMPLETYPE> ">" | ElementList() "/>")
Anders Nilsson's avatar
Anders Nilsson committed
void XsWhiteSpace() #XsWhiteSpace : {}
{
    <XS_WHITESPACE> AttributeList() 
		 (">" ElementList() "</" <XS_WHITESPACE> ">" | ElementList() "/>")
}

void SimpleElement() : {}
    IntElement()
  | FloatElement()
  | StringElement()
  | CDataElement()
void IntElement() #IntElement : { Token t; }
    t = <INTEGER_LITERAL>
        {jjtThis.setINTEGER_LITERAL(t.image);}
void FloatElement() #FloatElement : { Token t; }
    t = <FLOAT_LITERAL>
        {jjtThis.setFLOAT_LITERAL(t.image);}
void StringElement() #StringElement : { Token t;String s; }
	t = <IDENTIFIER>
	{
		s = t.image;
		if (getToken(1).kind != LT ) {
Anders Nilsson's avatar
Anders Nilsson committed
		s += getData();
        {jjtThis.setSTRING(s);}
JAVACODE
Anders Nilsson's avatar
Anders Nilsson committed
String getData() {
	StringBuffer s = new StringBuffer();
//     jjtThis.someData = true;
	while ((getToken(1)).kind != LT && (getToken(1)).kind != END_TAG) {
	    Token t = getNextToken();
	    if (t.specialToken != null) {
		Token tmp_t = t.specialToken;
		while (tmp_t.specialToken != null) {
		    tmp_t = tmp_t.specialToken;
Anders Nilsson's avatar
Anders Nilsson committed
		}
		while (tmp_t != null) {
		    s.append(tmp_t.image);
		    tmp_t = tmp_t.next;
		}
	    }
	    s.append(t.image);
Anders Nilsson's avatar
Anders Nilsson committed
	}
	return s.toString();
void CDataElement() #CDataElement : {String s; }
{
	<CDATA_START>
	{
	    s = new String();
	    if (getToken(1).kind != CDATA_END ) {
		s += getCData();
	}
	}
	<CDATA_END>
        {jjtThis.setSTRING(s);}
}

JAVACODE
String getCData() {
	StringBuffer s = new StringBuffer();
//     jjtThis.someData = true;
	while ((getToken(1)).kind != CDATA_END) {
	    Token t = getNextToken();
	    if (t.specialToken != null) {
		Token tmp_t = t.specialToken;
		while (tmp_t.specialToken != null) {
		    tmp_t = tmp_t.specialToken;
		}
		while (tmp_t != null) {
		    s.append(tmp_t.image);
		    tmp_t = tmp_t.next;
	    }
	    s.append(t.image);
Anders Nilsson's avatar
Anders Nilsson committed
void AttributeList() #List : {}
{
    (Attribute())*
}

void Attribute() : {}
{
    Version()
Anders Nilsson's avatar
Anders Nilsson committed
  |	Abstract()
  |	AttributeFormDefault()
  |	Base()
Anders Nilsson's avatar
Anders Nilsson committed
  |	Default()
  |	ElementFormDefault()
  |	Encoding()
Anders Nilsson's avatar
Anders Nilsson committed
  |	Fixed()
  |	ItemType()
  |	MinOccurs()
  |	MaxOccurs()
  |	Mixed()
  |	Name()
  |	Namespace()
  |	ProcessContents()
Anders Nilsson's avatar
Anders Nilsson committed
  |	Ref()
  |	Source()
  |	SchemaLocation()
  |	TargetNamespace()
Anders Nilsson's avatar
Anders Nilsson committed
  |	Type()
Anders Nilsson's avatar
Anders Nilsson committed
  |	Value()
  |	XmlnsXs()
  |	XmlnsScxml()
void AttributeFormDefault() #AttributeFormDefault : {}
Anders Nilsson's avatar
Anders Nilsson committed
    <ATTRIBUTEFORMDEFAULT> <ASSIGN> AttValue()
}

void Abstract() #Abstract : {}
{
    <ABSTRACT> <ASSIGN> AttValue()
void Base() #Base : {}
Anders Nilsson's avatar
Anders Nilsson committed
    <BASE> <ASSIGN> AttValue()
}

void Default() #Default : {}
{
    <DEFAULT_ATTR> <ASSIGN> AttValue()
void ElementFormDefault() #ElementFormDefault : {}
Anders Nilsson's avatar
Anders Nilsson committed
    <ELEMENTFORMDEFAULT> <ASSIGN> AttValue()
void Encoding() #Encoding : {}
Anders Nilsson's avatar
Anders Nilsson committed
    <ENCODING> <ASSIGN> AttValue()
}

void Fixed() #Fixed : {}
{
    <FIXED> <ASSIGN> AttValue()
}

void MaxOccurs() #MaxOccurs : {}
{
    <MAXOCCURS> <ASSIGN> AttValue()
}

void MinOccurs() #MinOccurs : {}
{
    <MINOCCURS> <ASSIGN> AttValue()
}

void Mixed() #Mixed : {}
{
    <MIXED> <ASSIGN> AttValue()
}

void Name() #Name : {}
{
    <NAME> <ASSIGN> AttValue()
}

void Namespace() #Namespace : {}
{
    <NAMESPACE> <ASSIGN> AttValue()
}

void ProcessContents() #ProcessContents : {}
{
    <PROCESSCONTENTS> <ASSIGN> AttValue()
}

Anders Nilsson's avatar
Anders Nilsson committed
void ItemType() #ItemType : {}
{
    <ITEMTYPE> <ASSIGN> AttValue()
}

void Ref() #Ref : {}
{
    <REF> <ASSIGN> AttValue()
void Source() #Source : {}
Anders Nilsson's avatar
Anders Nilsson committed
    <SOURCE> <ASSIGN> AttValue()
void SchemaLocation() #SchemaLocation : {}
Anders Nilsson's avatar
Anders Nilsson committed
    <SCHEMALOCATION> <ASSIGN> AttValue()
void Version() #Version : {}
Anders Nilsson's avatar
Anders Nilsson committed
    <VERSION> <ASSIGN> AttValue()
}

void TargetNamespace() #TargetNamespace : {}
{
    <TARGETNAMESPACE> <ASSIGN> AttValue()
}

Anders Nilsson's avatar
Anders Nilsson committed
void Type() #Type : {}
{
    <TYPE> <ASSIGN> AttValue()
}

void Use() #Use : {}
{
    <USE> <ASSIGN> AttValue()
}

Anders Nilsson's avatar
Anders Nilsson committed
void Value() #Value : {}
{
    <VALUE> <ASSIGN> AttValue()
void XmlnsXs() #XmlnsXs : {}
Anders Nilsson's avatar
Anders Nilsson committed
    <XMLNS_XS> <ASSIGN> AttValue()
void XmlnsScxml() #XmlnsScxml : {}
{
    <XMLNS_SCXML> <ASSIGN> AttValue()
}

Anders Nilsson's avatar
Anders Nilsson committed
void AttValue() #AttValue : { Token t; }
Anders Nilsson's avatar
Anders Nilsson committed
{
    t = <STRING_LITERAL>
	{jjtThis.setSTRING_LITERAL(t.image);}
}