I like the idea of a Fluent Parser, but I find the syntax you're using very confusing, which probably isn't what you wanted to hear.

Some feedback:

 - Productions, Production, Onreduce, these terms have no meaning for me. So they don't feel fluent at all. They might be fluent in the world of a parser, but as you want to abstract the parses away, I think you need to think more in terms of the resulting structure or the expressions. 
 - What's meant by f => f[1]? It's unclear for the reader, can't you write this as OnReduce<returnType>().SkipLiteral("}").Take<returnType>(); or something else that stays fluent and removed the need for these lambda's if possible? 
 - I'd try to refactor OnReduce (whatever it does) to be a generic method, so that OnReduce(f => ((List&lt;object&gt;)f[1]).ToArray()) would become OnReduce&lt;object[]&gt;(f => f[1]); And then you need to figure out a way to remove the f => f[1] part.