ErickErickson commented on a change in pull request #1186: LUCENE-9134: Port
ant-regenerate tasks to Gradle build
URL: https://github.com/apache/lucene-solr/pull/1186#discussion_r368662726
##########
File path: lucene/queryparser/build.gradle
##########
@@ -7,3 +7,224 @@ dependencies {
testImplementation project(':lucene:test-framework')
}
+
+configure(":lucene:queryparser") {
+ configurations {
+ javaCCDeps
+ }
+
+ dependencies {
+ javaCCDeps "net.java.dev.javacc:javacc:5.0"
+ }
+}
+
+String lineSeparator = System.lineSeparator()
+
+task runJavaccQueryParser(type: JavaCC) {
+ outputs.upToDateWhen { false } //nocommit
+ inputFile
file('src/java/org/apache/lucene/queryparser/classic/QueryParser.jj')
+ target file('src/java/org/apache/lucene/queryparser/classic')
+ doLast {
+ ant.replaceregexp(file:
"src/java/org/apache/lucene/queryparser/classic/QueryParser.java",
+ byline: "true",
+ match: "public QueryParser\\(CharStream ",
+ replace: "protected QueryParser(CharStream ")
+ ant.replaceregexp(file:
"src/java/org/apache/lucene/queryparser/classic/QueryParser.java",
+ byline: "true",
+ match: "public QueryParser\\(QueryParserTokenManager ",
+ replace: "protected QueryParser(QueryParserTokenManager ")
+ }
+}
+
+task runJavaccSurround(type: JavaCC) {
+ outputs.upToDateWhen { false } //nocommit
+ inputFile
file('src/java/org/apache/lucene/queryparser/surround/parser/QueryParser.jj')
+ target file('src/java/org/apache/lucene/queryparser/surround/parser')
+}
+
+task runJavaccFlexible(type: JavaCC) {
+ outputs.upToDateWhen { false } //nocommit
+ inputFile
file('src/java/org/apache/lucene/queryparser/flexible/standard/parser/StandardSyntaxParser.jj')
+ target
file('src/java/org/apache/lucene/queryparser/flexible/standard/parser')
+ doLast {
+ ant.replaceregexp(file:
"src/java/org/apache/lucene/queryparser/flexible/standard/parser/ParseException.java",
+ match: "public class ParseException extends Exception",
+ replace: "public class ParseException extends QueryNodeParseException",
+ flags: "g",
+ byline: "false")
+ ant.replaceregexp(file:
"src/java/org/apache/lucene/queryparser/flexible/standard/parser/ParseException.java",
+ match: "package
org.apache.lucene.queryparser.flexible.standard.parser;",
+ replace: "package
org.apache.lucene.queryparser.flexible.standard.parser;${lineSeparator}${lineSeparator}"
+
+ "import
org.apache.lucene.queryparser.flexible.messages.Message;${lineSeparator}" +
+ "import
org.apache.lucene.queryparser.flexible.messages.MessageImpl;${lineSeparator}" +
+ "import
org.apache.lucene.queryparser.flexible.core.*;${lineSeparator}" +
+ "import org.apache.lucene.queryparser.flexible.core.messages.*;",
+ flags: "g",
+ byline: "false")
+ ant.replaceregexp(file:
"src/java/org/apache/lucene/queryparser/flexible/standard/parser/ParseException.java",
+ match: "^ public ParseException\\(Token
currentTokenVal.*\$(\\s\\s[^}].*\\n)* \\}",
+ replace: " public ParseException(Token
currentTokenVal,${lineSeparator}" +
+ " int[][] expectedTokenSequencesVal, String[] tokenImageVal)
{${lineSeparator}" +
+ " super(new MessageImpl(QueryParserMessages.INVALID_SYNTAX,
initialise(${lineSeparator}" +
+ " currentTokenVal, expectedTokenSequencesVal,
tokenImageVal)));${lineSeparator}" +
+ " this.currentToken = currentTokenVal;${lineSeparator}" +
+ " this.expectedTokenSequences =
expectedTokenSequencesVal;${lineSeparator}" +
+ " this.tokenImage = tokenImageVal;${lineSeparator}" +
+ " }",
+ flags: "gm",
+ byline: "false")
+
ant.replaceregexp(file:"src/java/org/apache/lucene/queryparser/flexible/standard/parser/ParseException.java",
+ match: "^ public ParseException\\(String message.*\$(\\s\\s[^}].*\\n)*
\\}",
+ replace: " public ParseException(Message message) {${lineSeparator}" +
+ " super(message);${lineSeparator}" +
+ " }",
+ flags: "gm",
+ byline: "false")
+
ant.replaceregexp(file:"src/java/org/apache/lucene/queryparser/flexible/standard/parser/ParseException.java",
+ match: "^ public ParseException\\(\\).*\$(\\s\\s[^}].*\\n)* \\}",
+ replace: " public ParseException() {${lineSeparator}" +
+ " super(new MessageImpl(QueryParserMessages.INVALID_SYNTAX,
\"Error\"));${lineSeparator}" +
+ " }",
+ flags: "gm",
+ byline: "false")
+ ant.replaceregexp(file:
"src/java/org/apache/lucene/queryparser/flexible/standard/parser/ParseException.java",
+ match: "^ public String getMessage\\(\\).*\$(\\s\\s\\s\\s[^}].*\n)*
\\}",
+ replace: " private static String initialise(Token currentToken, int[][]
expectedTokenSequences, String[] tokenImage) {${lineSeparator}" +
+ "String eol = System.getProperty("lineSeparator",
"\n");",
+ flags: "gm",
+ byline: "false")
+ ant.replaceregexp(file:
"src/java/org/apache/lucene/queryparser/flexible/standard/parser/ParseException.java",
+ match: "\\s*protected String add_escapes.*",
+ replace: " static private String add_escapes(String str) {",
+ flags: "g",
+ byline: "true")
+ }
+
+ task runJavacc {
+ outputs.upToDateWhen { false } //nocommit
+ group = 'Build Regenerate'
+ description = "Regenerates javacc generated src files."
+ dependsOn runJavaccQueryParser, runJavaccSurround, runJavaccFlexible
+ }
+
+ task regenerate {
+ group = 'Build Regenerate'
+ description = "Regenerates various generated src files, automoton,
packedints, jflex, javacc, etc"
+ dependsOn runJavacc
+ }
+}
+
+class JavaCC extends DefaultTask {
+
+ @InputFile
+ File inputFile
+
+ @OutputDirectory
+ File target
+
+ String lineSeparator = System.lineSeparator()
+ @TaskAction
+ void javacc() {
+
+
+ String javaCCClasspath =
project.project(":lucene:queryparser").configurations.javaCCDeps.asPath
+ String javaCCHome = javaCCClasspath.substring(0,
javaCCClasspath.lastIndexOf("/"))
+
+ // This bit seems really awkward, but I didn't find a good way to either
convince the ant task to accept a different
+ // name than javacc.jar...
+ // nocommit So I'm taking the javacc-5.0.jar file that's downloaded to
Gradle's cache and renaming it.
Review comment:
OK,I'll try it that way.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]