On Wed, 24 Oct 2007 05:17:11 -0400 "Terrence Brannon" <[EMAIL PROTECTED]> wrote:
TB> On 10/23/07, Ted Zlatanov <[EMAIL PROTECTED]> wrote: >> >> Any chance you can post a complete example with sample input that fails? >> TB> my $grammar = << 'EOGRAMMAR'; TB> store: name geoloc TB> name: "trader joe's" | "whole foods" TB> geoloc: geoloc1 and(?) geoloc2 | geoloc_ TB> geoloc1: geoloc_ TB> geoloc2: geoloc_ TB> geoloc_: city | state | country | area TB> and: 'and' TB> city: 'los angeles' | 'new york' TB> state: 'california' | 'new york' TB> country: 'united states' TB> area: 'north' | 'south' | 'east' | 'west' TB> EOGRAMMAR I think actions may be the answer for your original problem, which was to distinguish the two positions (so you created the geoloc1 and geoloc2 rules). An action like this: { $return = { item1 => $item[1], item2 => $item[3] }; } would give you back a hash with the entries for your matched items named appropriately. I don't know why you had subrule problems, sorry. You could also consider the <leftop> command, which could set up "A and B and C" parsing for you, unlike your current rules which only accomodate one "and". You can use actions again to return the right things by name. Hope this helps. Ted