From: Steve E. <ste...@jb...> - 2006-07-21 16:48:40
|
Regarding the HQL translator related changes mentioned in the previous email... Mainly, this is involving a fairly large scale refactoring of the Antlr grammars and the associated code. The first aspect was previously discussed on this list, so I won't go into all the gory details. Basically, the current Antlr-based translator translates an HQL query in 3 phases where each phase is represented by one of the grammars. As part of the refactoring, it was decided to move to a 4 phase approach. Essentially, the old second phase will be split out into 2 separate phases (that's slightly simplified, but the basic gist). Another aspect was overall simplification of the AST trees. This is work that has been on going, separated out on the HQL_ANTLR_2 branch in SVN. The focus of the work on that branch thus far has been the first and second phases. This was all being done in an effort to add specific new capabilities to HQL as well as make it easier moving forward to add even more new stuff. For example, one of the new features (that is essentially done on that branch) is the capability to perform "ad hoc" joining. Another is UNION and MINUS capabilities. Another thing that was done was to change the manner in which "property paths" are resolved. The previous version delegated to the individual nodes that made up the path after the entire path had been recognized. That put a lot of responsibility on the nodes in terms of knowing where they were located within the overall statement structure since that has a bearing on how the path resolution needs to be handled. I am not completely satisfied with some of the details about how this is currently being done on the branch, but it's pretty close to how I see this being done in the eventual solution. The one thing that is causing serious issues with the current approach is index operators; they throw a hugely gigantic monkey wrench into that processing currently :( |