Exemple #1
0
        public bool TryDeclareProcedure(ProcedureDeclaration declaration, out ProcedureInfo procedure)
        {
            if (TryGetProcedure(declaration.Identifier.Text, out procedure))
            {
                return(false);
            }

            var p = new ProcedureInfo();

            p.Declaration = declaration;
            p.Index       = declaration.Index == null ? ( short )Procedures.Count : ( short )declaration.Index.Value;
            Debug.Assert(Procedures.All(x => x.Value.Index != p.Index), "Same procedure index used by multiple procedures");
            Procedures[declaration.Identifier.Text] = procedure = p;
            return(true);
        }
Exemple #2
0
        public bool TryGetProcedure(string name, out ProcedureInfo procedure)
        {
            if (!Procedures.TryGetValue(name, out procedure))
            {
                if (Parent == null)
                {
                    return(false);
                }

                if (!Parent.TryGetProcedure(name, out procedure))
                {
                    return(false);
                }
            }

            return(true);
        }
Exemple #3
0
        public bool TryDeclareProcedure(ProcedureDeclaration declaration, Procedure compiled, out ProcedureInfo procedure)
        {
            if (!TryDeclareProcedure(declaration, out procedure))
            {
                return(false);
            }

            procedure.Compiled         = compiled;
            procedure.OriginalCompiled = compiled.Clone();
            return(true);
        }