package libsail

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

Module Libsail.ConfigSource

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.