Frontend.Pretty_printing
Some helpers to produce nice error messages and for auto-formatting Stan programs
val comments : Ast.comment_type list Core.ref
To avoid cluttering the AST, comments are not associated with any particular AST node but instead come in a separate list. The pretty printer uses the AST nodes' location metadata to insert whitespace and comments. The comment list is stored in a global state that is accessed by set_comments, get_comments, and skip_comments.
val skipped :
([ `Block | `Include | `Line ] * string list * Middle.Location_span.t) list
Core.ref
val set_comments :
?inline_includes:bool ->
?strip_comments:bool ->
Ast.comment_type list ->
unit
val get_comments :
Middle.Location.t ->
([> `Block | `Include | `Line ] * string list * Middle.Location_span.t) list
val get_comments_until_separator :
Middle.Location.t ->
([> `Block | `Include | `Line ] * string list * Middle.Location_span.t) list
val skip_comments : Middle.Location.t -> unit
val remaining_comments :
unit ->
([ `Block | `Include | `Line ] * string list * Middle.Location_span.t)
Base__List.t
val should_skip : Middle.Location.t -> bool
Checks if something should be skipped based on the print_included setting
val pp_space :
bool ->
Stdlib.Format.formatter ->
(Middle.Location.t * Middle.Location.t) ->
unit
val pp_comment :
Stdlib.Format.formatter ->
([< `Block | `Include | `Line ] * string list * Middle.Location_span.t) ->
unit
val pp_spacing :
?newline:bool ->
Middle.Location.t option ->
Middle.Location.t option ->
Stdlib.Format.formatter ->
([< `Block | `Include | `Line Include Line ]
* string list
* Middle.Location_span.t)
list ->
unit
val pp_comments_spacing :
bool ->
('a ->
([< `Block | `Include | `Line Block ]
* string list
* Middle.Location_span.t)
list) ->
Stdlib.Format.formatter ->
'a ->
unit
val pp_unsizedtype : Middle.UnsizedType.t Fmt.t
val pp_autodifftype :
Stdlib.Format.formatter ->
Middle.UnsizedType.autodifftype ->
unit
val pp_returntype :
Stdlib.Format.formatter ->
Middle.UnsizedType.returntype ->
unit
val pp_identifier : Stdlib.Format.formatter -> Ast.identifier -> unit
val pp_operator : Stdlib.Format.formatter -> Middle.Operator.t -> unit
val pp_list_of :
(Stdlib.Format.formatter -> 'a -> unit) ->
('a -> Middle.Location_span.t) ->
Stdlib.Format.formatter ->
('a list * Middle.Location_span.t) ->
unit
val pp_index : Ast.untyped_expression Ast.index Fmt.t
val pp_list_of_indices :
Stdlib.Format.formatter ->
Ast.untyped_expression Ast.index list ->
unit
val pp_expression : Stdlib.Format.formatter -> Ast.untyped_expression -> unit
val pp_list_of_expression :
Stdlib.Format.formatter ->
(Ast.untyped_expression list * Middle.Location_span.t) ->
unit
val pp_lvalue :
Stdlib.Format.formatter ->
((Ast.located_meta, unit) Ast.expr_with, Ast.located_meta) Ast.lval_with
Ast.lvalue_pack ->
unit
val pp_assignmentoperator :
Stdlib.Format.formatter ->
Ast.assignmentoperator ->
unit
val pp_truncation :
Stdlib.Format.formatter ->
Ast.untyped_expression Ast.truncation ->
unit
val pp_printable :
Stdlib.Format.formatter ->
Ast.untyped_expression Ast.printable ->
unit
val pp_list_of_printables :
Stdlib.Format.formatter ->
Ast.untyped_expression Ast.printable list ->
unit
val pp_bracketed_transform :
Stdlib.Format.formatter ->
Ast.untyped_expression Middle.Transformation.t ->
unit
val pp_transformed_type :
(Ast.untyped_expression Middle.SizedType.t
* Ast.untyped_expression Middle.Transformation.t)
Fmt.t
val pp_indent_unless_block :
Stdlib.Format.formatter ->
(Ast.untyped_statement * Middle.Location.t) ->
unit
val pp_recursive_ifthenelse :
((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
Ast.statement_with
* Middle.Location.t)
Fmt.t
This function helps write chained if-then-else-if-... blocks correctly. Without it, each IfThenElse would trigger a new vbox in front of the if, adding spaces for each level of IfThenElse.
val pp_statement : Ast.untyped_statement Fmt.t
val pp_args :
Stdlib.Format.formatter ->
(Middle.UnsizedType.autodifftype * Middle.UnsizedType.t * Ast.identifier) ->
unit
val pp_list_of_statements :
((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
Ast.statement_with
list
* Middle.Location_span.t)
Fmt.t
val pp_typed_expression :
Stdlib.Format.formatter ->
Ast.typed_expression ->
unit