On 8/17/06, Andrus Adamchik <[EMAIL PROTECTED]> wrote:
What I was thinking we can do
to simplify the semantics specification (and also make expressions
parsed from strings work the same way as expressions created via
ExpressionFactory) is add join type to the object path string. E.g.
use a "+" sign like Oracle did in the past:
* Inner join: "toArtist"
* Left outer join: "toArtist+"
* Longer path with mixed joins: "toGallery+.toAddress"
This seems like a reasonable non-verbose solution. What do you think?
Ugh. This is getting more difficult each step. Apparently
ExpressionParser doesn't like + as part of an attribute name. I was
hoping I could simply slice that off the end of an path component
string when found by PathIterator.next().
I don't know if I have enough time to learn JJTree & JavaCC,
particularly since I haven't done anything with compilers in 15 years.
Any suggestions for me on this one?
Caused by: org.objectstyle.cayenne.exp.parser.TokenMgrError: Lexical
error at line 1, column 16. Encountered: "p" (112), after : "."
at
org.objectstyle.cayenne.exp.parser.ExpressionParserTokenManager.getNextToken(ExpressionParserTokenManager.java:1500)
at
org.objectstyle.cayenne.exp.parser.ExpressionParser.jj_ntk(ExpressionParser.java:1336)
at
org.objectstyle.cayenne.exp.parser.ExpressionParser.numericTerm(ExpressionParser.java:1049)
at
org.objectstyle.cayenne.exp.parser.ExpressionParser.multiplySubtractExp(ExpressionParser.java:973)
at
org.objectstyle.cayenne.exp.parser.ExpressionParser.scalarNumericExpression(ExpressionParser.java:916)
at
org.objectstyle.cayenne.exp.parser.ExpressionParser.scalarExpression(ExpressionParser.java:773)
at
org.objectstyle.cayenne.exp.parser.ExpressionParser.simpleCondition(ExpressionParser.java:236)
at
org.objectstyle.cayenne.exp.parser.ExpressionParser.notCondition(ExpressionParser.java:226)
at
org.objectstyle.cayenne.exp.parser.ExpressionParser.andCondition(ExpressionParser.java:134)
at
org.objectstyle.cayenne.exp.parser.ExpressionParser.orCondition(ExpressionParser.java:94)
at
org.objectstyle.cayenne.exp.parser.ExpressionParser.expression(ExpressionParser.java:87)
at
org.objectstyle.cayenne.exp.Expression.fromString(Expression.java:260)
... 16 more