Module CST
module CST: sig .. end
The type for concrete syntax trees of POSIX shell scripts. These
trees are produced by the Morbig parser.
This type definition refers directly to the grammar production
rules of the POSIX standard. We use the following convention to
name data constructors: given a rule A -> P1 ... PN of the
grammar, the constructor for this rule starts with the name of the
non terminal A and continues with the names of producers Pi
appearing in the right-hand-side of the production rule. We do not
need types for operators and reserved words.
These concrete syntax trees are actually richer than the
production trees defined by the grammar. Indeed, they also embed
concrete syntax trees for WORDs while the grammar sees WORDs are
mere tokens. For instance, echo `cat bar` is interpreted by the
grammar as a simple command with two WORDs echo and `cat bar`.
Morbig does not stop its work here: it also parses `cat bar` and
the resulting concrete syntax tree is attached to the WORD `cat
bar`. See the type definition for word below for more details.
The PPX syntax extension package "visitors", written by François
Pottier, is used to macro-generate many traversal functions over
this concrete syntax tree. Note that we expose the .ml file of
this module because the types generated by visitors are too
complex to be displayed.
type position = {
}
type lexing_position = Lexing.position = {
|
pos_fname : string; |
|
pos_lnum : int; |
|
pos_bol : int; |
|
pos_cnum : int; |
}
type 'a located = {
}
val position_to_yojson : position -> Yojson.Safe.json
val position_of_yojson : Yojson.Safe.json -> position Ppx_deriving_yojson_runtime.error_or
val lexing_position_to_yojson : lexing_position -> Yojson.Safe.json
val lexing_position_of_yojson : Yojson.Safe.json -> lexing_position Ppx_deriving_yojson_runtime.error_or
val located_to_yojson : 'a. ('a -> Yojson.Safe.json) -> 'a located -> Yojson.Safe.json
val located_of_yojson : 'a.
(Yojson.Safe.json -> 'a Ppx_deriving_yojson_runtime.error_or) ->
Yojson.Safe.json -> 'a located Ppx_deriving_yojson_runtime.error_or
include struct ... end
include struct ... end
include struct ... end
include struct ... end
include struct ... end
include struct ... end
include struct ... end
type program =
type complete_commands =
type complete_command =
type clist =
type and_or =
type pipeline =
type pipe_sequence =
type command =
type compound_command =
type subshell =
type compound_list =
type term =
type for_clause =
type wordlist =
type case_clause =
type case_list_ns =
type case_list =
type case_item_ns =
type case_item =
type pattern =
type if_clause =
type else_part =
type while_clause =
type until_clause =
type function_definition =
type function_body =
type fname =
type brace_group =
type do_group =
type simple_command =
type cmd_name =
type cmd_word =
type cmd_prefix =
type cmd_suffix =
type redirect_list =
type io_redirect =
type io_file =
type filename =
type io_here =
The two IoHere constructors have two arguments. The second argument is
the word holding the contents of the here document, which does not figure
in the grammar.
type here_end =
type newline_list =
| |
NewLineList_NewLine |
| |
NewLineList_NewLineList_NewLine of newline_list' |
type linebreak =
type separator_op =
| |
SeparatorOp_Uppersand |
| |
SeparatorOp_Semicolon |
type separator =
type sequential_sep =
type word =
type word_cst = word_component list
type word_component =
type character_range =
type variable =
type variable_attribute =
| |
NoAttribute |
| |
UseDefaultValues of word |
| |
AssignDefaultValues of word |
| |
IndicateErrorifNullorUnset of word |
| |
UseAlternativeValue of word |
| |
RemoveSmallestSuffixPattern of word |
| |
RemoveLargestSuffixPattern of word |
| |
RemoveSmallestPrefixPattern of word |
| |
RemoveLargestPrefixPattern of word |
type subshell_kind =
| |
SubShellKindBackQuote |
| |
SubShellKindParentheses |
type name =
type assignment_word = name * word
type io_number =
type program' = program located
type complete_commands' = complete_commands located
type complete_command' = complete_command located
type clist' = clist located
type and_or' = and_or located
type pipeline' = pipeline located
type pipe_sequence' = pipe_sequence located
type command' = command located
type compound_command' = compound_command located
type subshell' = subshell located
type compound_list' = compound_list located
type term' = term located
type for_clause' = for_clause located
type wordlist' = wordlist located
type case_clause' = case_clause located
type case_list_ns' = case_list_ns located
type case_list' = case_list located
type case_item_ns' = case_item_ns located
type case_item' = case_item located
type pattern' = pattern located
type if_clause' = if_clause located
type else_part' = else_part located
type while_clause' = while_clause located
type until_clause' = until_clause located
type function_definition' = function_definition located
type function_body' = function_body located
type fname' = fname located
type brace_group' = brace_group located
type do_group' = do_group located
type simple_command' = simple_command located
type cmd_name' = cmd_name located
type cmd_word' = cmd_word located
type cmd_prefix' = cmd_prefix located
type cmd_suffix' = cmd_suffix located
type redirect_list' = redirect_list located
type io_redirect' = io_redirect located
type io_file' = io_file located
type filename' = filename located
type io_here' = io_here located
type here_end' = here_end located
type newline_list' = newline_list located
type linebreak' = linebreak located
type separator_op' = separator_op located
type separator' = separator located
type sequential_sep' = sequential_sep located
type word' = word located
type name' = name located
type assignment_word' = assignment_word located
val program_to_yojson : program -> Yojson.Safe.json
val program_of_yojson : Yojson.Safe.json -> program Ppx_deriving_yojson_runtime.error_or
val complete_commands_to_yojson : complete_commands -> Yojson.Safe.json
val complete_commands_of_yojson : Yojson.Safe.json ->
complete_commands Ppx_deriving_yojson_runtime.error_or
val complete_command_to_yojson : complete_command -> Yojson.Safe.json
val complete_command_of_yojson : Yojson.Safe.json -> complete_command Ppx_deriving_yojson_runtime.error_or
val clist_to_yojson : clist -> Yojson.Safe.json
val clist_of_yojson : Yojson.Safe.json -> clist Ppx_deriving_yojson_runtime.error_or
val and_or_to_yojson : and_or -> Yojson.Safe.json
val and_or_of_yojson : Yojson.Safe.json -> and_or Ppx_deriving_yojson_runtime.error_or
val pipeline_to_yojson : pipeline -> Yojson.Safe.json
val pipeline_of_yojson : Yojson.Safe.json -> pipeline Ppx_deriving_yojson_runtime.error_or
val pipe_sequence_to_yojson : pipe_sequence -> Yojson.Safe.json
val pipe_sequence_of_yojson : Yojson.Safe.json -> pipe_sequence Ppx_deriving_yojson_runtime.error_or
val command_to_yojson : command -> Yojson.Safe.json
val command_of_yojson : Yojson.Safe.json -> command Ppx_deriving_yojson_runtime.error_or
val compound_command_to_yojson : compound_command -> Yojson.Safe.json
val compound_command_of_yojson : Yojson.Safe.json -> compound_command Ppx_deriving_yojson_runtime.error_or
val subshell_to_yojson : subshell -> Yojson.Safe.json
val subshell_of_yojson : Yojson.Safe.json -> subshell Ppx_deriving_yojson_runtime.error_or
val compound_list_to_yojson : compound_list -> Yojson.Safe.json
val compound_list_of_yojson : Yojson.Safe.json -> compound_list Ppx_deriving_yojson_runtime.error_or
val term_to_yojson : term -> Yojson.Safe.json
val term_of_yojson : Yojson.Safe.json -> term Ppx_deriving_yojson_runtime.error_or
val for_clause_to_yojson : for_clause -> Yojson.Safe.json
val for_clause_of_yojson : Yojson.Safe.json -> for_clause Ppx_deriving_yojson_runtime.error_or
val wordlist_to_yojson : wordlist -> Yojson.Safe.json
val wordlist_of_yojson : Yojson.Safe.json -> wordlist Ppx_deriving_yojson_runtime.error_or
val case_clause_to_yojson : case_clause -> Yojson.Safe.json
val case_clause_of_yojson : Yojson.Safe.json -> case_clause Ppx_deriving_yojson_runtime.error_or
val case_list_ns_to_yojson : case_list_ns -> Yojson.Safe.json
val case_list_ns_of_yojson : Yojson.Safe.json -> case_list_ns Ppx_deriving_yojson_runtime.error_or
val case_list_to_yojson : case_list -> Yojson.Safe.json
val case_list_of_yojson : Yojson.Safe.json -> case_list Ppx_deriving_yojson_runtime.error_or
val case_item_ns_to_yojson : case_item_ns -> Yojson.Safe.json
val case_item_ns_of_yojson : Yojson.Safe.json -> case_item_ns Ppx_deriving_yojson_runtime.error_or
val case_item_to_yojson : case_item -> Yojson.Safe.json
val case_item_of_yojson : Yojson.Safe.json -> case_item Ppx_deriving_yojson_runtime.error_or
val pattern_to_yojson : pattern -> Yojson.Safe.json
val pattern_of_yojson : Yojson.Safe.json -> pattern Ppx_deriving_yojson_runtime.error_or
val if_clause_to_yojson : if_clause -> Yojson.Safe.json
val if_clause_of_yojson : Yojson.Safe.json -> if_clause Ppx_deriving_yojson_runtime.error_or
val else_part_to_yojson : else_part -> Yojson.Safe.json
val else_part_of_yojson : Yojson.Safe.json -> else_part Ppx_deriving_yojson_runtime.error_or
val while_clause_to_yojson : while_clause -> Yojson.Safe.json
val while_clause_of_yojson : Yojson.Safe.json -> while_clause Ppx_deriving_yojson_runtime.error_or
val until_clause_to_yojson : until_clause -> Yojson.Safe.json
val until_clause_of_yojson : Yojson.Safe.json -> until_clause Ppx_deriving_yojson_runtime.error_or
val function_definition_to_yojson : function_definition -> Yojson.Safe.json
val function_definition_of_yojson : Yojson.Safe.json ->
function_definition Ppx_deriving_yojson_runtime.error_or
val function_body_to_yojson : function_body -> Yojson.Safe.json
val function_body_of_yojson : Yojson.Safe.json -> function_body Ppx_deriving_yojson_runtime.error_or
val fname_to_yojson : fname -> Yojson.Safe.json
val fname_of_yojson : Yojson.Safe.json -> fname Ppx_deriving_yojson_runtime.error_or
val brace_group_to_yojson : brace_group -> Yojson.Safe.json
val brace_group_of_yojson : Yojson.Safe.json -> brace_group Ppx_deriving_yojson_runtime.error_or
val do_group_to_yojson : do_group -> Yojson.Safe.json
val do_group_of_yojson : Yojson.Safe.json -> do_group Ppx_deriving_yojson_runtime.error_or
val simple_command_to_yojson : simple_command -> Yojson.Safe.json
val simple_command_of_yojson : Yojson.Safe.json -> simple_command Ppx_deriving_yojson_runtime.error_or
val cmd_name_to_yojson : cmd_name -> Yojson.Safe.json
val cmd_name_of_yojson : Yojson.Safe.json -> cmd_name Ppx_deriving_yojson_runtime.error_or
val cmd_word_to_yojson : cmd_word -> Yojson.Safe.json
val cmd_word_of_yojson : Yojson.Safe.json -> cmd_word Ppx_deriving_yojson_runtime.error_or
val cmd_prefix_to_yojson : cmd_prefix -> Yojson.Safe.json
val cmd_prefix_of_yojson : Yojson.Safe.json -> cmd_prefix Ppx_deriving_yojson_runtime.error_or
val cmd_suffix_to_yojson : cmd_suffix -> Yojson.Safe.json
val cmd_suffix_of_yojson : Yojson.Safe.json -> cmd_suffix Ppx_deriving_yojson_runtime.error_or
val redirect_list_to_yojson : redirect_list -> Yojson.Safe.json
val redirect_list_of_yojson : Yojson.Safe.json -> redirect_list Ppx_deriving_yojson_runtime.error_or
val io_redirect_to_yojson : io_redirect -> Yojson.Safe.json
val io_redirect_of_yojson : Yojson.Safe.json -> io_redirect Ppx_deriving_yojson_runtime.error_or
val io_file_to_yojson : io_file -> Yojson.Safe.json
val io_file_of_yojson : Yojson.Safe.json -> io_file Ppx_deriving_yojson_runtime.error_or
val filename_to_yojson : filename -> Yojson.Safe.json
val filename_of_yojson : Yojson.Safe.json -> filename Ppx_deriving_yojson_runtime.error_or
val io_here_to_yojson : io_here -> Yojson.Safe.json
val io_here_of_yojson : Yojson.Safe.json -> io_here Ppx_deriving_yojson_runtime.error_or
val here_end_to_yojson : here_end -> Yojson.Safe.json
val here_end_of_yojson : Yojson.Safe.json -> here_end Ppx_deriving_yojson_runtime.error_or
val newline_list_to_yojson : newline_list -> Yojson.Safe.json
val newline_list_of_yojson : Yojson.Safe.json -> newline_list Ppx_deriving_yojson_runtime.error_or
val linebreak_to_yojson : linebreak -> Yojson.Safe.json
val linebreak_of_yojson : Yojson.Safe.json -> linebreak Ppx_deriving_yojson_runtime.error_or
val separator_op_to_yojson : separator_op -> Yojson.Safe.json
val separator_op_of_yojson : Yojson.Safe.json -> separator_op Ppx_deriving_yojson_runtime.error_or
val separator_to_yojson : separator -> Yojson.Safe.json
val separator_of_yojson : Yojson.Safe.json -> separator Ppx_deriving_yojson_runtime.error_or
val sequential_sep_to_yojson : sequential_sep -> Yojson.Safe.json
val sequential_sep_of_yojson : Yojson.Safe.json -> sequential_sep Ppx_deriving_yojson_runtime.error_or
val word_to_yojson : word -> Yojson.Safe.json
val word_of_yojson : Yojson.Safe.json -> word Ppx_deriving_yojson_runtime.error_or
val word_cst_to_yojson : word_cst -> Yojson.Safe.json
val word_cst_of_yojson : Yojson.Safe.json -> word_cst Ppx_deriving_yojson_runtime.error_or
val word_component_to_yojson : word_component -> Yojson.Safe.json
val word_component_of_yojson : Yojson.Safe.json -> word_component Ppx_deriving_yojson_runtime.error_or
val character_range_to_yojson : character_range -> Yojson.Safe.json
val character_range_of_yojson : Yojson.Safe.json -> character_range Ppx_deriving_yojson_runtime.error_or
val variable_to_yojson : variable -> Yojson.Safe.json
val variable_of_yojson : Yojson.Safe.json -> variable Ppx_deriving_yojson_runtime.error_or
val variable_attribute_to_yojson : variable_attribute -> Yojson.Safe.json
val variable_attribute_of_yojson : Yojson.Safe.json ->
variable_attribute Ppx_deriving_yojson_runtime.error_or
val subshell_kind_to_yojson : subshell_kind -> Yojson.Safe.json
val subshell_kind_of_yojson : Yojson.Safe.json -> subshell_kind Ppx_deriving_yojson_runtime.error_or
val name_to_yojson : name -> Yojson.Safe.json
val name_of_yojson : Yojson.Safe.json -> name Ppx_deriving_yojson_runtime.error_or
val assignment_word_to_yojson : assignment_word -> Yojson.Safe.json
val assignment_word_of_yojson : Yojson.Safe.json -> assignment_word Ppx_deriving_yojson_runtime.error_or
val io_number_to_yojson : io_number -> Yojson.Safe.json
val io_number_of_yojson : Yojson.Safe.json -> io_number Ppx_deriving_yojson_runtime.error_or
val program'_to_yojson : program' -> Yojson.Safe.json
val program'_of_yojson : Yojson.Safe.json -> program' Ppx_deriving_yojson_runtime.error_or
val complete_commands'_to_yojson : complete_commands' -> Yojson.Safe.json
val complete_commands'_of_yojson : Yojson.Safe.json ->
complete_commands' Ppx_deriving_yojson_runtime.error_or
val complete_command'_to_yojson : complete_command' -> Yojson.Safe.json
val complete_command'_of_yojson : Yojson.Safe.json ->
complete_command' Ppx_deriving_yojson_runtime.error_or
val clist'_to_yojson : clist' -> Yojson.Safe.json
val clist'_of_yojson : Yojson.Safe.json -> clist' Ppx_deriving_yojson_runtime.error_or
val and_or'_to_yojson : and_or' -> Yojson.Safe.json
val and_or'_of_yojson : Yojson.Safe.json -> and_or' Ppx_deriving_yojson_runtime.error_or
val pipeline'_to_yojson : pipeline' -> Yojson.Safe.json
val pipeline'_of_yojson : Yojson.Safe.json -> pipeline' Ppx_deriving_yojson_runtime.error_or
val pipe_sequence'_to_yojson : pipe_sequence' -> Yojson.Safe.json
val pipe_sequence'_of_yojson : Yojson.Safe.json -> pipe_sequence' Ppx_deriving_yojson_runtime.error_or
val command'_to_yojson : command' -> Yojson.Safe.json
val command'_of_yojson : Yojson.Safe.json -> command' Ppx_deriving_yojson_runtime.error_or
val compound_command'_to_yojson : compound_command' -> Yojson.Safe.json
val compound_command'_of_yojson : Yojson.Safe.json ->
compound_command' Ppx_deriving_yojson_runtime.error_or
val subshell'_to_yojson : subshell' -> Yojson.Safe.json
val subshell'_of_yojson : Yojson.Safe.json -> subshell' Ppx_deriving_yojson_runtime.error_or
val compound_list'_to_yojson : compound_list' -> Yojson.Safe.json
val compound_list'_of_yojson : Yojson.Safe.json -> compound_list' Ppx_deriving_yojson_runtime.error_or
val term'_to_yojson : term' -> Yojson.Safe.json
val term'_of_yojson : Yojson.Safe.json -> term' Ppx_deriving_yojson_runtime.error_or
val for_clause'_to_yojson : for_clause' -> Yojson.Safe.json
val for_clause'_of_yojson : Yojson.Safe.json -> for_clause' Ppx_deriving_yojson_runtime.error_or
val wordlist'_to_yojson : wordlist' -> Yojson.Safe.json
val wordlist'_of_yojson : Yojson.Safe.json -> wordlist' Ppx_deriving_yojson_runtime.error_or
val case_clause'_to_yojson : case_clause' -> Yojson.Safe.json
val case_clause'_of_yojson : Yojson.Safe.json -> case_clause' Ppx_deriving_yojson_runtime.error_or
val case_list_ns'_to_yojson : case_list_ns' -> Yojson.Safe.json
val case_list_ns'_of_yojson : Yojson.Safe.json -> case_list_ns' Ppx_deriving_yojson_runtime.error_or
val case_list'_to_yojson : case_list' -> Yojson.Safe.json
val case_list'_of_yojson : Yojson.Safe.json -> case_list' Ppx_deriving_yojson_runtime.error_or
val case_item_ns'_to_yojson : case_item_ns' -> Yojson.Safe.json
val case_item_ns'_of_yojson : Yojson.Safe.json -> case_item_ns' Ppx_deriving_yojson_runtime.error_or
val case_item'_to_yojson : case_item' -> Yojson.Safe.json
val case_item'_of_yojson : Yojson.Safe.json -> case_item' Ppx_deriving_yojson_runtime.error_or
val pattern'_to_yojson : pattern' -> Yojson.Safe.json
val pattern'_of_yojson : Yojson.Safe.json -> pattern' Ppx_deriving_yojson_runtime.error_or
val if_clause'_to_yojson : if_clause' -> Yojson.Safe.json
val if_clause'_of_yojson : Yojson.Safe.json -> if_clause' Ppx_deriving_yojson_runtime.error_or
val else_part'_to_yojson : else_part' -> Yojson.Safe.json
val else_part'_of_yojson : Yojson.Safe.json -> else_part' Ppx_deriving_yojson_runtime.error_or
val while_clause'_to_yojson : while_clause' -> Yojson.Safe.json
val while_clause'_of_yojson : Yojson.Safe.json -> while_clause' Ppx_deriving_yojson_runtime.error_or
val until_clause'_to_yojson : until_clause' -> Yojson.Safe.json
val until_clause'_of_yojson : Yojson.Safe.json -> until_clause' Ppx_deriving_yojson_runtime.error_or
val function_definition'_to_yojson : function_definition' -> Yojson.Safe.json
val function_definition'_of_yojson : Yojson.Safe.json ->
function_definition' Ppx_deriving_yojson_runtime.error_or
val function_body'_to_yojson : function_body' -> Yojson.Safe.json
val function_body'_of_yojson : Yojson.Safe.json -> function_body' Ppx_deriving_yojson_runtime.error_or
val fname'_to_yojson : fname' -> Yojson.Safe.json
val fname'_of_yojson : Yojson.Safe.json -> fname' Ppx_deriving_yojson_runtime.error_or
val brace_group'_to_yojson : brace_group' -> Yojson.Safe.json
val brace_group'_of_yojson : Yojson.Safe.json -> brace_group' Ppx_deriving_yojson_runtime.error_or
val do_group'_to_yojson : do_group' -> Yojson.Safe.json
val do_group'_of_yojson : Yojson.Safe.json -> do_group' Ppx_deriving_yojson_runtime.error_or
val simple_command'_to_yojson : simple_command' -> Yojson.Safe.json
val simple_command'_of_yojson : Yojson.Safe.json -> simple_command' Ppx_deriving_yojson_runtime.error_or
val cmd_name'_to_yojson : cmd_name' -> Yojson.Safe.json
val cmd_name'_of_yojson : Yojson.Safe.json -> cmd_name' Ppx_deriving_yojson_runtime.error_or
val cmd_word'_to_yojson : cmd_word' -> Yojson.Safe.json
val cmd_word'_of_yojson : Yojson.Safe.json -> cmd_word' Ppx_deriving_yojson_runtime.error_or
val cmd_prefix'_to_yojson : cmd_prefix' -> Yojson.Safe.json
val cmd_prefix'_of_yojson : Yojson.Safe.json -> cmd_prefix' Ppx_deriving_yojson_runtime.error_or
val cmd_suffix'_to_yojson : cmd_suffix' -> Yojson.Safe.json
val cmd_suffix'_of_yojson : Yojson.Safe.json -> cmd_suffix' Ppx_deriving_yojson_runtime.error_or
val redirect_list'_to_yojson : redirect_list' -> Yojson.Safe.json
val redirect_list'_of_yojson : Yojson.Safe.json -> redirect_list' Ppx_deriving_yojson_runtime.error_or
val io_redirect'_to_yojson : io_redirect' -> Yojson.Safe.json
val io_redirect'_of_yojson : Yojson.Safe.json -> io_redirect' Ppx_deriving_yojson_runtime.error_or
val io_file'_to_yojson : io_file' -> Yojson.Safe.json
val io_file'_of_yojson : Yojson.Safe.json -> io_file' Ppx_deriving_yojson_runtime.error_or
val filename'_to_yojson : filename' -> Yojson.Safe.json
val filename'_of_yojson : Yojson.Safe.json -> filename' Ppx_deriving_yojson_runtime.error_or
val io_here'_to_yojson : io_here' -> Yojson.Safe.json
val io_here'_of_yojson : Yojson.Safe.json -> io_here' Ppx_deriving_yojson_runtime.error_or
val here_end'_to_yojson : here_end' -> Yojson.Safe.json
val here_end'_of_yojson : Yojson.Safe.json -> here_end' Ppx_deriving_yojson_runtime.error_or
val newline_list'_to_yojson : newline_list' -> Yojson.Safe.json
val newline_list'_of_yojson : Yojson.Safe.json -> newline_list' Ppx_deriving_yojson_runtime.error_or
val linebreak'_to_yojson : linebreak' -> Yojson.Safe.json
val linebreak'_of_yojson : Yojson.Safe.json -> linebreak' Ppx_deriving_yojson_runtime.error_or
val separator_op'_to_yojson : separator_op' -> Yojson.Safe.json
val separator_op'_of_yojson : Yojson.Safe.json -> separator_op' Ppx_deriving_yojson_runtime.error_or
val separator'_to_yojson : separator' -> Yojson.Safe.json
val separator'_of_yojson : Yojson.Safe.json -> separator' Ppx_deriving_yojson_runtime.error_or
val sequential_sep'_to_yojson : sequential_sep' -> Yojson.Safe.json
val sequential_sep'_of_yojson : Yojson.Safe.json -> sequential_sep' Ppx_deriving_yojson_runtime.error_or
val word'_to_yojson : word' -> Yojson.Safe.json
val word'_of_yojson : Yojson.Safe.json -> word' Ppx_deriving_yojson_runtime.error_or
val name'_to_yojson : name' -> Yojson.Safe.json
val name'_of_yojson : Yojson.Safe.json -> name' Ppx_deriving_yojson_runtime.error_or
val assignment_word'_to_yojson : assignment_word' -> Yojson.Safe.json
val assignment_word'_of_yojson : Yojson.Safe.json -> assignment_word' Ppx_deriving_yojson_runtime.error_or
include struct ... end
include struct ... end
include struct ... end
include struct ... end
include struct ... end
include struct ... end
include struct ... end