예제 #1
0
        public void AddToParser(ParserXBase pParser)
        {
            pParser.DefineConst("i", new Complex(0.0, 1.0));

            pParser.AddValueReader(new CmplxValReader());

            // Complex valued functions
            pParser.DefineFun(new FunCmplxReal());
            pParser.DefineFun(new FunCmplxImag());
            pParser.DefineFun(new FunCmplxConj());
            pParser.DefineFun(new FunCmplxArg());
            pParser.DefineFun(new FunCmplxNorm());
            pParser.DefineFun(new FunCmplxSin());
            pParser.DefineFun(new FunCmplxCos());
            pParser.DefineFun(new FunCmplxTan());
            pParser.DefineFun(new FunCmplxSinH());
            pParser.DefineFun(new FunCmplxCosH());
            pParser.DefineFun(new FunCmplxTanH());
            pParser.DefineFun(new FunCmplxSqrt());
            pParser.DefineFun(new FunCmplxExp());
            pParser.DefineFun(new FunCmplxLn());
            pParser.DefineFun(new FunCmplxLog());
            pParser.DefineFun(new FunCmplxLog2());
            pParser.DefineFun(new FunCmplxLog10());
            pParser.DefineFun(new FunCmplxAbs());
            pParser.DefineFun(new FunCmplxPow());

            // Complex valued operators
            pParser.DefineOprt(new OprtAddCmplx());
            pParser.DefineOprt(new OprtSubCmplx());
            pParser.DefineOprt(new OprtMulCmplx());
            pParser.DefineOprt(new OprtDivCmplx());
            pParser.DefineOprt(new OprtPowCmplx());
            pParser.DefineInfixOprt(new OprtSignCmplx());
        }
예제 #2
0
        public void AddToParser(ParserXBase pParser)
        {
            // Readers that need fancy decorations on their values must
            // be added first (i.e. hex . "0x...") Otherwise the
            // zero in 0x will be read as a value of zero!
            pParser.AddValueReader(new HexValReader());
            pParser.AddValueReader(new BinValReader());
            pParser.AddValueReader(new BoolValReader());

            // Constants
            pParser.DefineConst("pi", Math.PI);
            pParser.DefineConst("e", Math.E);

            // Vector
            pParser.DefineFun(new FunSizeOf());

            // Generic functions
            pParser.DefineFun(new FunMax());
            pParser.DefineFun(new FunMin());
            pParser.DefineFun(new FunSum());

            // misc
            pParser.DefineFun(new FunParserID());

            // integer package
            pParser.DefineOprt(new OprtLAnd());
            pParser.DefineOprt(new OprtLOr());
            pParser.DefineOprt(new OprtAnd());
            pParser.DefineOprt(new OprtOr());
            pParser.DefineOprt(new OprtShr());
            pParser.DefineOprt(new OprtShl());

            // booloean package
            pParser.DefineOprt(new OprtLE());
            pParser.DefineOprt(new OprtGE());
            pParser.DefineOprt(new OprtLT());
            pParser.DefineOprt(new OprtGT());
            pParser.DefineOprt(new OprtEQ());
            pParser.DefineOprt(new OprtNEQ());
            pParser.DefineOprt(new OprtLAnd("and"));  // add logic and with a different identifier
            pParser.DefineOprt(new OprtLOr("or"));    // add logic and with a different identifier
                                                      //  pParser.DefineOprt(new OprtBXor());

            // assignement operators
            pParser.DefineOprt(new OprtAssign());
            pParser.DefineOprt(new OprtAssignAdd());
            pParser.DefineOprt(new OprtAssignSub());
            pParser.DefineOprt(new OprtAssignMul());
            pParser.DefineOprt(new OprtAssignDiv());

            // infix operators
            pParser.DefineInfixOprt(new OprtCastToFloat());
            pParser.DefineInfixOprt(new OprtCastToInt());
            pParser.DefineInfixOprt(new OprtCastToChar());

            // postfix operators
            pParser.DefinePostfixOprt(new OprtFact());
            // <ibg 20130708> commented: "%" is a reserved sign for either the
            //                modulo operator or comment lines.
            pParser.DefinePostfixOprt(new OprtPercentage());
            // </ibg>
        }