package orsetto

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type

Parser combinators for record types.

Overview

This module provides functional combinators for parsing records comprising lists of indexed fields, where an index is a value of totally ordered type, and the associated value has a type that depends on the value of the index.

Theory of Operation: Define a Basis that provides the scanners for field indexes and separators. Use that to Create() a profile of the record scanner in the syntax of each interchange language. Its users may then define a schema for each application record to scan, and use them to define scanners that first produce a pack by scanning according to the schema, then unpack the scanned records from the pack into application data structures.

Interface

Define a module of this signature according to the syntax of record types for a given structural interchange language.

module type Basis = sig ... end

The basis signature of a record scanning module.

module type Profile = sig ... end

The signature of a record scanning module.

module Create (B : Basis) : Profile with type index := B.Index.t and type 'a form := 'a B.Form.t and type 'a t := 'a B.Scan.t

Use Create(B) to make a record scanning module with basis B.