Example #1
0
 private Procedure ProcedureStatement()
 {
     if (Accept(Symbol.Procedure))
     {
         Identifier ident = Identifier();
         Require(Symbol.ClosureOpen);
         Parameters parameters = ReadParameters();
         Require(Symbol.ClosureClose);
         Require(Symbol.SemiColon);
         ScopedProgram block = Block();
         block.AddParameters(parameters);
         return(new Procedure(ident, parameters, block, null));
     }
     return(null);
 }
Example #2
0
 private Procedure ReadFunction()
 {
     if (Accept(Symbol.Function))
     {
         Identifier ident = Identifier();
         Require(Symbol.ClosureOpen);
         Parameters parameters = ReadParameters();
         Require(Symbol.ClosureClose);
         Require(Symbol.Colon);
         MiniPascalType type = ReadType();
         if (type == null)
         {
             throw new SyntaxException(expType, current);
         }
         Require(Symbol.SemiColon);
         ScopedProgram block = Block();
         block.AddParameters(parameters);
         return(new Procedure(ident, parameters, block, type));
     }
     return(null);
 }