Uploaded image for project: 'Lucene.Net'
  1. Lucene.Net
  2. LUCENENET-620

Automate Generation of QueryParser to C#

    XMLWordPrintableJSON

Details

    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.

      Attachments

        Activity

          People

            Unassigned Unassigned
            nightowl888 Shad Storhaug
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Time Tracking

                Estimated:
                Original Estimate - 120h
                120h
                Remaining:
                Remaining Estimate - 120h
                120h
                Logged:
                Time Spent - Not Specified
                Not Specified