apache / apache/lucenenet

Automate Generation of QueryParser to C#

Open
#268 6 comments 0 reactions 1 assignee Claimed by @paulirwin View on GitHub
up-for-grabs
Dominant language
C#
Stars
2.4k
Forks
658
Avg merge
3d 5h
Merged PRs (30d)
9

Description

The Lucene team is using a tool called javacc to generate the main business logic behind the query parsers. If we had a similar tool it could help:


  • Speed up the process of porting/upgrading QueryParser

  • Reduce the number of bugs in these modules caused by doing it manually

  • Most importantly, QueryParser could potentially be generated without using exceptions for control flow

The javacc tool uses a configuration file as input and creates java code as output. Here are some examples of those configuration files:

This has not been fully researched, but there are at least 2 potential ways we could approach this:


  1. Find a similar tool to javacc in .NET that supports similar options that were used in javacc, and create a converter tool to change the javacc configuration into a configuration that the .NET tool supports.

  2. Do a direct port of javacc to C#, and fix its logic to use a more efficient control flow mechanism than exceptions (perhaps goto would be the most direct replacement).

It seems according to this document that using a port of javacc should be our first choice because of the performance benchmarks of the resultant code. And certainly that would eliminate the risk of having a .NET tool not support an option that we need either now or for some future version of Lucene.


JIRA link - [LUCENENET-620] created by nightowl888

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.