public TwisterAlgorithm( Subset subset, bool chunkPositivePMI = true, bool chunkAveragePMI = true, int compressTagOccurence = 0, int compressCorpusOccurence = 0, LogicalOperatorEnum op = LogicalOperatorEnum.AND, bool useRxy = true ) : base(subset) { _chunkPositivePMI = chunkPositivePMI; _chunkAveragePMI = chunkAveragePMI; if (compressCorpusOccurence > 0 && compressTagOccurence > 0) { // tOcc <= _compressTagOccurence // cOcc <= _compressCorpusOccurence var tPe = Expression.Parameter(typeof(int)); var cPe = Expression.Parameter(typeof(int)); var tConst = Expression.Constant(compressTagOccurence); var cConst = Expression.Constant(compressCorpusOccurence); var left = Expression.LessThanOrEqual(tPe, tConst); var right = Expression.LessThanOrEqual(cPe, cConst); var exp = (op == LogicalOperatorEnum.AND) ? Expression.And(left, right) : Expression.Or(left, right); Expression <Func <int, int, bool> > le = Expression.Lambda <Func <int, int, bool> >(exp, tPe, cPe); _compiledExpression = le.Compile(); } }
private string GetExpressionStr(LogicalOperatorEnum logicalOperatorEnum) { string lStr = string.Format("{0}"); switch (logicalOperatorEnum) { case LogicalOperatorEnum.Default: break; case LogicalOperatorEnum.And: lStr = string.Format("<ogc:And>{0}</ogc:And>"); break; case LogicalOperatorEnum.Or: lStr = string.Format("<ogc:Or>{0}</ogc:Or>"); break; case LogicalOperatorEnum.Not: lStr = string.Format("<ogc:Not>{0}</ogc:Not>"); break; default: break; } return(lStr); }