Expression system - best approach?

I have a project where I need a full expression language, but the target of generation is XQuery.  I'm trying to decide what would be more efficient:

1) extend base language and use those concepts, then map the concepts to XQuery in the generator or

2) just roll my own expression language following the Xquery/XPath specs, referring to base language for ideas if I get stuck

The problem I see with #1 is that the whole java language is available and potentially has to be mapped, and some concepts may not map cleanly to Xquery.  Also, I have to map everything up front, or build in a lot of constraints to restrict the base concepts that are available.  Plus, I'm just not sure if base language is meant to be used that way.

I could see #2 allowing a more incremental approach,like start with a few simple operators and stuff, then add more advanced concepts if and when needed.  My fear here is hitting a wall as more concepts are added and the complexity mounts, or eventually end up replicating most of base language.

I'm leaning towards #2, and I've started building an XQuery language based on the spec, which I would build my language on top of.

But before I get too far down that path, I thought I would ask for suggestions. It's awfully tempting to extend base language, inheirit from Expression and then sort it out in the generator.



Please sign in to leave a comment.