<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.imp.metatooling">
<annotation>
      <appInfo>
         <meta.schema plugin="org.eclipse.imp.metatooling" id="modelListener" name="IMP IDE Model Listener"/>
      </appInfo>
      <documentation>
         The org.eclipse.imp.modelListener extension point allows providers to provide a model listener.
Each time the text being edited is parsed and a new model is computed, the contributor will be notified.
Contributor has to implement the IModelListener interface.
      </documentation>
   </annotation>

   <element name="extension">
      <complexType>
         <sequence>
            <element ref="listener"/>
         </sequence>
         <attribute name="point" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="id" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="listener">
      <annotation>
         <documentation>
            A user-defined listener that responds to a new model that has been computed for a given program.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="class" type="string" use="required">
            <annotation>
               <documentation>
                  The fully-qualified name of the class that will be generated to serve as the implementation of this extension.  This class will be assigned the given name and located in the given package in the currently selected project.  (The package will be created if it does not already exist.)
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="org.eclipse.imp.parser.IModelListener"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="language" type="string" use="required">
            <annotation>
               <documentation>
                  The name of the language to which this service applies. There must be a corresponding &quot;language description&quot; extension whose name matches this attribute&apos;s value.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <annotation>
      <appInfo>
         <meta.section type="since"/>
      </appInfo>
      <documentation>
         1.0.0
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="examples"/>
      </appInfo>
      <documentation>
         &lt;extension
         point=&quot;org.eclipse.imp.parser&quot;&gt;
      &lt;parser
            class=&quot;org.eclipse.imp.DefaultParser&quot;
            language=&quot;*&quot;
            name=&quot;Default Parser&quot;
            id=&quot;org.eclipse.imp.parser.default&quot;/&gt;
   &lt;/extension&gt;
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="apiInfo"/>
      </appInfo>
      <documentation>
         [Enter API information here.]
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="implementation"/>
      </appInfo>
      <documentation>
         See org.eclipse.imp.DefaultParser.
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="copyright"/>
      </appInfo>
      <documentation>
         Licensed Materials - Property of IBM,
 (c) Copyright IBM Corp. 1998, 2004  All Rights Reserved
      </documentation>
   </annotation>

</schema>
