wiki:AST Schema

Version 4 (modified by stachnik, 14 years ago) ( diff )

--

  • Example XML File
    <?xml version="1.0" standalone="yes"?>
    <scroot:rootNode xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://vsl.cis.udel.edu/ns/tass/tass_ast
                                  tass_ast.xsd"
              xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:scroot="http://vsl.cis.udel.edu/ns/tass/tass_ast">
      <id_RootNode>1</id_RootNode>
      <fdn_mainFunction>4</fdn_mainFunction>
      <globalScopeNodes>
        <id_GlobalScopeNodes>2</id_GlobalScopeNodes>
        <child>
          <id_FunctionDeclarationNode>4</id_FunctionDeclarationNode>
          <identifier>
            <id_IdentifierNode>5</id_IdentifierNode>
            <name>test</name>
          </identifier>
          <outputType>
            <id_TypeNode>6</id_TypeNode>
          </outputType>
          <formals>
            <id_FormalVariableDeclarationNodes>7</id_FormalVariableDeclarationNodes>
          </formals>
        </child>
      </globalScopeNodes>
      
    </scroot:rootNode>
    
  • Schema
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/tass_ast"
               xmlns:tl="http://vsl.cis.udel.edu/ns/tass/tass_ast"
               xmlns:rtn="http://vsl.cis.udel.edu/ns/tass/RootNode"
               xmlns:astnode="http://vsl.cis.udel.edu/ns/tass/ASTNode"
               xmlns:tyn="http://vsl.cis.udel.edu/ns/tass/type/TypeNode"
               xmlns:fdn="http://vsl.cis.udel.edu/ns/tass/declaration/FunctionDeclarationNode"
               xmlns:ben="http://vsl.cis.udel.edu/ns/tass/statement/expression/BindingExpressionNode"
               xmlns:vdn="http://vsl.cis.udel.edu/ns/tass/declaration/VariableDeclarationNode"
               xmlns:vrn="http://vsl.cis.udel.edu/ns/tass/statement/expression/VariableReferenceNode"
               xmlns:ln="http://vsl.cis.udel.edu/ns/tass/LabelNode"
               xmlns:fvn="http://vsl.cis.udel.edu/ns/tass/declaration/FormalVariableDeclarationNode"
               xmlns:stn="http://vsl.cis.udel.edu/ns/tass/statement/StatementNode"
               xmlns:fin="http://vsl.cis.udel.edu/ns/tass/statement/expression/FunctionInvocationNode"
               xmlns:frn="http://vsl.cis.udel.edu/ns/tass/statement/expression/FunctionReferenceNode"
               xmlns:asrn="http://vsl.cis.udel.edu/ns/tass/statement/AssertStatementNode"
               xmlns:on="http://vsl.cis.udel.edu/ns/tass/statement/expression/OperatorNode"
               xmlns:btn="http://vsl.cis.udel.edu/ns/tass/type/BooleanTypeNode"
               xmlns:file="http://vsl.cis.udel.edu/ns/tass/File"
               xmlns:misc="http://vsl.cis.udel.edu/ns/tass/misc"
               xmlns:gvdn="http://vsl.cis.udel.edu/ns/tass/declaration/GlobalVariableDeclarationNode"
               xmlns:lvdn="http://vsl.cis.udel.edu/ns/tass/declaration/LocalVariableDeclarationNode"
               xmlns:bln="http://vsl.cis.udel.edu/ns/tass/statement/BlockNode"
               xmlns:bvn="http://vsl.cis.udel.edu/ns/tass/declaration/BoundVariableDeclarationNode"
               xmlns:trn="http://vsl.cis.udel.edu/ns/tass/type/TypeReferenceNode"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/RootNode"
                 schemaLocation="RootNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/ASTNode"
                 schemaLocation="ASTNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/BindingExpressionNode"
                 schemaLocation="statement/expression/BindingExpressionNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/RealLiteralNode"
                 schemaLocation="statement/expression/RealLiteralNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/type/IntegerTypeNode"
                 schemaLocation="type/IntegerTypeNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/type/VoidTypeNode"
                schemaLocation="type/VoidTypeNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/AssignmentNode"
                 schemaLocation="statement/expression/AssignmentNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/ReturnNode"
                 schemaLocation="statement/ReturnNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/IntegerLiteralNode"
                 schemaLocation="statement/expression/IntegerLiteralNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/type/PointerTypeNode"
                 schemaLocation="type/PointerTypeNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/FunctionInvocationNode"
                 schemaLocation="statement/expression/FunctionInvocationNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/FunctionReferenceNode"
                 schemaLocation="statement/expression/FunctionReferenceNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/AssertStatementNode"
                 schemaLocation="statement/AssertStatementNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/OperatorNode"
                 schemaLocation="statement/expression/OperatorNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/type/BooleanTypeNode"
                 schemaLocation="type/BooleanTypeNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/File"
                 schemaLocation="File.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/misc"
                 schemaLocation="misc.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/declaration/GlobalVariableDeclarationNode"
                 schemaLocation="declaration/GlobalVariableDeclarationNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/declaration/LocalVariableDeclarationNode"
                 schemaLocation="declaration/LocalVariableDeclarationNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/BlockNode"
                 schemaLocation="statement/BlockNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/declaration/BoundVariableDeclarationNode"
                 schemaLocation="declaration/BoundVariableDeclarationNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/type/TypeReferenceNode"
                 schemaLocation="type/TypeReferenceNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/type/TypeNode"
                 schemaLocation="type/TypeNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/SubscriptNode"
                 schemaLocation="statement/expression/SubscriptNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/ForLoopNode"
                 schemaLocation="statement/ForLoopNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/IncrementNode"
                 schemaLocation="statement/expression/IncrementNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/IncrementNode"
                 schemaLocation="statement/expression/IncrementNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/type/RealTypeNode"
                 schemaLocation="type/RealTypeNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/PragmaNode"
                 schemaLocation="statement/PragmaNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/type/ArrayTypeNode"
                 schemaLocation="type/ArrayTypeNode.xsd" />
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/type/CompositeTypeNode"
                 schemaLocation="type/CompositeTypeNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/TypeDefinitionNode"
                 schemaLocation="TypeDefinitionNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/IfThenElseStatementNode"
                 schemaLocation="statement/IfThenElseStatementNode.xsd" />
    
    
      <xs:element name="rootNode" type="rtn:RootNode">
    
        <xs:unique name="uniqueStatementIds">
          <xs:selector xpath=".//stn:id" />
          <xs:field xpath="." />
        </xs:unique>
    
        <xs:keyref name="strefs"
                   refer="tl:uniqueStatementIds">
          <xs:selector xpath=".//ln:stref" />
          <xs:field xpath="." />
        </xs:keyref>
    
        <xs:unique name="uniqueFunctionRefs">
          <xs:selector xpath=".//fdn:id" />
          <xs:field xpath="." />
        </xs:unique>
    
        <xs:keyref name="frefs"
                   refer="tl:uniqueFunctionRefs">
          <xs:selector xpath=".//fvn:fref" />
          <xs:field xpath="." />
        </xs:keyref>
    
        <xs:keyref name="rrefs"
                   refer="tl:uniqueFunctionRefs">
          <xs:selector xpath=".//frn:rref" />
          <xs:field xpath="." />
        </xs:keyref>
    
        <xs:keyref name="rtnFunctionRefs"
                   refer="tl:uniqueFunctionRefs">
          <xs:selector xpath=".//rtn:mainFunction" />
          <xs:field xpath="." />
        </xs:keyref>
    
        <xs:unique name="uniqueVariableRefs">
          <xs:selector xpath=".//vdn:id" />
          <xs:field xpath="." />
        </xs:unique>
    
        <!--
            Commented out until issues regarding MI in
            GlobalVariableDeclarationNodes are resolved
        <xs:keyref name="vrefs"
                   refer="tl:uniqueVariableRefs">
          <xs:selector xpath=".//vrn:vref" />
          <xs:field xpath="." />
        </xs:keyref> -->
    
        <xs:keyref name="gVariableRefs"
                   refer="tl:uniqueVariableRefs">
          <xs:selector xpath=".//gvdn:dref" />
          <xs:field xpath="." />
        </xs:keyref>
    
        <xs:unique name="uniqueFileRefs">
          <xs:selector xpath=".//file:id" />
          <xs:field xpath="." />
        </xs:unique>
    
        <xs:keyref name="fileRefs"
                   refer="tl:uniqueFileRefs">
          <xs:selector xpath=".//astnode:source" />
          <xs:field xpath="@fileRef" />
        </xs:keyref>
    
        <xs:unique name="uniqueBlockRefs">
          <xs:selector xpath=".//bln:id" />
          <xs:field xpath="." />
        </xs:unique>
    
        <xs:keyref name="brefs"
                   refer="tl:uniqueBlockRefs">
          <xs:selector xpath=".//lvdn:bref" />
          <xs:field xpath="." />
        </xs:keyref>
    
        <xs:unique name="uniqueBindingExpressionRefs">
          <xs:selector xpath=".//ben:ubeid" />
          <xs:field xpath="." />
        </xs:unique>
    
        <xs:keyref name="bindingExpressionrefs"
                   refer="tl:uniqueBindingExpressionRefs">
          <xs:selector xpath=".//bvn:beref" />
          <xs:field xpath="." />
        </xs:keyref>
    
        <xs:unique name="uniqueTypeIds">
          <xs:selector xpath=".//tyn:id" />
          <xs:field xpath="." />
        </xs:unique>
    
        <xs:keyref name="uniqueTypeRefs"
                   refer="tl:uniqueTypeIds">
          <xs:selector xpath=".//trn:typeRef" />
          <xs:field xpath="." />
        </xs:keyref>
    
      </xs:element>
    
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/ASTNode"
               xmlns:astnode="http://vsl.cis.udel.edu/ns/tass/ASTNode"
               xmlns:misc="http://vsl.cis.udel.edu/ns/tass/misc"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/misc"
                 schemaLocation="misc.xsd" />
      
      <xs:complexType name="ASTNode">
        <xs:sequence>
          <xs:element name="source"
                      type="misc:Source"
                      minOccurs="0"
                      maxOccurs="1" />
        </xs:sequence>
      </xs:complexType>
      
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/TypeDefinitionNode"
               xmlns:gsn="http://vsl.cis.udel.edu/ns/tass/GlobalScopeNode"
               xmlns:idn="http://vsl.cis.udel.edu/ns/tass/IdentifierNode"
               xmlns:tyn="http://vsl.cis.udel.edu/ns/tass/type/TypeNode"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/GlobalScopeNode"
                 schemaLocation="GlobalScopeNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/IdentifierNode"
                 schemaLocation="IdentifierNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/type/TypeNode"
                 schemaLocation="type/TypeNode.xsd" />
    
      <xs:complexType name="TypeDefinitionNode">
        <xs:complexContent>
          <xs:extension base="gsn:GlobalScopeNode">
            <xs:sequence>
              <xs:element name="identifier"
                          type="idn:IdentifierNode" />
              <xs:element name="type"
                          type="tyn:TypeNode" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/type/CompositeTypeNode"
               xmlns:ctn="http://vsl.cis.udel.edu/ns/tass/type/CompositeTypeNode"
               xmlns:idn="http://vsl.cis.udel.edu/ns/tass/IdentifierNode"
               xmlns:tn="http://vsl.cis.udel.edu/ns/tass/type/TypeNode"
               xmlns:astnode="http://vsl.cis.udel.edu/ns/tass/ASTNode"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/ASTNode"
                 schemaLocation="../ASTNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/type/TypeNode"
                 schemaLocation="TypeNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/IdentifierNode"
                 schemaLocation="../IdentifierNode.xsd" />
    
      <xs:complexType name="CompositeTypeNode">
        <xs:complexContent>
          <xs:extension base="tn:TypeNode">
            <xs:sequence>
              <xs:element name="name"
                          type="idn:IdentifierNode" />
              <xs:element name="fields"
                          type="ctn:Fields" />
              <xs:element name="isUnion"
                          minOccurs="0"
                          type="xs:boolean"
                          default="false" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
      <xs:complexType name="Fields">
        <xs:complexContent>
          <xs:extension base="astnode:ASTNode">
            <xs:sequence>
              <xs:element name="child"
                          type="ctn:Field"
                          minOccurs="0"
                          maxOccurs="unbounded" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
      <xs:complexType name="Field">
        <xs:complexContent>
          <xs:extension base="astnode:ASTNode">
            <xs:sequence>
              <xs:element name="left"
                          type="idn:IdentifierNode" />
              <xs:element name="right"
                          type="tn:TypeNode" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
    </xs:schema>
    
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/type/IntegerTypeNode"
               xmlns:itn="http://vsl.cis.udel.edu/ns/tass/type/IntegerTypeNode"
               xmlns:tn="http://vsl.cis.udel.edu/ns/tass/type/TypeNode"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/type/TypeNode"
                 schemaLocation="TypeNode.xsd" />
    
      <xs:simpleType name="IntType">
        <xs:restriction base="xs:string">
          <xs:enumeration value="CHAR" />
          <xs:enumeration value="SHORT" />
          <xs:enumeration value="INT" />
          <xs:enumeration value="LONG" />
          <xs:enumeration value="LONGLONG" />
        </xs:restriction>
      </xs:simpleType>
    
      <xs:complexType name="IntegerTypeNode">
        <xs:complexContent>
          <xs:extension base="tn:TypeNode">
            <xs:attribute name="intType" type="itn:IntType" default="INT" />
            <xs:attribute name="isSigned" type="xs:boolean" default="true" />
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/type/TypeNode"
               xmlns:szn="http://vsl.cis.udel.edu/ns/tass/SizeableNode"
               xmlns:misc="http://vsl.cis.udel.edu/ns/tass/misc"
               xmlns:tyn="http://vsl.cis.udel.edu/ns/tass/type/TypeNode"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/SizeableNode"
                 schemaLocation="../SizeableNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/misc"
                 schemaLocation="../misc.xsd" />
    
      <xs:complexType name="TypeNode">
        <xs:complexContent>
          <xs:extension base="szn:SizeableNode">
            <xs:sequence>
              <xs:element name="id"
                          type="misc:Guid"
                          minOccurs="0"
                          maxOccurs="1" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/type/PointerTypeNode"
               xmlns:ptn="http://vsl.cis.udel.edu/ns/tass/type/PointerTypeNode"
               xmlns:tn="http://vsl.cis.udel.edu/ns/tass/type/TypeNode"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/type/TypeNode"
                 schemaLocation="TypeNode.xsd" />
    
      <xs:complexType name="PointerTypeNode">
        <xs:complexContent>
          <xs:extension base="tn:TypeNode">
            <xs:sequence>
              <xs:element name="baseType" type="tn:TypeNode" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/type/TypeReferenceNode"
               xmlns:astnode="http://vsl.cis.udel.edu/ns/tass/ASTNode"
               xmlns:idn="http://vsl.cis.udel.edu/ns/tass/IdentifierNode"
               xmlns:trn="http://vsl.cis.udel.edu/ns/tass/type/TypeReferenceNode"
               xmlns:misc="http://vsl.cis.udel.edu/ns/tass/misc"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/IdentifierNode"
                 schemaLocation="../IdentifierNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/misc"
                 schemaLocation="../misc.xsd" />
    
      <xs:complexType name="TypeReferenceNode">
        <xs:complexContent>
          <xs:extension base="idn:IdentifierNode">
            <xs:attribute name="typeRef" type="misc:Guid" />
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/type/VoidTypeNode"
               xmlns:vtn="http://vsl.cis.udel.edu/ns/tass/type/VoidTypeNode"
               xmlns:tn="http://vsl.cis.udel.edu/ns/tass/type/TypeNode"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/type/TypeNode"
                 schemaLocation="TypeNode.xsd" />
    
      <xs:complexType name="VoidTypeNode">
        <xs:complexContent>
          <xs:extension base="tn:TypeNode" />
        </xs:complexContent>
      </xs:complexType>
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/type/ArrayTypeNode"
               xmlns:atn="http://vsl.cis.udel.edu/ns/tass/type/ArrayTypeNode"
               xmlns:tn="http://vsl.cis.udel.edu/ns/tass/type/TypeNode"
               xmlns:en="http://vsl.cis.udel.edu/ns/tass/statement/expression/ExpressionNode"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/type/TypeNode"
                 schemaLocation="TypeNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/ExpressionNode"
                 schemaLocation="../statement/expression/ExpressionNode.xsd" />
    
    
      <xs:complexType name="ArrayTypeNode">
        <xs:complexContent>
          <xs:extension base="tn:TypeNode">
            <xs:sequence>
              <xs:element name="elementType"
                          type="tn:TypeNode" />
              <xs:element name="extent"
                          type="en:ExpressionNode"
                          minOccurs="0" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/type/BooleanTypeNode"
               xmlns:btn="http://vsl.cis.udel.edu/ns/tass/type/BooleanTypeNode"
               xmlns:tn="http://vsl.cis.udel.edu/ns/tass/type/TypeNode"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/type/TypeNode"
                 schemaLocation="TypeNode.xsd" />
    
      <xs:complexType name="BooleanTypeNode">
        <xs:complexContent>
          <xs:extension base="tn:TypeNode" />
        </xs:complexContent>
      </xs:complexType>
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/type/RealTypeNode"
               xmlns:rtn="http://vsl.cis.udel.edu/ns/tass/type/RealTypeNode"
               xmlns:tn="http://vsl.cis.udel.edu/ns/tass/type/TypeNode"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/type/TypeNode"
                 schemaLocation="TypeNode.xsd" />
    
      <xs:simpleType name="FloatType">
        <xs:restriction base="xs:string">
          <xs:enumeration value="FLOAT" />
          <xs:enumeration value="DOUBLE" />
          <xs:enumeration value="LONG" />
        </xs:restriction>
      </xs:simpleType>
    
    
      <xs:complexType name="RealTypeNode">
        <xs:complexContent>
          <xs:extension base="tn:TypeNode">
            <xs:attribute name="floatType" type="rtn:FloatType" default="DOUBLE" />
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/GlobalScopeNode"
               xmlns:astnode="http://vsl.cis.udel.edu/ns/tass/ASTNode"
               xmlns:gsn="http://vsl.cis.udel.edu/ns/tass/GlobalScopeNode"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/ASTNode"
                 schemaLocation="ASTNode.xsd" />
    
      <xs:complexType name="GlobalScopeNode" abstract="true">
        <xs:complexContent>
          <xs:extension base="astnode:ASTNode" />
        </xs:complexContent>
      </xs:complexType>
    
      <xs:complexType name="GlobalScopeNodes">
        <xs:complexContent>
          <xs:extension base="astnode:ASTNode">
            <xs:sequence>
              <xs:element name="child"
                          type="gsn:GlobalScopeNode"
                          minOccurs="0"
                          maxOccurs="unbounded" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/LabelNode"
               xmlns:ln="http://vsl.cis.udel.edu/ns/tass/LabelNode"
               xmlns:astnode="http://vsl.cis.udel.edu/ns/tass/ASTNode"
               xmlns:idn="http://vsl.cis.udel.edu/ns/tass/IdentifierNode"
               xmlns:misc="http://vsl.cis.udel.edu/ns/tass/misc"
               elementFormDefault="qualified">
               
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/ASTNode"
                 schemaLocation="ASTNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/IdentifierNode"
                 schemaLocation="IdentifierNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/misc"
                 schemaLocation="misc.xsd" />
    
      <xs:complexType name="LabelNode">
        <xs:complexContent>
          <xs:extension base="astnode:ASTNode">
            <xs:sequence>
              <xs:element name="identifier"
                          type="idn:IdentifierNode" />
              <xs:element name="stref"
                          type="misc:Guid" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
      <xs:complexType name="LabelNodes">
        <xs:complexContent>
          <xs:extension base="astnode:ASTNode">
            <xs:sequence>
              <xs:element name="child"
                          type="ln:LabelNode" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    </xs:schema>
    
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/declaration/FormalVariableDeclarationNode"
               xmlns:fvn="http://vsl.cis.udel.edu/ns/tass/declaration/FormalVariableDeclarationNode"
               xmlns:vdn="http://vsl.cis.udel.edu/ns/tass/declaration/VariableDeclarationNode"
               xmlns:misc="http://vsl.cis.udel.edu/ns/tass/misc"
               xmlns:astnode="http://vsl.cis.udel.edu/ns/tass/ASTNode"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/declaration/VariableDeclarationNode"
                 schemaLocation="VariableDeclarationNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/misc"
                 schemaLocation="../misc.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/ASTNode"
                 schemaLocation="../ASTNode.xsd" />
    
      <xs:complexType name="FormalVariableDeclarationNode">
        <xs:complexContent>
          <xs:extension base="vdn:VariableDeclarationNode">
            <xs:sequence>
              <xs:element name="fref"
                          type="misc:Guid" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
      <xs:complexType name="FormalVariableDeclarationNodes">
        <xs:complexContent>
          <xs:extension base="astnode:ASTNode">
            <xs:sequence>
              <xs:element name="child"
                          type="fvn:FormalVariableDeclarationNode"
                          minOccurs="0"
                          maxOccurs="unbounded" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/declaration/GlobalVariableDeclarationNode"
               xmlns:gsn="http://vsl.cis.udel.edu/ns/tass/GlobalScopeNode"
               xmlns:vdn="http://vsl.cis.udel.edu/ns/tass/declaration/VariableDeclarationNode"
               xmlns:gvdn="http://vsl.cis.udel.edu/ns/tass/declaration/GlobalVariableDeclarationNode"
               xmlns:astnode="http://vsl.cis.udel.edu/ns/tass/ASTNode"
               xmlns:idn="http://vsl.cis.udel.edu/ns/tass/IdentifierNode"
               xmlns:tyn="http://vsl.cis.udel.edu/ns/tass/type/TypeNode"
               xmlns:exn="http://vsl.cis.udel.edu/ns/tass/statement/expression/ExpressionNode"
               xmlns:misc="http://vsl.cis.udel.edu/ns/tass/misc"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/ASTNode"
                 schemaLocation="../ASTNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/IdentifierNode"
                 schemaLocation="../IdentifierNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/ExpressionNode"
                 schemaLocation="../statement/expression/ExpressionNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/type/TypeNode"
                 schemaLocation="../type/TypeNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/misc"
                 schemaLocation="../misc.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/declaration/VariableDeclarationNode"
                 schemaLocation="VariableDeclarationNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/GlobalScopeNode"
                 schemaLocation="../GlobalScopeNode.xsd" />
    
      <xs:complexType name="GlobalVariableDeclarationNode">
        <xs:complexContent>
          <xs:extension base="gsn:GlobalScopeNode">
            <xs:sequence>
              <xs:element name="id"
                          type="misc:Guid"
                          minOccurs="0" />
              <xs:element name="name"
                          type="idn:IdentifierNode" />
              <xs:element name="type"
                          type="tyn:TypeNode" />
              <xs:element name="initializer"
                          type="exn:ExpressionNode"
                          minOccurs="0"
                          maxOccurs="1" />
              <xs:element name="isConst"
                          minOccurs="0" />
              <xs:element name="isVolatile"
                          minOccurs="0" />
              <xs:element name="isRestict"
                          minOccurs="0" />
              <xs:element name="storageClass"
                          type="vdn:StorageClass"
                          minOccurs="0"
                          maxOccurs="1" />
              <xs:element name="dref"
                          type="misc:Guid"
                          minOccurs="0" />
              <xs:element name="isDefinition"
                          minOccurs="0" />
              <xs:element name="isInput"
                          minOccurs="0" />
              <xs:element name="isOutput"
                          minOccurs="0" />
              <xs:element name="isShared"
                          minOccurs="0" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
      <xs:complexType name="GlobalVariableDeclarationNodes">
        <xs:complexContent>
          <xs:extension base="astnode:ASTNode">
            <xs:sequence>
              <xs:element name="child"
                          type="gvdn:GlobalVariableDeclarationNode"
                          minOccurs="0"
                          maxOccurs="unbounded" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/declaration/VariableDeclarationNode"
               xmlns:vdn="http://vsl.cis.udel.edu/ns/tass/declaration/VariableDeclarationNode"
               xmlns:astnode="http://vsl.cis.udel.edu/ns/tass/ASTNode"
               xmlns:idn="http://vsl.cis.udel.edu/ns/tass/IdentifierNode"
               xmlns:tyn="http://vsl.cis.udel.edu/ns/tass/type/TypeNode"
               xmlns:exn="http://vsl.cis.udel.edu/ns/tass/statement/expression/ExpressionNode"
               xmlns:misc="http://vsl.cis.udel.edu/ns/tass/misc"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/ASTNode"
                 schemaLocation="../ASTNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/IdentifierNode"
                 schemaLocation="../IdentifierNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/ExpressionNode"
                 schemaLocation="../statement/expression/ExpressionNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/type/TypeNode"
                 schemaLocation="../type/TypeNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/misc"
                 schemaLocation="../misc.xsd" />
    
      <xs:simpleType name="StorageClass">
        <xs:restriction base="xs:string">
          <xs:enumeration value="EXTERNAL" />
          <xs:enumeration value="AUTO" />
          <xs:enumeration value="STATIC" />
          <xs:enumeration value="REGISTER" />
        </xs:restriction>
      </xs:simpleType>
    
      <xs:complexType name="VariableDeclarationNode" abstract="true">
        <xs:complexContent>
          <xs:extension base="astnode:ASTNode">
            <xs:sequence>
              <xs:element name="id"
                          type="misc:Guid"
                          minOccurs="0" />
              <xs:element name="name"
                          type="idn:IdentifierNode" />
              <xs:element name="type"
                          type="tyn:TypeNode" />
              <xs:element name="initializer"
                          type="exn:ExpressionNode"
                          minOccurs="0"
                          maxOccurs="1" />
              <xs:element name="isConst"
                          minOccurs="0" />
              <xs:element name="isVolatile"
                          minOccurs="0" />
              <xs:element name="isRestict"
                          minOccurs="0" />
              <xs:element name="storageClass"
                          type="vdn:StorageClass"
                          minOccurs="0" 
                          maxOccurs="1" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
      <xs:complexType name="VariableDeclarationNodes">
        <xs:complexContent>
          <xs:extension base="astnode:ASTNode">
            <xs:sequence>
              <xs:element name="child"
                          type="vdn:VariableDeclarationNode"
                          minOccurs="0"
                          maxOccurs="unbounded" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/declaration/BoundVariableDeclarationNode"
               xmlns:bvn="http://vsl.cis.udel.edu/ns/tass/declaration/BoundVariableDeclarationNode"
               xmlns:vdn="http://vsl.cis.udel.edu/ns/tass/declaration/VariableDeclarationNode"
               xmlns:misc="http://vsl.cis.udel.edu/ns/tass/misc"
               xmlns:astnode="http://vsl.cis.udel.edu/ns/tass/ASTNode"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/declaration/VariableDeclarationNode"
                 schemaLocation="VariableDeclarationNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/misc"
                 schemaLocation="../misc.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/ASTNode"
                 schemaLocation="../ASTNode.xsd" />
    
      <xs:complexType name="BoundVariableDeclarationNode">
        <xs:complexContent>
          <xs:extension base="vdn:VariableDeclarationNode">
            <xs:sequence>
              <xs:element name="beref"
                          type="misc:Guid" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
      <xs:complexType name="BoundVariableDeclarationNodes">
        <xs:complexContent>
          <xs:extension base="astnode:ASTNode">
            <xs:sequence>
              <xs:element name="child"
                          type="bvn:BoundVariableDeclarationNode"
                          minOccurs="0"
                          maxOccurs="unbounded" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/declaration/FunctionDeclarationNode"
               xmlns:fdn="http://vsl.cis.udel.edu/ns/tass/declaration/FunctionDeclarationNode"
               xmlns:gsn="http://vsl.cis.udel.edu/ns/tass/GlobalScopeNode"
               xmlns:idn="http://vsl.cis.udel.edu/ns/tass/IdentifierNode"
               xmlns:tyn="http://vsl.cis.udel.edu/ns/tass/type/TypeNode"
               xmlns:fvn="http://vsl.cis.udel.edu/ns/tass/declaration/FormalVariableDeclarationNode"
               xmlns:bln="http://vsl.cis.udel.edu/ns/tass/statement/BlockNode"
               xmlns:misc="http://vsl.cis.udel.edu/ns/tass/misc"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/GlobalScopeNode"
                 schemaLocation="../GlobalScopeNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/IdentifierNode"
                 schemaLocation="../IdentifierNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/BlockNode"
                 schemaLocation="../statement/BlockNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/type/TypeNode"
                 schemaLocation="../type/TypeNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/declaration/FormalVariableDeclarationNode"
                 schemaLocation="FormalVariableDeclarationNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/misc"
                 schemaLocation="../misc.xsd" />
      
      <xs:complexType name="FunctionDeclarationNode">
        <xs:complexContent>
          <xs:extension base="gsn:GlobalScopeNode">
            <xs:sequence>
              <xs:element name="id"
                          type="misc:Guid"
                          minOccurs="0" />
              <xs:element name="name"
                          type="idn:IdentifierNode" />
              <xs:element name="outputType"
                          type="tyn:TypeNode" />
              <xs:element name="formals"
                          type="fvn:FormalVariableDeclarationNodes" />
              <xs:choice minOccurs="0">
                <xs:element name="fref"
                            type="misc:Guid" />
                <xs:element name="body"
                            type="bln:BlockNode" />
              </xs:choice>
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/declaration/LocalVariableDeclarationNode"
               xmlns:vdn="http://vsl.cis.udel.edu/ns/tass/declaration/VariableDeclarationNode"
               xmlns:lvdn="http://vsl.cis.udel.edu/ns/tass/declaration/LocalVariableDeclarationNode"
               xmlns:astnode="http://vsl.cis.udel.edu/ns/tass/ASTNode"
               xmlns:idn="http://vsl.cis.udel.edu/ns/tass/IdentifierNode"
               xmlns:tyn="http://vsl.cis.udel.edu/ns/tass/type/TypeNode"
               xmlns:exn="http://vsl.cis.udel.edu/ns/tass/statement/expression/ExpressionNode"
               xmlns:misc="http://vsl.cis.udel.edu/ns/tass/misc"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/ASTNode"
                 schemaLocation="../ASTNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/IdentifierNode"
                 schemaLocation="../IdentifierNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/ExpressionNode"
                 schemaLocation="../statement/expression/ExpressionNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/type/TypeNode"
                 schemaLocation="../type/TypeNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/misc"
                 schemaLocation="../misc.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/declaration/VariableDeclarationNode"
                 schemaLocation="VariableDeclarationNode.xsd" />
    
      <xs:complexType name="LocalVariableDeclarationNode">
        <xs:complexContent>
          <xs:extension base="vdn:VariableDeclarationNode">
            <xs:sequence>
              <xs:element name="bref"
                          type="misc:Guid" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
      <xs:complexType name="LocalVariableDeclarationNodes">
        <xs:complexContent>
          <xs:extension base="astnode:ASTNode">
            <xs:sequence>
              <xs:element name="child"
                          type="lvdn:LocalVariableDeclarationNode"
                          minOccurs="0"
                          maxOccurs="unbounded" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/SizeableNode"
               xmlns:astnode="http://vsl.cis.udel.edu/ns/tass/ASTNode"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/ASTNode"
                 schemaLocation="ASTNode.xsd" />
    
      <xs:complexType name="SizeableNode">
        <xs:complexContent>
          <xs:extension base="astnode:ASTNode" />
        </xs:complexContent>
      </xs:complexType>
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/misc"
               xmlns:misc="http://vsl.cis.udel.edu/ns/tass/misc"
               elementFormDefault="qualified">
    
      <xs:simpleType name="Guid">
        <xs:restriction base="xs:integer" />
      </xs:simpleType>
    
      <xs:complexType name="Source">
        <xs:attribute name="region" type="misc:SourceRegion" use="required" />
        <xs:attribute name="fileRef" type="misc:Guid" use="required" />
      </xs:complexType>
    
      <xs:simpleType name="SourceRegion">
        <xs:restriction base="xs:string">
          <xs:annotation>
            <xs:documentation xml:lang="en-US">
              This type represents a region of source file and is to be
              parsed as the following:
              [startLine],[startColumn],[endLine],[endColumn]
              It is assumed that: endLine &gt;= startLine
              and if endLine == startLine that endColumn &gt; startColumn
            </xs:documentation>
          </xs:annotation>
          <xs:pattern value="\d+,\d+,\d+,\d+" />
        </xs:restriction>
      </xs:simpleType>
      
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/IdentifierNode"
               xmlns:astnode="http://vsl.cis.udel.edu/ns/tass/ASTNode"
               xmlns:idn="http://vsl.cis.udel.edu/ns/tass/IdentifierNode"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/ASTNode"
                 schemaLocation="ASTNode.xsd" />
    
      <xs:complexType name="IdentifierNode">
        <xs:complexContent>
          <xs:extension base="astnode:ASTNode">
            <xs:attribute name="identifier" type="xs:string" />
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               xmlns:file="http://vsl.cis.udel.edu/ns/tass/File"
               xmlns:sqn="http://vsl.cis.udel.edu/ns/tass/SequenceNode"
               xmlns:misc="http://vsl.cis.udel.edu/ns/tass/misc"
               xmlns:astnode="http://vsl.cis.udel.edu/ns/tass/ASTNode"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/File"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/ASTNode"
                 schemaLocation="ASTNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/misc"
                 schemaLocation="misc.xsd" />
      
      <xs:complexType name="File">
          <xs:sequence>
            <xs:element name="id"
                        type="misc:Guid" />
            <xs:element name="fileName"
                        type="xs:string" />
            <xs:element name="contents"
                        type="xs:string"
                        minOccurs="0" />
          </xs:sequence>
          <xs:attribute name="isSystem"
                        type="xs:boolean"
                        default="false" />
      </xs:complexType>
    
      <xs:complexType name="Files">
        <xs:complexContent>
          <xs:extension base="astnode:ASTNode">
            <xs:sequence>
              <xs:element name="child"
                          type="file:File"
                          minOccurs="1"
                          maxOccurs="unbounded" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/RootNode"
               xmlns:gsn="http://vsl.cis.udel.edu/ns/tass/GlobalScopeNode"
               xmlns:fdn="http://vsl.cis.udel.edu/ns/tass/declaration/FunctionDeclarationNode"
               xmlns:rtn="http://vsl.cis.udel.edu/ns/tass/RootNode"
               xmlns:file="http://vsl.cis.udel.edu/ns/tass/File"
               xmlns:misc="http://vsl.cis.udel.edu/ns/tass/misc"
               xmlns:astnode="http://vsl.cis.udel.edu/ns/tass/ASTNode"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/GlobalScopeNode"
                 schemaLocation="GlobalScopeNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/declaration/FunctionDeclarationNode"
                 schemaLocation="declaration/FunctionDeclarationNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/File"
                 schemaLocation="File.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/ASTNode"
                 schemaLocation="ASTNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/misc"
                 schemaLocation="misc.xsd" />
    
      <xs:complexType name="RootNode">
        <xs:complexContent>
          <xs:extension base="astnode:ASTNode">
            <xs:sequence>
              <xs:element name="globalScopeNodes"
                          type="gsn:GlobalScopeNodes" />
              <xs:element name="mainFunction"
                          type="misc:Guid"
                          minOccurs="0"
                          maxOccurs="1" />
              <xs:element name="files"
                          type="file:Files" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/statement/IfThenElseStatementNode"
               xmlns:ite="http://vsl.cis.udel.edu/ns/tass/statement/IfThenElseStatementNode"
               xmlns:stn="http://vsl.cis.udel.edu/ns/tass/statement/StatementNode"
               xmlns:exn="http://vsl.cis.udel.edu/ns/tass/statement/expression/ExpressionNode"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/StatementNode"
                 schemaLocation="StatementNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/ExpressionNode"
                 schemaLocation="expression/ExpressionNode.xsd" />
    
      <xs:complexType name="IfThenElseStatementNode">
        <xs:complexContent>
          <xs:extension base="stn:StatementNode">
            <xs:sequence>
              <xs:element name="condition"
                          type="exn:ExpressionNode" />
              <xs:element name="trueBranch"
                          type="stn:StatementNode" />
              <xs:element name="falseBranch"
                          type="stn:StatementNode"
                          minOccurs="0" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/statement/ReturnNode"
               xmlns:stn="http://vsl.cis.udel.edu/ns/tass/statement/StatementNode"
               xmlns:en="http://vsl.cis.udel.edu/ns/tass/statement/expression/ExpressionNode"
               xmlns:rn="http://vsl.cis.udel.edu/ns/tass/statement/ReturnNode"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/StatementNode"
                 schemaLocation="StatementNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/ExpressionNode"
                 schemaLocation="expression/ExpressionNode.xsd" />
    
      <xs:complexType name="ReturnNode">
        <xs:complexContent>
          <xs:extension base="stn:StatementNode">
            <xs:sequence>
              <xs:element name="expression"
                          type="en:ExpressionNode" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/statement/ForLoopNode"
               xmlns:fln="http://vsl.cis.udel.edu/ns/tass/statement/ForLoopNode"
               xmlns:exn="http://vsl.cis.udel.edu/ns/tass/statement/expression/ExpressionNode"
               xmlns:stn="http://vsl.cis.udel.edu/ns/tass/statement/StatementNode"
               xmlns:ln="http://vsl.cis.udel.edu/ns/tass/statement/LoopNode"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/LoopNode"
                 schemaLocation="LoopNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/StatementNode"
                 schemaLocation="StatementNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/ExpressionNode"
                 schemaLocation="expression/ExpressionNode.xsd" />
    
      <xs:complexType name="ForLoopNode">
        <xs:complexContent>
          <xs:extension base="ln:LoopNode">
            <xs:sequence>
              <xs:element name="initializer"
                          type="stn:StatementNode" />
              <xs:element name="condition"
                          type="exn:ExpressionNode" />
              <xs:element name="incrementer"
                          type="stn:StatementNode" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/statement/PragmaNode"
               xmlns:pn="http://vsl.cis.udel.edu/ns/tass/statement/PragmaNode"
               xmlns:astnode="http://vsl.cis.udel.edu/ns/tass/ASTNode"
               xmlns:gsn="http://vsl.cis.udel.edu/ns/tass/GlobalScopeNode"
               xmlns:stn="http://vsl.cis.udel.edu/ns/tass/statement/StatementNode"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/StatementNode"
                 schemaLocation="StatementNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/GlobalScopeNode"
                 schemaLocation="../GlobalScopeNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/ASTNode"
                 schemaLocation="../ASTNode.xsd" />
    
      <xs:complexType name="PragmaNode">
        <xs:complexContent>
          <xs:extension base="stn:StatementNode">
            <xs:sequence>
              <xs:element name="string"
                          type="xs:string" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
      <xs:complexType name="GlobalPragmaNode">
        <xs:complexContent>
          <xs:extension base="gsn:GlobalScopeNode">
            <xs:sequence>
              <xs:element name="pragmaNode"
                          type="pn:PragmaNode" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
      <xs:complexType name="PragmaNodes">
        <xs:complexContent>
          <xs:extension base="astnode:ASTNode">
            <xs:sequence>
              <xs:element name="child"
                          type="pn:PragmaNode"
                          minOccurs="0"
                          maxOccurs="unbounded" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/LHSExpressionNode"
               xmlns:lhsn="http://vsl.cis.udel.edu/ns/tass/statement/expression/LHSExpressionNode"
               xmlns:pen="http://vsl.cis.udel.edu/ns/tass/statement/expression/PureExpressionNode"
               xmlns:astnode="http://vsl.cis.udel.edu/ns/tass/ASTNode"
               xmlns:vrn="http://vsl.cis.udel.edu/ns/tass/statement/expression/VariableReferenceNode"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/PureExpressionNode"
                 schemaLocation="PureExpressionNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/ASTNode"
                 schemaLocation="../../ASTNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/VariableReferenceNode"
                 schemaLocation="VariableReferenceNode.xsd" />
    
      <xs:complexType name="LHSExpressionNode">
        <xs:complexContent>
          <xs:extension base="pen:PureExpressionNode" />
        </xs:complexContent>
      </xs:complexType>
    
      <xs:complexType name="LHSExpressionNodes">
        <xs:complexContent>
          <xs:extension base="astnode:ASTNode">
            <xs:sequence>
              <xs:element name="child"
                          type="lhsn:LHSExpressionNode"
                          minOccurs="0"
                          maxOccurs="unbounded" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/AssignmentNode"
               xmlns:asn="http://vsl.cis.udel.edu/ns/tass/statement/expression/AssignmentNode"
               xmlns:mdn="http://vsl.cis.udel.edu/ns/tass/statement/expression/ModificationNode"
               xmlns:exn="http://vsl.cis.udel.edu/ns/tass/statement/expression/ExpressionNode"
               xmlns:astnode="http://vsl.cis.udel.edu/ns/tass/ASTNode"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/ModificationNode"
                 schemaLocation="ModificationNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/ExpressionNode"
                 schemaLocation="ExpressionNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/ASTNode"
                 schemaLocation="../../ASTNode.xsd" />
    
      <xs:simpleType name="AST_ASSIGNMENT_TYPE">
        <xs:restriction base="xs:string">
          <xs:whiteSpace value="collapse" />
          <xs:enumeration value="SIMPLE" />
          <xs:enumeration value="MULTIPLICATION" />
          <xs:enumeration value="DIVISION" />
          <xs:enumeration value="REMAINDER" />
          <xs:enumeration value="ADDITION" />
          <xs:enumeration value="SUBTRACTION" />
          <xs:enumeration value="LEFT" />
          <xs:enumeration value="RIGHT" />
          <xs:enumeration value="AND" />
          <xs:enumeration value="XOR" />
          <xs:enumeration value="OR" />
        </xs:restriction>
      </xs:simpleType>
    
    
      <xs:complexType name="AssignmentNode">
        <xs:complexContent>
          <xs:extension base="mdn:ModificationNode">
            <xs:sequence>
              <xs:element name="assignmentType"
                          type="asn:AST_ASSIGNMENT_TYPE"
                          minOccurs="0" />
              <xs:element name="rhs" type="exn:ExpressionNode" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
      <xs:complexType name="AssignmentNodes">
        <xs:complexContent>
          <xs:extension base="astnode:ASTNode">
            <xs:sequence>
              <xs:element name="child"
                          type="asn:AssignmentNode"
                          minOccurs="0"
                          maxOccurs="unbounded" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/RealLiteralNode"
               xmlns:pen="http://vsl.cis.udel.edu/ns/tass/statement/expression/PureExpressionNode"
               xmlns:en="http://vsl.cis.udel.edu/ns/tass/statement/expression/ExpressionNode"
               xmlns:misc="http://vsl.cis.udel.edu/ns/tass/misc"
               xmlns:astnode="http://vsl.cis.udel.edu/ns/tass/ASTNode"
               xmlns:ln="http://vsl.cis.udel.edu/ns/tass/statement/expression/LiteralNode"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/ExpressionNode"
                 schemaLocation="ExpressionNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/LiteralNode"
                 schemaLocation="LiteralNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/misc"
                 schemaLocation="../../misc.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/ASTNode"
                 schemaLocation="../../ASTNode.xsd" />
    
      <xs:complexType name="RealLiteralNode">
        <xs:complexContent>
          <xs:extension base="ln:LiteralNode">
            <xs:sequence>
              <xs:element name="realValue"
                          type="xs:double" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/LiteralNode"
               xmlns:pen="http://vsl.cis.udel.edu/ns/tass/statement/expression/PureExpressionNode"
               xmlns:en="http://vsl.cis.udel.edu/ns/tass/statement/expression/ExpressionNode"
               xmlns:misc="http://vsl.cis.udel.edu/ns/tass/misc"
               xmlns:tn="http://vsl.cis.udel.edu/ns/tass/type/TypeNode"
               xmlns:idn="http://vsl.cis.udel.edu/ns/tass/IdentifierNode"
               xmlns:astnode="http://vsl.cis.udel.edu/ns/tass/ASTNode"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/PureExpressionNode"
                 schemaLocation="PureExpressionNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/misc"
                 schemaLocation="../../misc.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/ASTNode"
                 schemaLocation="../../ASTNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/IdentifierNode"
                 schemaLocation="../../IdentifierNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/type/TypeNode"
                 schemaLocation="../../type/TypeNode.xsd" />
    
      <xs:complexType name="LiteralNode">
        <xs:complexContent>
          <xs:extension base="pen:PureExpressionNode">
            <xs:sequence>
              <xs:element name="name"
                          type="idn:IdentifierNode"
                          minOccurs="0"
                          maxOccurs="1" />
              <xs:element name="type"
                          type="tn:TypeNode" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/VariableReferenceNode"
               xmlns:stn="http://vsl.cis.udel.edu/ns/tass/statement/StatementNode"
               xmlns:lhsn="http://vsl.cis.udel.edu/ns/tass/statement/expression/LHSExpressionNode"
               xmlns:misc="http://vsl.cis.udel.edu/ns/tass/misc"
               xmlns:vrn="http://vsl.cis.udel.edu/ns/tass/statement/expression/VariableReferenceNode"
               xmlns:idn="http://vsl.cis.udel.edu/ns/tass/IdentifierNode"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/StatementNode"
                 schemaLocation="../StatementNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/ExpressionNode"
                 schemaLocation="ExpressionNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/misc"
                 schemaLocation="../../misc.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/LHSExpressionNode"
                 schemaLocation="LHSExpressionNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/IdentifierNode"
                 schemaLocation="../../IdentifierNode.xsd" />
    
      <xs:complexType name="VariableReferenceNode">
        <xs:complexContent>
          <xs:extension base="lhsn:LHSExpressionNode">
            <xs:sequence>
              <xs:element name="vref"
                          type="misc:Guid" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/IncrementNode"
               xmlns:in="http://vsl.cis.udel.edu/ns/tass/statement/expression/IncrementNode"
               xmlns:mdn="http://vsl.cis.udel.edu/ns/tass/statement/expression/ModificationNode"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/ModificationNode"
                 schemaLocation="ModificationNode.xsd" />
    
      <xs:complexType name="IncrementNode">
        <xs:complexContent>
          <xs:extension base="mdn:ModificationNode">
            <xs:attribute name="prefix"
                          type="xs:boolean"
                          default="true" />
            <xs:attribute name="increment"
                          type="xs:boolean"
                          default="true" />
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/SubscriptNode"
               xmlns:ssn="http://vsl.cis.udel.edu/ns/tass/statement/expression/SubscriptNode"
               xmlns:exn="http://vsl.cis.udel.edu/ns/tass/statement/expression/ExpressionNode"
               xmlns:lhsn="http://vsl.cis.udel.edu/ns/tass/statement/expression/LHSExpressionNode"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/LHSExpressionNode"
                 schemaLocation="LHSExpressionNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/ExpressionNode"
                 schemaLocation="ExpressionNode.xsd" />
    
      <xs:complexType name="SubscriptNode">
        <xs:complexContent>
          <xs:extension base="lhsn:LHSExpressionNode">
            <xs:sequence>
              <xs:element name="arrayExpression"
                          type="exn:ExpressionNode" />
              <xs:element name="indexExpression"
                          type="exn:ExpressionNode" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/ModificationNode"
               xmlns:mdn="http://vsl.cis.udel.edu/ns/tass/statement/expression/ModificationNode"
               xmlns:lhsn="http://vsl.cis.udel.edu/ns/tass/statement/expression/LHSExpressionNode"
               xmlns:seen="http://vsl.cis.udel.edu/ns/tass/statement/expression/SideEffectExpressionNode"
               xmlns:astnode="http://vsl.cis.udel.edu/ns/tass/ASTNode"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/LHSExpressionNode"
                 schemaLocation="LHSExpressionNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/SideEffectExpressionNode"
                 schemaLocation="SideEffectExpressionNode.xsd" />
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/ASTNode"
                 schemaLocation="../../ASTNode.xsd" />
    
      <xs:complexType name="ModificationNode">
        <xs:complexContent>
          <xs:extension base="seen:SideEffectExpressionNode">
            <xs:sequence>
              <xs:element name="lhs" type="lhsn:LHSExpressionNode" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
      <xs:complexType name="ModificationNodes">
        <xs:complexContent>
          <xs:extension base="astnode:ASTNode">
            <xs:sequence>
              <xs:element name="child"
                          type="mdn:ModificationNode"
                          minOccurs="0"
                          maxOccurs="unbounded" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    
    </xs:schema>
    
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://vsl.cis.udel.edu/ns/tass/statement/expression/OperatorNode"
               xmlns:on="http://vsl.cis.udel.edu/ns/tass/statement/expression/OperatorNode"
               xmlns:pen="http://vsl.cis.udel.edu/ns/tass/statement/expression/PureExpressionNode"
               xmlns:exn="http://vsl.cis.udel.edu/ns/tass/statement/expression/ExpressionNode"
               elementFormDefault="qualified">
    
      <xs:import namespace="http://vsl.cis.udel.edu/ns/tass/statement/exp
    
Note: See TracWiki for help on using the wiki.