Example #1
0
        /// <summary>
        /// Este metodo es usado para asociar a la funcion una variable que es de ella y que se usa en sus hijas
        /// </summary>
        /// <param name="var"></param>
        public void AsociatteVarToFunctionAsUsedForChildFunction(string var)
        {
            VarInfo      varInfo = GetVarInfo(var);
            FunctionInfo funInfo = GetFunction(varInfo.FunctionNameParent);

            funInfo.VarsUsedForAnotherFunction.Add(varInfo);
        }
Example #2
0
        /// <summary>
        /// Adiciona al scope una variable que representa una variable de un for
        /// </summary>
        /// <param name="varId"></param>
        /// <param name="typeId"></param>
        public void AddVarFor(string varId, string typeId)
        {
            var varInfo = new VarInfo
            {
                IsLocalVariable = true,
                CodeName        = string.Format("{0}_{1}", varId, Utils.GetUID())
            };

            AddVar(varId, typeId, varInfo);
        }
Example #3
0
        /// <summary>
        /// Adiciona una variable al scope
        /// </summary>
        /// <param name="varId">El identificador de la variable en el codigo del programa</param>
        /// <param name="typeId">El identificador del tipo en el codigo del programa</param>
        public void AddVar(string varId, string typeId)
        {
            var varInfo = new VarInfo
            {
                IsLocalVariable = true,
                //Esto esta OK,se asume que la variable es local ,si no lo es se le cambia luego
                CodeName = string.Format("{0}_{1}", varId, Utils.GetUID()),
            };

            AddVar(varId, typeId, varInfo);
        }
Example #4
0
        /// <summary>
        /// Adiciona al scope una variable que representa un parametro de funcion
        /// </summary>
        /// <param name="varId"></param>
        /// <param name="typeId"></param>
        /// <param name="posParams"></param>
        /// <param name="functionName"></param>
        public void AddVarParameter(string varId, string typeId, int posParams, string functionName)
        {
            var varInfo = new VarInfo
            {
                IsParameterFunction = true,
                ParameterNumber     = posParams,
                ParamInFunction     = functionName,
                FunctionNameParent  = functionName,
                CodeName            = string.Format("{0}_{1}", varId, Utils.GetUID())
            };

            AddVar(varId, typeId, varInfo);
        }
Example #5
0
 /// <summary>
 /// Se encarga de annadir una variable al scope
 /// </summary>
 /// <param name="varId">El id de la variable en el fichero de codigo</param>
 /// <param name="typeId">El id del tipo en el ficheo de codigo</param>
 /// <param name="varInfo">La informacion asociada a  la variable</param>
 private void AddVar(string varId, string typeId, VarInfo varInfo)
 {
     if (HasType(typeId) == ScopeLocation.NotDeclared)
     {
         throw new ArgumentException("El tipo no esta en el scope");
     }
     varInfo.VarName  = varId;
     varInfo.TypeInfo = GetTypeInfo(typeId);
     //asociarle  la funcion en la cual se encuentra declarada esta variable.
     varInfo.FunctionNameParent = varInfo.FunctionNameParent ??
                                  (CurrentFunction != null ? CurrentFunction.FunctionName : null);
     if (HasVar(varId) == ScopeLocation.NotDeclared)
     {
         varInfo.CodeName = varInfo.CodeName ?? varInfo.VarName;
     }
     //es dejar el mismo nombre en el CodeNameGenereted que en VarID
     else
     {
         //la variable oculta a otra con el mismo nombre
         varInfo.Hides    = true;
         varInfo.CodeName = string.Format("{0}_{1}", varId, Utils.GetUID());
     }
     vars.Add(varId, varInfo);
 }