private Query ParseBinaryOr() { //BinaryOr ==> BinaryAnd | BinaryOr OR BinaryAnd var queries = new List <Query>(); queries.Add(ParseBinaryAnd()); while (_lexer.CurrentToken == SnLucLexer.Token.Or) { _lexer.NextToken(); queries.Add(ParseBinaryAnd()); } if (queries.Count == 1) { return(queries[0]); } var boolq = new BooleanQuery(); foreach (var query in queries) { AddBooleanClause(boolq, query, BooleanClause.Occur.SHOULD); } return(boolq); }
private IEnumerable<TokenChecker> GetTokens(string source) { var lexer = new SnLucLexer(source); var tokens = new List<TokenChecker>(); do { //tokens.Add(new TokenChecker { Token = lexer.CurrentToken, Value = lexer.StringValue }); tokens.Add(new TokenChecker { Token = lexer.CurrentToken, Value = lexer.StringValue }); } while (lexer.NextToken()); return tokens; }