<xpp>
   <!-- define a class called XObj -->
   <class name="XObj" inherit="">
      <construct/>
      <scope type="public">
         <!-- define a member array called Arr -->
         <arr type="int" name="Arr[3]">{5,6,7}</arr>
         <func type="void" name="constructor">
            <body>
               <arr type="string" name="Names[3]">Jack,Jimmie,John</arr>
               <var type="int" name="x"/>
            <!-- loop through the elements of the Names[] array -->
               <for>
                  <init>
                     <eval object="x">
                        <eval>
                           <expr>0</expr>
                        </eval>
                     </eval>
                  </init>
                  <cond>
                     <eval>
                        <parm type="int" name="Parm0">
                           <eval object="x"/>
                        </parm>
                        <expr>Parm0 <= 2</expr>
                     </eval>
                  </cond>
                  <step>
                     <eval object="x">
                        <eval>
                           <parm type="int" name="Parm0">
                              <eval object="x"/>
                           </parm>
                           <expr>Parm0 + 1</expr>
                        </eval>
                     </eval>
                  </step>
               <!-- Write some text to the output stream -->
                  <xout processcode="true">
                     <eval>
                        <parm type="int" name="Parm0">
                           <eval object="x"/>
                        </parm>
                        <parm type="int" name="Parm1">
                           <eval object="this" member="Arr">
                              <index>
                                 <eval object="x"/>
                              </index>
                           </eval>
                        </parm>
                        <expr>"\r\nIn constructor this.Arr[" + Parm0 + "] = " + Parm1</expr>
                     </eval>
                  </xout>
                  <xout processcode="true">
                     <eval>
                        <parm type="int" name="Parm0">
                           <eval object="x"/>
                        </parm>
                        <parm type="string" name="Parm1">
                           <eval object="Names">
                              <index>
                                 <eval object="x"/>
                              </index>
                           </eval>
                        </parm>
                        <expr>"\r\nIn constructor Names[" + Parm0 + "] = " + Parm1</expr>
                     </eval>
                  </xout>
               </for>
            </body>
         </func>
      </scope>
   </class>
   <!-- define an array called a -->
   <arr type="int" name="a[3]">10,20,30</arr>
   <var type="int" name="x"/>
   <!-- loop through the elements of a -->
   <for>
      <init>
         <eval object="x">
         <eval>
            <expr>0</expr>
         </eval>
      </eval>
      </init>
      <cond>
         <eval>
            <parm type="int" name="Parm0">
               <eval object="x"/>
            </parm>
            <expr>Parm0 <= 2</expr>
         </eval>
      </cond>
      <step>
         <eval object="x">
            <eval>
               <parm type="int" name="Parm0">
                  <eval object="x"/>
               </parm>
               <expr>Parm0 + 1</expr>
            </eval>
         </eval>
      </step>
      <xout processcode="true">
         <eval>
            <parm type="int" name="Parm0">
               <eval object="x"/>
            </parm>
            <parm type="int" name="Parm1">
               <eval object="a">
                  <index>
                     <eval object="x"/>
                  </index>
               </eval>
            </parm>
            <expr>"\r\na[" + Parm0 + "] = " + Parm1</expr>
         </eval>
      </xout>
   </for>
   <!-- instantiate an object MyObj of class XObj -->
   <node name="MyObj" class="XObj" />
   <!-- loop through the elements of the Arr array of the MyObj object -->
   <for>
      <init>
         <eval object="x">
            <eval>
               <expr>0</expr>
            </eval>
         </eval>
      </init>
      <cond>
         <eval>
            <parm type="int" name="Parm0">
               <eval object="x"/>
            </parm>
            <expr>Parm0 <= 2</expr>
         </eval>
      </cond>
      <step>
         <eval object="x">
            <eval>
               <parm type="int" name="Parm0">
                  <eval object="x"/>
               </parm>
               <expr>Parm0 + 1</expr>
            </eval>
         </eval>
      </step>
      <xout processcode="true">
         <eval>
            <parm type="int" name="Parm0">
               <eval object="x"/>
            </parm>
            <parm type="int" name="Parm1">
               <eval object="MyObj" member="Arr">
                  <index>
                     <eval object="x"/>
                  </index>
               </eval>
            </parm>
            <expr>"\r\nMyObj.Arr[" + Parm0 + "] = " + Parm1</expr>
         </eval>
      </xout>
   </for>
</xpp>