void Function(YSParseNode FunctionNode)
    {
        Debug("Beginning a function definition");
        Current = FunctionNode;
        string FunctionName = FunctionNode.Children [0].Token.Content;

        ExpectNonExistance(FunctionName);
        FunctionFrame FunctionFrame = new FunctionFrame();

        FunctionParamList(FunctionNode.Children [1], ref FunctionFrame);
        IdentityType IType;
        List <int>   Dimens;

        DataType(FunctionNode.Children [2], out IType, out Dimens);
        FunctionFrame.Returns          = IType;
        FunctionFrame.ReturnDimensions = (Dimens != null) ? Dimens.ToArray() : null;
        //STATE.TranslateTokenTypeToIdentityType (FunctionNode.Children [2].Token.Type);
        FunctionFrame.Block = FunctionNode.Children [3];

        IDPacket newFunction = IDPacket.CreateIDPacket(STATE, FunctionName, IdentityType.Function);

        STATE.PutFunction(newFunction, FunctionFrame);

        Debug("Finished function definition");
    }
 void FunctionParamList(YSParseNode FunctionParamListNode, ref FunctionFrame Frame)
 {
     Debug("Reading param list..");
     Current = FunctionParamListNode;
     if (FunctionParamListNode.Children.Count > 0)
     {
         int FPC = 0;
         while (FPC < FunctionParamListNode.Children.Count)
         {
             FunctionParamater fp = new FunctionParamater();
             //fp.Type = STATE.TranslateTokenTypeToIdentityType (FunctionParamListNode.Children [FPC++].Token.Type);
             List <int> Dimens;
             DataType(FunctionParamListNode.Children [FPC++], out fp.Type, out Dimens);
             fp.TypeDimensions = (Dimens != null) ? Dimens.ToArray() : null;
             //Debug ("Type " + fp.Type + " Token " + FunctionParamListNode.Children [FPC].Token.Type);
             fp.Name = FunctionParamListNode.Children [FPC++].Token.Content;
             Frame.Parameters.Add(fp);
         }
     }
     Debug("Read param list...");
 }
Example #3
0
 /// <summary>
 ///   Constructs row/column vector from Complex array.
 /// </summary>
 public Matrix(IEnumerable<Complex> complex, Dimens dim)
 {
     if (null == complex) throw new ArgumentNullException("complex");
 }