Example #1
0
        public void Verify()
        {
            var exprType = Expr.Verify();

            if (Type != exprType)
            {
                throw new ArgumentException(Type.ToString());
            }

            VarTab.Add(Id, exprType);
        }
Example #2
0
        public void Verify()
        {
            FuncState.PushFunc(ReturnType);
            VarTab.PushScope();
            Params.ForEach(par => VarTab.Add(par.Id, par.Type));
            Stmts.ForEach(stmt => stmt.Verify());
            VarTab.PopScope();
            FuncState.PopFunc();

            VarTab.Add(Id, new TypeSpec
            {
                Base = new Function
                {
                    Types      = Params,
                    ReturnType = ReturnType
                }
            });
        }