public override void ExitRule(IParseTreeListener listener)
        {
            IcalcListener typedListener = listener as IcalcListener;

            if (typedListener != null)
            {
                typedListener.ExitParens(this);
            }
        }
        public override void EnterRule(IParseTreeListener listener)
        {
            IcalcListener typedListener = listener as IcalcListener;

            if (typedListener != null)
            {
                typedListener.EnterFactorToNum(this);
            }
        }
        public override void ExitRule(IParseTreeListener listener)
        {
            IcalcListener typedListener = listener as IcalcListener;

            if (typedListener != null)
            {
                typedListener.ExitFactorPowopNegate(this);
            }
        }
        public override void EnterRule(IParseTreeListener listener)
        {
            IcalcListener typedListener = listener as IcalcListener;

            if (typedListener != null)
            {
                typedListener.EnterAddopNegate(this);
            }
        }
        public override void ExitRule(IParseTreeListener listener)
        {
            IcalcListener typedListener = listener as IcalcListener;

            if (typedListener != null)
            {
                typedListener.ExitProductMultiplyNegate(this);
            }
        }
        public override void EnterRule(IParseTreeListener listener)
        {
            IcalcListener typedListener = listener as IcalcListener;

            if (typedListener != null)
            {
                typedListener.EnterSumToProduct(this);
            }
        }