> yes that's what I want. I know that the solution could be the > permutation of the pieces but this blows up the grammar with n!.
Sure does... :-) > > however, what you're talking about is a semantic validation > of input, > > something which usally happens after parsing and hence isn't dealt > > with by grammars. Well, thats not quite correct. Its not that uncommon for parsers to handle some semantic validation during the parser phase. Especially recursive descent ones. > hmm, I'm not sure that this is semantik. The semantik is, that the > value of email could be used in a To: field, but the required pieces > are still syntax, as we can see that this could be done with permuting > the pieces. Yes, but that syntax is not context-free. And as I said and Marco implied parsers can only directly handle context-free grammars (and P::RD can only handle a subset of CFG's due to it being a recursive descent parser anyway :-) > > > > > > > > And the following would also be sometimes useful: > > > > > > exor : Mr ^ Mrs ^ hybrid Hmm, again (afaict) as presented this is a non-context-free constraint. But with a bit of gymnastics you can do this with P:RD using regexes: salutation : /Mrs?/ first_name last_name first_name : /(?!Mrs?)\S+/ last_name : /\S+/ Or using lookahead matches salutation : 'Mr' ...!'Mrs' | 'Mrs' ...!'Mr' Cheers, Yves