]- yep it work, i ever tried several other variants that worked too.. the main problem (not a big one) is that if I use <leftop:..> directive the @item access to separate elements is differnt/harder (which is normal as we know how it work) i.e. @item is a mulidimentional array and become deeper and deeper as the expression become more complex. I just want a flattened string of all and in this case I have to make a complex for-in-for cycle.
expression : <leftop: andExpr 'or' andExpr> { "$item[1][0] $item[1][2]" } or some such..(print Dumper [EMAIL PROTECTED] gives better idea). In my case I saw that it will be easier to just use s/// instead of grammar, but never mind it was a good exersice to understan a little bit of the problems with rescursions :") in RecDescent... |I could be wrong of course, I didnt look into it that deeply. But it seems |to me that the grammar | |expression : <leftop: andExpr 'or' andExpr> |andExpr : <leftop: notExpr 'and' notExpr> |notExpr : 'not' brackExpr | brackExpr |brackExpr : '(' expression ')' | comparison |comparison : identifier compType identifier |compType : '=' | '>' | '<' | '>=' | '<=' |identifier : fieldName | number |fieldName : /[a-z]+/ |number : /\d+/ | |works fine. (At least off the top of my head I couldnt build an expression |that would break it.) | |Anyway, the below link documents a mechanical means of eliminating left |recursion from a PRD grammar. And has lots of links to better articles on |the subject. | | http://perlmonks.org/index.pl?node_id=153155 | |Yves |