in reply to Re^2: Parsing command string into a hash
in thread Parsing command string into a hash
I couldn't quite understand how to formulate the grammar.
Odd, since it's very similar to what you need to parse. What did you try? At first, focus on the parsing and don't worry about your output. Add that at the end.
There are problems with the design of your output structure.
Why is a non-switch parameter called "param1' in one place and "value" in another?
Why would a property of mandatory parameters be called "param1"?
# Bad - Redundant 'mandatory' => [ { 'param1' => '...', } { 'param2' => '...', } ], # Bad - Hash as an array 'mandatory' => { 'param1' => '...', 'param2' => '...', }, # Ok 'mandatory' => [ { 'param' => '...', ... } { 'param' => '...', ... } ], # Ok 'mandatory' => [ '...', '...', ],
What if an alternation contains something other than just a <...> or just a [<...>]? For example, could you have { update | insert }? Your output format doesn't support that.
By the way, it works out that if any of the terms of an alternation are optional, they all are.
is equivalent to{ ... | [...] | ... }
[ { ... | ... | ... } ]
That's good, because your design relies on it.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Parsing command string into a hash
by perlpal (Scribe) on Jul 17, 2009 at 05:37 UTC | |
by ikegami (Patriarch) on Jul 17, 2009 at 13:37 UTC |