2011/10/14 Tom Limoncelli <t...@whatexit.org> > Thanks for the feedback. I'm attaching the file and the test. It's > changed a little since the error I showed before. now it is: > > You're doing low level here. There's quite a few primitives you could use to ease your development:
let lbracket = del /\(/ "(" > let rbracket = del /\)/ ")" You can use Util.del_str for that: let lbracket = Util.del_str "(" let rbracket = Util.del_str ")" let var_name = key /[a-zA-Z0-9]+/ > Have a look at the Rx module for that, for example with Rx.word (a bit looser, but fine for your needs): let var_name = Rx.word let simple_value = store /[^a-zA-Z0-9]+/ > Do you *really* want anything but letters? That means, you're trying to store pretty much everything but letters, including spaces and even newlines. I think you don't want the '^' here, and you could probably use Rx.word as well. let simple_list = [ lbracket . var_name . del /[ \t\n]+/ " " . simple_value > . rbracket ] Are you sure you want to allow '\n' as a separator between var_name and simple_value? If not, you could use Sep.space for the separator here. Now this is were you have your problem, because of your definition of simple_value. What happens is that if the string contains a '\n', there's no way to know if it belongs to the separator ( /[ \t\n]+/ ) or the value ( /[^a-zA-Z0-9]+/ ). Raphaël
_______________________________________________ augeas-devel mailing list augeas-devel@redhat.com https://www.redhat.com/mailman/listinfo/augeas-devel