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