1.3.11 Test

Now running the debug version of minilang, minilangd , with the following arguments should generate the following output:

C:\minilang\x64\Debug>minilangd --test-parser C:\soul-4.0.0\examples\minilang_tests\fibonacci.minilang
<parse>
 <SourceFile>
  <try>int fibonacci(int n)</try>
   <Function>
    <try>int fibonacci(int n)</try>
     <Type>
      <try>int fibonacci(int n)</try>
      <success>int</success>
     </Type>
     <Identifier>
      <try>fibonacci(int n)</try>
      <success>fibonacci</success>
     </Identifier>
     <ParameterList>
      <try>int n)</try>
       <Parameter>
        <try>int n)</try>
         <Type>
          <try>int n)</try>
          <success>int</success>
         </Type>
         <Identifier>
          <try>n)</try>
          <success>n</success>
         </Identifier>
        <success>int</success>
       </Parameter>
      <success>int</success>
     </ParameterList>
     <CompoundStatement>
      <try>{</try>
       <Statement>
        <try>if (n == 0) return 0;</try>
         <IfStatement>
          <try>if (n == 0) return 0;</try>
           <Expression>
            <try>n == 0) return 0;</try>
             <EqualityExpression>
              <try>n == 0) return 0;</try>
               <RelationalExpression>
                <try>n == 0) return 0;</try>
                 <AdditiveExpression>
                  <try>n == 0) return 0;</try>
                   <MultiplicativeExpression>
                    <try>n == 0) return 0;</try>
                     <UnaryExpression>
                      <try>n == 0) return 0;</try>
                       <UnaryOperator>
                        <try>n == 0) return 0;</try>
                        <fail/>
                       </UnaryOperator>
                       <PostfixExpression>
                        <try>n == 0) return 0;</try>
                         <PrimaryExpression>
                          <try>n == 0) return 0;</try>
                           <Literal>
                            <try>n == 0) return 0;</try>
                             <BooleanLiteral>
                              <try>n == 0) return 0;</try>
                              <fail/>
                             </BooleanLiteral>
                             <IntegerLiteral>
                              <try>n == 0) return 0;</try>
                              <fail/>
                             </IntegerLiteral>
                            <fail/>
                           </Literal>
                           <Identifier>
                            <try>n == 0) return 0;</try>
                            <success>n</success>
                           </Identifier>
                          <success>n</success>
                         </PrimaryExpression>
                        <success>n</success>
                       </PostfixExpression>
                      <success>n</success>
                     </UnaryExpression>
                     <MultiplicativeOperator>
                      <try>== 0) return 0;</try>
                      <fail/>
                     </MultiplicativeOperator>
                    <success>n</success>
                   </MultiplicativeExpression>
                   <AdditiveOperator>
                    <try>== 0) return 0;</try>
                    <fail/>
                   </AdditiveOperator>
                  <success>n</success>
                 </AdditiveExpression>
                 <RelationalOperator>
                  <try>== 0) return 0;</try>
                  <fail/>
                 </RelationalOperator>
                <success>n</success>
               </RelationalExpression>
               <EqualityOperator>
                <try>== 0) return 0;</try>
                <success>==</success>
               </EqualityOperator>
               <RelationalExpression>
                <try>0) return 0;</try>
                 <AdditiveExpression>
                  <try>0) return 0;</try>
                   <MultiplicativeExpression>
                    <try>0) return 0;</try>
                     <UnaryExpression>
                      <try>0) return 0;</try>
                       <UnaryOperator>
                        <try>0) return 0;</try>
                        <fail/>
                       </UnaryOperator>
                       <PostfixExpression>
                        <try>0) return 0;</try>
                         <PrimaryExpression>
                          <try>0) return 0;</try>
                           <Literal>
                            <try>0) return 0;</try>
                             <BooleanLiteral>
                              <try>0) return 0;</try>
                              <fail/>
                             </BooleanLiteral>
                             <IntegerLiteral>
                              <try>0) return 0;</try>
                              <success>0</success>
                             </IntegerLiteral>
                            <success>0</success>
                           </Literal>
                          <success>0</success>
                         </PrimaryExpression>
                        <success>0</success>
                       </PostfixExpression>
                      <success>0</success>
                     </UnaryExpression>
                     <MultiplicativeOperator>
                      <try>) return 0;</try>
                      <fail/>
                     </MultiplicativeOperator>
                    <success>0</success>
                   </MultiplicativeExpression>
                   <AdditiveOperator>
                    <try>) return 0;</try>
                    <fail/>
                   </AdditiveOperator>
                  <success>0</success>
                 </AdditiveExpression>
                 <RelationalOperator>
                  <try>) return 0;</try>
                  <fail/>
                 </RelationalOperator>
                <success>0</success>
               </RelationalExpression>
               <EqualityOperator>
                <try>) return 0;</try>
                <fail/>
               </EqualityOperator>
              <success>n</success>
             </EqualityExpression>
            <success>n</success>
           </Expression>
           <Statement>
            <try>return 0;</try>
             <IfStatement>
              <try>return 0;</try>
              <fail/>
             </IfStatement>
             <WhileStatement>
              <try>return 0;</try>
              <fail/>
             </WhileStatement>
             <ReturnStatement>
              <try>return 0;</try>
               <Expression>
                <try>0;</try>
                 <EqualityExpression>
                  <try>0;</try>
                   <RelationalExpression>
                    <try>0;</try>
                     <AdditiveExpression>
                      <try>0;</try>
                       <MultiplicativeExpression>
                        <try>0;</try>
                         <UnaryExpression>
                          <try>0;</try>
                           <UnaryOperator>
                            <try>0;</try>
                            <fail/>
                           </UnaryOperator>
                           <PostfixExpression>
                            <try>0;</try>
                             <PrimaryExpression>
                              <try>0;</try>
                               <Literal>
                                <try>0;</try>
                                 <BooleanLiteral>
                                  <try>0;</try>
                                  <fail/>
                                 </BooleanLiteral>
                                 <IntegerLiteral>
                                  <try>0;</try>
                                  <success>0</success>
                                 </IntegerLiteral>
                                <success>0</success>
                               </Literal>
                              <success>0</success>
                             </PrimaryExpression>
                            <success>0</success>
                           </PostfixExpression>
                          <success>0</success>
                         </UnaryExpression>
                         <MultiplicativeOperator>
                          <try>;</try>
                          <fail/>
                         </MultiplicativeOperator>
                        <success>0</success>
                       </MultiplicativeExpression>
                       <AdditiveOperator>
                        <try>;</try>
                        <fail/>
                       </AdditiveOperator>
                      <success>0</success>
                     </AdditiveExpression>
                     <RelationalOperator>
                      <try>;</try>
                      <fail/>
                     </RelationalOperator>
                    <success>0</success>
                   </RelationalExpression>
                   <EqualityOperator>
                    <try>;</try>
                    <fail/>
                   </EqualityOperator>
                  <success>0</success>
                 </EqualityExpression>
                <success>0</success>
               </Expression>
              <success>return</success>
             </ReturnStatement>
            <success>return</success>
           </Statement>
          <success>if</success>
         </IfStatement>
        <success>if</success>
       </Statement>
       <Statement>
        <try>if (n == 1) return 1;</try>
         <IfStatement>
          <try>if (n == 1) return 1;</try>
           <Expression>
            <try>n == 1) return 1;</try>
             <EqualityExpression>
              <try>n == 1) return 1;</try>
               <RelationalExpression>
                <try>n == 1) return 1;</try>
                 <AdditiveExpression>
                  <try>n == 1) return 1;</try>
                   <MultiplicativeExpression>
                    <try>n == 1) return 1;</try>
                     <UnaryExpression>
                      <try>n == 1) return 1;</try>
                       <UnaryOperator>
                        <try>n == 1) return 1;</try>
                        <fail/>
                       </UnaryOperator>
                       <PostfixExpression>
                        <try>n == 1) return 1;</try>
                         <PrimaryExpression>
                          <try>n == 1) return 1;</try>
                           <Literal>
                            <try>n == 1) return 1;</try>
                             <BooleanLiteral>
                              <try>n == 1) return 1;</try>
                              <fail/>
                             </BooleanLiteral>
                             <IntegerLiteral>
                              <try>n == 1) return 1;</try>
                              <fail/>
                             </IntegerLiteral>
                            <fail/>
                           </Literal>
                           <Identifier>
                            <try>n == 1) return 1;</try>
                            <success>n</success>
                           </Identifier>
                          <success>n</success>
                         </PrimaryExpression>
                        <success>n</success>
                       </PostfixExpression>
                      <success>n</success>
                     </UnaryExpression>
                     <MultiplicativeOperator>
                      <try>== 1) return 1;</try>
                      <fail/>
                     </MultiplicativeOperator>
                    <success>n</success>
                   </MultiplicativeExpression>
                   <AdditiveOperator>
                    <try>== 1) return 1;</try>
                    <fail/>
                   </AdditiveOperator>
                  <success>n</success>
                 </AdditiveExpression>
                 <RelationalOperator>
                  <try>== 1) return 1;</try>
                  <fail/>
                 </RelationalOperator>
                <success>n</success>
               </RelationalExpression>
               <EqualityOperator>
                <try>== 1) return 1;</try>
                <success>==</success>
               </EqualityOperator>
               <RelationalExpression>
                <try>1) return 1;</try>
                 <AdditiveExpression>
                  <try>1) return 1;</try>
                   <MultiplicativeExpression>
                    <try>1) return 1;</try>
                     <UnaryExpression>
                      <try>1) return 1;</try>
                       <UnaryOperator>
                        <try>1) return 1;</try>
                        <fail/>
                       </UnaryOperator>
                       <PostfixExpression>
                        <try>1) return 1;</try>
                         <PrimaryExpression>
                          <try>1) return 1;</try>
                           <Literal>
                            <try>1) return 1;</try>
                             <BooleanLiteral>
                              <try>1) return 1;</try>
                              <fail/>
                             </BooleanLiteral>
                             <IntegerLiteral>
                              <try>1) return 1;</try>
                              <success>1</success>
                             </IntegerLiteral>
                            <success>1</success>
                           </Literal>
                          <success>1</success>
                         </PrimaryExpression>
                        <success>1</success>
                       </PostfixExpression>
                      <success>1</success>
                     </UnaryExpression>
                     <MultiplicativeOperator>
                      <try>) return 1;</try>
                      <fail/>
                     </MultiplicativeOperator>
                    <success>1</success>
                   </MultiplicativeExpression>
                   <AdditiveOperator>
                    <try>) return 1;</try>
                    <fail/>
                   </AdditiveOperator>
                  <success>1</success>
                 </AdditiveExpression>
                 <RelationalOperator>
                  <try>) return 1;</try>
                  <fail/>
                 </RelationalOperator>
                <success>1</success>
               </RelationalExpression>
               <EqualityOperator>
                <try>) return 1;</try>
                <fail/>
               </EqualityOperator>
              <success>n</success>
             </EqualityExpression>
            <success>n</success>
           </Expression>
           <Statement>
            <try>return 1;</try>
             <IfStatement>
              <try>return 1;</try>
              <fail/>
             </IfStatement>
             <WhileStatement>
              <try>return 1;</try>
              <fail/>
             </WhileStatement>
             <ReturnStatement>
              <try>return 1;</try>
               <Expression>
                <try>1;</try>
                 <EqualityExpression>
                  <try>1;</try>
                   <RelationalExpression>
                    <try>1;</try>
                     <AdditiveExpression>
                      <try>1;</try>
                       <MultiplicativeExpression>
                        <try>1;</try>
                         <UnaryExpression>
                          <try>1;</try>
                           <UnaryOperator>
                            <try>1;</try>
                            <fail/>
                           </UnaryOperator>
                           <PostfixExpression>
                            <try>1;</try>
                             <PrimaryExpression>
                              <try>1;</try>
                               <Literal>
                                <try>1;</try>
                                 <BooleanLiteral>
                                  <try>1;</try>
                                  <fail/>
                                 </BooleanLiteral>
                                 <IntegerLiteral>
                                  <try>1;</try>
                                  <success>1</success>
                                 </IntegerLiteral>
                                <success>1</success>
                               </Literal>
                              <success>1</success>
                             </PrimaryExpression>
                            <success>1</success>
                           </PostfixExpression>
                          <success>1</success>
                         </UnaryExpression>
                         <MultiplicativeOperator>
                          <try>;</try>
                          <fail/>
                         </MultiplicativeOperator>
                        <success>1</success>
                       </MultiplicativeExpression>
                       <AdditiveOperator>
                        <try>;</try>
                        <fail/>
                       </AdditiveOperator>
                      <success>1</success>
                     </AdditiveExpression>
                     <RelationalOperator>
                      <try>;</try>
                      <fail/>
                     </RelationalOperator>
                    <success>1</success>
                   </RelationalExpression>
                   <EqualityOperator>
                    <try>;</try>
                    <fail/>
                   </EqualityOperator>
                  <success>1</success>
                 </EqualityExpression>
                <success>1</success>
               </Expression>
              <success>return</success>
             </ReturnStatement>
            <success>return</success>
           </Statement>
          <success>if</success>
         </IfStatement>
        <success>if</success>
       </Statement>
       <Statement>
        <try>return fibonacci(n - 1) + fibonacci(n - 2);</try>
         <IfStatement>
          <try>return fibonacci(n - 1) + fibonacci(n - 2);</try>
          <fail/>
         </IfStatement>
         <WhileStatement>
          <try>return fibonacci(n - 1) + fibonacci(n - 2);</try>
          <fail/>
         </WhileStatement>
         <ReturnStatement>
          <try>return fibonacci(n - 1) + fibonacci(n - 2);</try>
           <Expression>
            <try>fibonacci(n - 1) + fibonacci(n - 2);</try>
             <EqualityExpression>
              <try>fibonacci(n - 1) + fibonacci(n - 2);</try>
               <RelationalExpression>
                <try>fibonacci(n - 1) + fibonacci(n - 2);</try>
                 <AdditiveExpression>
                  <try>fibonacci(n - 1) + fibonacci(n - 2);</try>
                   <MultiplicativeExpression>
                    <try>fibonacci(n - 1) + fibonacci(n - 2);</try>
                     <UnaryExpression>
                      <try>fibonacci(n - 1) + fibonacci(n - 2);</try>
                       <UnaryOperator>
                        <try>fibonacci(n - 1) + fibonacci(n - 2);</try>
                        <fail/>
                       </UnaryOperator>
                       <PostfixExpression>
                        <try>fibonacci(n - 1) + fibonacci(n - 2);</try>
                         <PrimaryExpression>
                          <try>fibonacci(n - 1) + fibonacci(n - 2);</try>
                           <Literal>
                            <try>fibonacci(n - 1) + fibonacci(n - 2);</try>
                             <BooleanLiteral>
                              <try>fibonacci(n - 1) + fibonacci(n - 2);</try>
                              <fail/>
                             </BooleanLiteral>
                             <IntegerLiteral>
                              <try>fibonacci(n - 1) + fibonacci(n - 2);</try>
                              <fail/>
                             </IntegerLiteral>
                            <fail/>
                           </Literal>
                           <Identifier>
                            <try>fibonacci(n - 1) + fibonacci(n - 2);</try>
                            <success>fibonacci</success>
                           </Identifier>
                          <success>fibonacci</success>
                         </PrimaryExpression>
                         <ExpressionList>
                          <try>n - 1) + fibonacci(n - 2);</try>
                           <Expression>
                            <try>n - 1) + fibonacci(n - 2);</try>
                             <EqualityExpression>
                              <try>n - 1) + fibonacci(n - 2);</try>
                               <RelationalExpression>
                                <try>n - 1) + fibonacci(n - 2);</try>
                                 <AdditiveExpression>
                                  <try>n - 1) + fibonacci(n - 2);</try>
                                   <MultiplicativeExpression>
                                    <try>n - 1) + fibonacci(n - 2);</try>
                                     <UnaryExpression>
                                      <try>n - 1) + fibonacci(n - 2);</try>
                                       <UnaryOperator>
                                        <try>n - 1) + fibonacci(n - 2);</try>
                                        <fail/>
                                       </UnaryOperator>
                                       <PostfixExpression>
                                        <try>n - 1) + fibonacci(n - 2);</try>
                                         <PrimaryExpression>
                                          <try>n - 1) + fibonacci(n - 2);</try>
                                           <Literal>
                                            <try>n - 1) + fibonacci(n - 2);</try>
                                             <BooleanLiteral>
                                              <try>n - 1) + fibonacci(n - 2);</try>
                                              <fail/>
                                             </BooleanLiteral>
                                             <IntegerLiteral>
                                              <try>n - 1) + fibonacci(n - 2);</try>
                                              <fail/>
                                             </IntegerLiteral>
                                            <fail/>
                                           </Literal>
                                           <Identifier>
                                            <try>n - 1) + fibonacci(n - 2);</try>
                                            <success>n</success>
                                           </Identifier>
                                          <success>n</success>
                                         </PrimaryExpression>
                                        <success>n</success>
                                       </PostfixExpression>
                                      <success>n</success>
                                     </UnaryExpression>
                                     <MultiplicativeOperator>
                                      <try>- 1) + fibonacci(n - 2);</try>
                                      <fail/>
                                     </MultiplicativeOperator>
                                    <success>n</success>
                                   </MultiplicativeExpression>
                                   <AdditiveOperator>
                                    <try>- 1) + fibonacci(n - 2);</try>
                                    <success>-</success>
                                   </AdditiveOperator>
                                   <MultiplicativeExpression>
                                    <try>1) + fibonacci(n - 2);</try>
                                     <UnaryExpression>
                                      <try>1) + fibonacci(n - 2);</try>
                                       <UnaryOperator>
                                        <try>1) + fibonacci(n - 2);</try>
                                        <fail/>
                                       </UnaryOperator>
                                       <PostfixExpression>
                                        <try>1) + fibonacci(n - 2);</try>
                                         <PrimaryExpression>
                                          <try>1) + fibonacci(n - 2);</try>
                                           <Literal>
                                            <try>1) + fibonacci(n - 2);</try>
                                             <BooleanLiteral>
                                              <try>1) + fibonacci(n - 2);</try>
                                              <fail/>
                                             </BooleanLiteral>
                                             <IntegerLiteral>
                                              <try>1) + fibonacci(n - 2);</try>
                                              <success>1</success>
                                             </IntegerLiteral>
                                            <success>1</success>
                                           </Literal>
                                          <success>1</success>
                                         </PrimaryExpression>
                                        <success>1</success>
                                       </PostfixExpression>
                                      <success>1</success>
                                     </UnaryExpression>
                                     <MultiplicativeOperator>
                                      <try>) + fibonacci(n - 2);</try>
                                      <fail/>
                                     </MultiplicativeOperator>
                                    <success>1</success>
                                   </MultiplicativeExpression>
                                   <AdditiveOperator>
                                    <try>) + fibonacci(n - 2);</try>
                                    <fail/>
                                   </AdditiveOperator>
                                  <success>n</success>
                                 </AdditiveExpression>
                                 <RelationalOperator>
                                  <try>) + fibonacci(n - 2);</try>
                                  <fail/>
                                 </RelationalOperator>
                                <success>n</success>
                               </RelationalExpression>
                               <EqualityOperator>
                                <try>) + fibonacci(n - 2);</try>
                                <fail/>
                               </EqualityOperator>
                              <success>n</success>
                             </EqualityExpression>
                            <success>n</success>
                           </Expression>
                          <success>n</success>
                         </ExpressionList>
                        <success>fibonacci</success>
                       </PostfixExpression>
                      <success>fibonacci</success>
                     </UnaryExpression>
                     <MultiplicativeOperator>
                      <try>+ fibonacci(n - 2);</try>
                      <fail/>
                     </MultiplicativeOperator>
                    <success>fibonacci</success>
                   </MultiplicativeExpression>
                   <AdditiveOperator>
                    <try>+ fibonacci(n - 2);</try>
                    <success>+</success>
                   </AdditiveOperator>
                   <MultiplicativeExpression>
                    <try>fibonacci(n - 2);</try>
                     <UnaryExpression>
                      <try>fibonacci(n - 2);</try>
                       <UnaryOperator>
                        <try>fibonacci(n - 2);</try>
                        <fail/>
                       </UnaryOperator>
                       <PostfixExpression>
                        <try>fibonacci(n - 2);</try>
                         <PrimaryExpression>
                          <try>fibonacci(n - 2);</try>
                           <Literal>
                            <try>fibonacci(n - 2);</try>
                             <BooleanLiteral>
                              <try>fibonacci(n - 2);</try>
                              <fail/>
                             </BooleanLiteral>
                             <IntegerLiteral>
                              <try>fibonacci(n - 2);</try>
                              <fail/>
                             </IntegerLiteral>
                            <fail/>
                           </Literal>
                           <Identifier>
                            <try>fibonacci(n - 2);</try>
                            <success>fibonacci</success>
                           </Identifier>
                          <success>fibonacci</success>
                         </PrimaryExpression>
                         <ExpressionList>
                          <try>n - 2);</try>
                           <Expression>
                            <try>n - 2);</try>
                             <EqualityExpression>
                              <try>n - 2);</try>
                               <RelationalExpression>
                                <try>n - 2);</try>
                                 <AdditiveExpression>
                                  <try>n - 2);</try>
                                   <MultiplicativeExpression>
                                    <try>n - 2);</try>
                                     <UnaryExpression>
                                      <try>n - 2);</try>
                                       <UnaryOperator>
                                        <try>n - 2);</try>
                                        <fail/>
                                       </UnaryOperator>
                                       <PostfixExpression>
                                        <try>n - 2);</try>
                                         <PrimaryExpression>
                                          <try>n - 2);</try>
                                           <Literal>
                                            <try>n - 2);</try>
                                             <BooleanLiteral>
                                              <try>n - 2);</try>
                                              <fail/>
                                             </BooleanLiteral>
                                             <IntegerLiteral>
                                              <try>n - 2);</try>
                                              <fail/>
                                             </IntegerLiteral>
                                            <fail/>
                                           </Literal>
                                           <Identifier>
                                            <try>n - 2);</try>
                                            <success>n</success>
                                           </Identifier>
                                          <success>n</success>
                                         </PrimaryExpression>
                                        <success>n</success>
                                       </PostfixExpression>
                                      <success>n</success>
                                     </UnaryExpression>
                                     <MultiplicativeOperator>
                                      <try>- 2);</try>
                                      <fail/>
                                     </MultiplicativeOperator>
                                    <success>n</success>
                                   </MultiplicativeExpression>
                                   <AdditiveOperator>
                                    <try>- 2);</try>
                                    <success>-</success>
                                   </AdditiveOperator>
                                   <MultiplicativeExpression>
                                    <try>2);</try>
                                     <UnaryExpression>
                                      <try>2);</try>
                                       <UnaryOperator>
                                        <try>2);</try>
                                        <fail/>
                                       </UnaryOperator>
                                       <PostfixExpression>
                                        <try>2);</try>
                                         <PrimaryExpression>
                                          <try>2);</try>
                                           <Literal>
                                            <try>2);</try>
                                             <BooleanLiteral>
                                              <try>2);</try>
                                              <fail/>
                                             </BooleanLiteral>
                                             <IntegerLiteral>
                                              <try>2);</try>
                                              <success>2</success>
                                             </IntegerLiteral>
                                            <success>2</success>
                                           </Literal>
                                          <success>2</success>
                                         </PrimaryExpression>
                                        <success>2</success>
                                       </PostfixExpression>
                                      <success>2</success>
                                     </UnaryExpression>
                                     <MultiplicativeOperator>
                                      <try>);</try>
                                      <fail/>
                                     </MultiplicativeOperator>
                                    <success>2</success>
                                   </MultiplicativeExpression>
                                   <AdditiveOperator>
                                    <try>);</try>
                                    <fail/>
                                   </AdditiveOperator>
                                  <success>n</success>
                                 </AdditiveExpression>
                                 <RelationalOperator>
                                  <try>);</try>
                                  <fail/>
                                 </RelationalOperator>
                                <success>n</success>
                               </RelationalExpression>
                               <EqualityOperator>
                                <try>);</try>
                                <fail/>
                               </EqualityOperator>
                              <success>n</success>
                             </EqualityExpression>
                            <success>n</success>
                           </Expression>
                          <success>n</success>
                         </ExpressionList>
                        <success>fibonacci</success>
                       </PostfixExpression>
                      <success>fibonacci</success>
                     </UnaryExpression>
                     <MultiplicativeOperator>
                      <try>;</try>
                      <fail/>
                     </MultiplicativeOperator>
                    <success>fibonacci</success>
                   </MultiplicativeExpression>
                   <AdditiveOperator>
                    <try>;</try>
                    <fail/>
                   </AdditiveOperator>
                  <success>fibonacci</success>
                 </AdditiveExpression>
                 <RelationalOperator>
                  <try>;</try>
                  <fail/>
                 </RelationalOperator>
                <success>fibonacci</success>
               </RelationalExpression>
               <EqualityOperator>
                <try>;</try>
                <fail/>
               </EqualityOperator>
              <success>fibonacci</success>
             </EqualityExpression>
            <success>fibonacci</success>
           </Expression>
          <success>return</success>
         </ReturnStatement>
        <success>return</success>
       </Statement>
       <Statement>
        <try>}</try>
         <IfStatement>
          <try>}</try>
          <fail/>
         </IfStatement>
         <WhileStatement>
          <try>}</try>
          <fail/>
         </WhileStatement>
         <ReturnStatement>
          <try>}</try>
          <fail/>
         </ReturnStatement>
         <CompoundStatement>
          <try>}</try>
          <fail/>
         </CompoundStatement>
         <ConstructionStatement>
          <try>}</try>
           <Type>
            <try>}</try>
            <fail/>
           </Type>
          <fail/>
         </ConstructionStatement>
         <AssignmentStatement>
          <try>}</try>
           <Identifier>
            <try>}</try>
            <fail/>
           </Identifier>
          <fail/>
         </AssignmentStatement>
        <fail/>
       </Statement>
      <success>{</success>
     </CompoundStatement>
    <success>int</success>
   </Function>
   <Function>
    <try></try>
     <Type>
      <try></try>
      <fail/>
     </Type>
    <fail/>
   </Function>
  <success>int</success>
 </SourceFile>
</parse>