Exemple #1
0
        /// <summary>
        /// Creates a return quadruple.
        /// </summary>
        /// <returns>The return quadruple.</returns>
        /// <param name="id">Identifier.</param>
        public static SemanticEnum CreateReturnQuadruple(string id)
        {
            Variable returnVariable = null;

            if (id != "")
            {
                returnVariable = ProgramMemory.FindVariable(scope, id);
            }
            // Validate return type
            SemanticEnum returnStatus = Semantics.ValidateReturn(scope.type, returnVariable);

            if (returnStatus == SemanticEnum.ValidReturn)
            {
                scope.SetEnd(Quadruple.quadruples.Count);
                Quadruple quadruple =
                    new Quadruple(Operators.Return, returnVariable);
                PushQuadruple(quadruple);
            }
            return(returnStatus);
        }
Exemple #2
0
        void Function()
        {
            scope           = FunctionHeader();
            Quadruple.scope = scope;
            while (StartOf((int)TokenEnum.Id))
            {
                Declaration();
            }
            while (StartOf((int)TokenEnum.Number))
            {
                Statute();
            }
            string id = "";

            id = Return();
            SemanticEnum returnStatus = Quadruple.CreateReturnQuadruple(id);

            if (returnStatus != SemanticEnum.ValidReturn)
            {
                SemErr((int)returnStatus);
            }
            EndFunction();
        }
 public SemanticCompatibility(SemanticEnum type, double confidence)
 {
     mType       = type;
     mConfidence = confidence;
 }