package libsail

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

Sail model configuration using JSON.

Rewrite any any configuration nodes in the AST, and gather configuration information.

This rewrite performs two operations:

First, It takes a JSON configuration file as input and replaces E_config nodes within the AST using information within that JSON. For example:

config a.b.c : T

will cause a.b.c to be looked up in the provided JSON and whatever JSON value is at that key will be interpreted as the type T and inserted in the AST.

If a.b.c does not exist, then the E_config node will remain to be instantiated by a configuration value at runtime.

Second, for each type T attached to a configuration node (which may have been inferred from context by the type system), we will also attempt to synthesise a JSON Schema. If T cannot be turned into a valid schema then this function raises a fatal type error exception. This schema cannot capture every possible invariant of an ISA configuration, but it does provide enough to guarantee that a configuration applied at runtime will not break type-safety assuming it validates against the schema.

The function will return that JSON schema alongside the re-written AST.

OCaml

Innovation. Community. Security.