1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * See LICENSE.txt included in this distribution for the specific 9 * language governing permissions and limitations under the License. 10 * 11 * When distributing Covered Code, include this CDDL HEADER in each 12 * file and include the License file at LICENSE.txt. 13 * If applicable, add the following below this CDDL HEADER, with the 14 * fields enclosed by brackets "[]" replaced with your own identifying 15 * information: Portions Copyright [yyyy] [name of copyright owner] 16 * 17 * CDDL HEADER END 18 */ 19 20 /* 21 * Copyright (c) 2018, Chris Fraire <cfraire@me.com>. 22 */ 23 24 package org.opengrok.indexer.search; 25 26 %% 27 %public 28 %class PathQueryEscaper 29 %extends TermEscaperBase 30 %unicode 31 %type boolean 32 %eofval{ 33 return false; 34 %eofval} 35 36 %include QueryEscaper.lexh 37 %% 38 39 {LuceneSpecialEscape} { 40 for (int i = 0; i < yylength(); ++i) { 41 appendOut(yycharat(i)); // faster than yytext() 42 } 43 } 44 45 ":" { 46 appendOut("\\:"); 47 } 48 49 /* 50 * Workaround for replacing / with escaped / -- needed since lucene 4.x. 51 */ 52 53 "/" { 54 appendOut("\\/"); 55 } 56 57 [^] { 58 for (int i = 0; i < yylength(); ++i) { 59 appendOut(yycharat(i)); // faster than yytext() 60 } 61 } 62