Hi,
I'm not sure how to answer the forwarded email. At list i have an idea but without using PPExpressionParser. Someone has an answer that rely on PPExpressionParser?

Cheers,
Fabrizio

Begin forwarded message:

Hi Fabrizio,
How are you? Its Friday, its me again :D.
I realized some stuff but still don't really get the Expressions. Let me give you an example:

exp := PPExpressionParser new.
exp term: (($$ asParser trim , #letter asParser star) flatten / ($" asParser trim, $" asParser negate star, $" asParser trim) flatten);
group: [ :g |
g right: '=' asParser trim do: [:a :op :b | {a. op. b.}].
].

exp parse: '$var = "dings"'. "this is valid code"
exp parse: '"dings" = $var'. "this is invalid code"

How do i tell the expression parser to make a constrain on one side? Or a better question could be: How do i combine expression parsers to achieve a similar behavior? Do i even have to? Or am I to assume that the programmer just knows the order...? I could do something like:

group: [ :g |
g right: '=' asParser trim do: [:a :op :b | 
{ (LeftAssignmentSideExpressionParser new parse: a.) op. (RightAssignmentSideExpressionParser new parse: b.) }
].
].

Do you see my Problem?

Cheers Michael