Being impatient, here's my dirty hack to make things work for me:
< IDENTIFIER: <LETTER> (<LETTER>|<DIGIT>)* >
to
< IDENTIFIER: <LETTER> (<LETTER>|<DIGIT>)* (["+"])? >
I know that's the wrong solution, but that's probably the best I can do.
On 8/17/06, Mike Kienenberger <mkienen..mail.com> wrote:
> On 8/17/06, Andrus Adamchik <andru..bjectstyle.org> 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
>
This archive was generated by hypermail 2.0.0 : Thu Aug 17 2006 - 19:13:39 EDT