This repository has been archived on 2025-03-13. You can view files and clone it, but cannot push or open issues or pull requests.
next/next.xsd
2025-02-02 10:56:37 +01:00

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>