107 lines
3.7 KiB
XML
107 lines
3.7 KiB
XML
<!-- XSD schema for the XML representation -->
|
|
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
|
<xs:element name="property">
|
|
<xs:complexType>
|
|
<xs:sequence>
|
|
<xs:element name="getter" type="getterType"/>
|
|
</xs:sequence>
|
|
<xs:attribute name="name" type="xs:string" use="required"/>
|
|
<xs:attribute name="access" type="xs:string" use="required"/>
|
|
<xs:attribute name="returnType" type="xs:string" use="required"/>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
|
|
<xs:complexType name="getterType">
|
|
<xs:sequence>
|
|
<xs:element name="body" type="bodyType"/>
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="bodyType">
|
|
<xs:sequence>
|
|
<xs:element name="statements" type="statementsType"/>
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="statementsType">
|
|
<xs:choice maxOccurs="unbounded">
|
|
<xs:element name="variabledeclaration" type="variableDeclarationType"/>
|
|
<xs:element name="if" type="ifType"/>
|
|
<xs:element name="else" type="elseType"/>
|
|
<xs:element name="assignment" type="assignmentType"/>
|
|
<xs:element name="return" type="returnType"/>
|
|
<xs:element name="ternaryoperator" type="ternaryOperatorType"/>
|
|
</xs:choice>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="variableDeclarationType">
|
|
<xs:attribute name="name" type="xs:string" use="required"/>
|
|
<xs:attribute name="initialization" type="xs:string" use="optional"/>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="ifType">
|
|
<xs:sequence>
|
|
<xs:element name="condition" type="conditionType"/>
|
|
<xs:element name="body" type="bodyType"/>
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="elseType">
|
|
<xs:sequence>
|
|
<xs:element name="body" type="bodyType"/>
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="conditionType">
|
|
<xs:sequence>
|
|
<xs:element name="binaryoperation" type="binaryOperationType"/>
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="assignmentType">
|
|
<xs:sequence>
|
|
<xs:element name="left" type="xs:string"/>
|
|
<xs:element name="right" type="rightType"/>
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="rightType">
|
|
<xs:choice>
|
|
<xs:element name="binaryoperation" type="binaryOperationType"/>
|
|
<xs:element name="typecast" type="typeCastType"/>
|
|
<xs:element name="expression" type="xs:string"/>
|
|
<xs:element name="ternaryoperator" type="ternaryOperatorType"/>
|
|
<xs:element name="value" type="xs:string"/>
|
|
</xs:choice>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="binaryOperationType">
|
|
<xs:sequence>
|
|
<xs:element name="left" type="xs:string"/>
|
|
<xs:element name="right" type="xs:string"/>
|
|
</xs:sequence>
|
|
<xs:attribute name="operator" type="xs:string" use="required"/>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="typeCastType">
|
|
<xs:sequence>
|
|
<xs:element name="value" type="xs:string"/>
|
|
</xs:sequence>
|
|
<xs:attribute name="type" type="xs:string" use="required"/>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="ternaryOperatorType">
|
|
<xs:sequence>
|
|
<xs:element name="condition" type="xs:string"/>
|
|
<xs:element name="iftrue" type="rightType"/>
|
|
<xs:element name="iffalse" type="rightType"/>
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="returnType">
|
|
<xs:sequence>
|
|
<xs:element name="value" type="xs:string"/>
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
</xs:schema>
|