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 <[EMAIL PROTECTED]> wrote:
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

Reply via email to