Exemple #1
0
        public bool Equals(Struct other)
        {
            if (kind == Kinds.Arr)
            {
                return(other.kind == Kinds.Arr && elemType.Equals(other.elemType));
            }

            return(this == other);     // must be same type node
        }
Exemple #2
0
        public bool Equals(Symbol sym)
        {
            if (kind != sym.kind || name != sym.name || !type.Equals(sym.type))
            {
                return(false);
            }
            switch (kind)
            {
            case Kinds.Const: return(val == sym.val);

            case Kinds.Arg:
            case Kinds.Local: return(adr == sym.adr);

            case Kinds.Meth:
                return(nArgs == sym.nArgs && nLocs == sym.nLocs &&
                       EqualsCompleteList(locals, sym.locals));
            }
            return(true);
        }