package nuscr
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=fbd17793416c225702a93f52e200e48faa37721cab4d16c3d997500407c6fede
sha512=da005593f3ae30c2566121452535c2405508f197f26962ac25d402e40245b3c8344d5a654cd3e3069f85458b232a845bc4a0371bacc59741dfb067e88cd3d6d0
doc/nuscr.lib/Nuscrlib/index.html
Module NuscrlibSource
Parsing
Main entry point of the library
This section deals with parsing protocols.
Parse a string into a Syntax.scr_module.
Parse from an input channel. The first parameter is the filename, for use in error messages.
Validation
validate_exn module validates the module module by performing standard checks. If verbose is set to true in the config, debugging messages will be printed
Other operations
val enumerate :
Syntaxtree.Syntax.scr_module ->
(Names.ProtocolName.t * Names.RoleName.t) listenumerate module enumerates the roles occurring in module. The output is a list of pair (protocol, role-name).
val project_role :
Syntaxtree.Syntax.scr_module ->
protocol:Names.ProtocolName.t ->
role:Names.RoleName.t ->
Mpst.Ltype.tproject_role module protocol role computes the local type for role role in the protocol protocol.
val get_global_type :
Syntaxtree.Syntax.scr_module ->
protocol:Names.ProtocolName.t ->
Mpst.Gtype.tget_global_type module gets the corresponding global type for a module
val generate_fsm :
Syntaxtree.Syntax.scr_module ->
protocol:Names.ProtocolName.t ->
role:Names.RoleName.t ->
Mpst.Efsm.state * Mpst.Efsm.tgenerate_fsm module protocol role computes the finite state machine of role role in protocol protocol, in module module. It returns a pair (v, g) where g is the graph describing the fsm, and v is the root index.
val generate_go_code :
Syntaxtree.Syntax.scr_module ->
protocol:Names.ProtocolName.t ->
out_dir:string ->
go_path:string option ->
stringgenerate_code module protocol out_dir go_path generates Golang implementation for protocol. The protocol implementation designed to be a subpackage within a project. out_dir is the path from the root of the project until the package inside which the protocol implementation (subpackage) should be generated - it is needed to generate imports. go_path is the path to the project root, which can optionally be provided in order to write the implementation to the file system.
val generate_ocaml_code :
monad:bool ->
Syntaxtree.Syntax.scr_module ->
protocol:Names.ProtocolName.t ->
role:Names.RoleName.t ->
stringgenerate_code ~monad module protocol role generates event-style OCaml code for the role in protocol, inside a module monad indicates whether the generated code uses a monad for transport (e.g. Lwt, Async)
generate_code ~monad module protocol role generates event-style OCaml code for the role in protocol, inside a module monad indicates whether the generated code uses a monad for transport (e.g. Lwt, Async)
val generate_ast :
monad:bool ->
Syntaxtree.Syntax.scr_module ->
protocol:Names.ProtocolName.t ->
role:Names.RoleName.t ->
Ppxlib_ast.Parsetree.structuregenerate_ast ~monad module protocol role is similar to generate_code, except it returns an AST instead of a string
val generate_fstar_code :
Syntaxtree.Syntax.scr_module ->
protocol:Names.ProtocolName.t ->
role:Names.RoleName.t ->
stringGenerate F* code, with support for refinement types