Instead of casting to number here, let `readers['_expression']` return `ol.expr.Expression`.  I think all that is required is for the `PropertyName` reader to return `ol.expr.Identifier` and the `Literal` reader to return `ol.expr.Literal`.