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()); }
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> }