s_expressions-parsers: redesign the whole package around an abstract type with user-provided data source