On Sat, Jun 15, 2013 at 7:21 PM, Zack Maril <thewitzb...@gmail.com> wrote:

> Why does instaparse not throw errors? Curious about the reasoning behind
> this design.
> -Zack
>

I'm not sure what you mean.  It does throw errors for certain kinds of
invalid grammars and other fatal problems.

Perhaps what you're asking is why a string that doesn't fit the grammar
will return a failure object.  There are several reasons:
1. In my view, it's not really an error -- the parser should return some
kind of value that indicates that the string didn't match the parser, and
the value should contain information about why it didn't match the parser.
It's sort of like choosing to return NaN rather than throwing an error for
certain arithmetic ops.
2. The failure object is a simple Clojure map that can be explored,
serialized, whatever.  (I've chosen to print it somewhat like a thrown
error, but it is in fact a value).
3. More consistent when you look at things like the total parse mode, which
need to indicate parse failure and return a valid parse simultaneously.
You can't do that if the only way to indicate failure is by throwing an
error.
4. Makes it possible to chain the output of a parser directly to the
transform function.
5. Makes it possible to do things like mapping a parser across a collection
of strings to parse.

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to