package frama-c
Install
Dune Dependency
Authors
-
MMichele Alberti
-
TThibaud Antignac
-
GGergö Barany
-
PPatrick Baudin
-
TThibaut Benjamin
-
AAllan Blanchard
-
LLionel Blatter
-
FFrançois Bobot
-
RRichard Bonichon
-
QQuentin Bouillaguet
-
DDavid Bühler
-
ZZakaria Chihani
-
LLoïc Correnson
-
JJulien Crétin
-
PPascal Cuoq
-
ZZaynah Dargaye
-
BBasile Desloges
-
JJean-Christophe Filliâtre
-
PPhilippe Herrmann
-
MMaxime Jacquemin
-
FFlorent Kirchner
-
AAlexander Kogtenkov
-
TTristan Le Gall
-
JJean-Christophe Léchenet
-
MMatthieu Lemerre
-
DDara Ly
-
DDavid Maison
-
CClaude Marché
-
AAndré Maroneze
-
TThibault Martin
-
FFonenantsoa Maurica
-
MMelody Méaulle
-
BBenjamin Monate
-
YYannick Moy
-
PPierre Nigron
-
AAnne Pacalet
-
VValentin Perrelle
-
GGuillaume Petiot
-
DDario Pinto
-
VVirgile Prevosto
-
AArmand Puccetti
-
FFélix Ridoux
-
VVirgile Robles
-
JJan Rochel
-
MMuriel Roger
-
JJulien Signoles
-
NNicolas Stouls
-
KKostyantyn Vorobyov
-
BBoris Yakobowski
Maintainers
Sources
sha256=0220bc743b7da2468ceb926f331edc7ddfaa7c603ba47962de3e33c8e1e3f593
doc/frama-c.kernel/Frama_c_kernel/Printer/index.html
Module Frama_c_kernel.Printer
AST's pretty-printer.
include Printer_api.S
include Printer_api.S_pp
val pp_varname : Format.formatter -> string -> unit
Printer for C constructs
val pp_location : Format.formatter -> Cil_types.location -> unit
val pp_constant : Format.formatter -> Cil_types.constant -> unit
val pp_storage : Format.formatter -> Cil_types.storage -> unit
val pp_ikind : Format.formatter -> Cil_types.ikind -> unit
val pp_fkind : Format.formatter -> Cil_types.fkind -> unit
val pp_typ : Format.formatter -> Cil_types.typ -> unit
val pp_exp : Format.formatter -> Cil_types.exp -> unit
val pp_vdecl : Format.formatter -> Cil_types.varinfo -> unit
val pp_varinfo : Format.formatter -> Cil_types.varinfo -> unit
val pp_lval : Format.formatter -> Cil_types.lval -> unit
val pp_field : Format.formatter -> Cil_types.fieldinfo -> unit
val pp_offset : Format.formatter -> Cil_types.offset -> unit
val pp_init : Format.formatter -> Cil_types.init -> unit
val pp_binop : Format.formatter -> Cil_types.binop -> unit
val pp_unop : Format.formatter -> Cil_types.unop -> unit
val pp_attribute : Format.formatter -> Cil_types.attribute -> unit
val pp_attrparam : Format.formatter -> Cil_types.attrparam -> unit
val pp_attributes : Format.formatter -> Cil_types.attributes -> unit
val pp_instr : Format.formatter -> Cil_types.instr -> unit
val pp_label : Format.formatter -> Cil_types.label -> unit
val pp_stmt : Format.formatter -> Cil_types.stmt -> unit
val pp_block : Format.formatter -> Cil_types.block -> unit
val pp_global : Format.formatter -> Cil_types.global -> unit
val pp_file : Format.formatter -> Cil_types.file -> unit
val pp_compinfo : Format.formatter -> Cil_types.compinfo -> unit
val pp_logic_type_info : Format.formatter -> Cil_types.logic_type_info -> unit
val pp_logic_ctor_info : Format.formatter -> Cil_types.logic_ctor_info -> unit
val pp_initinfo : Format.formatter -> Cil_types.initinfo -> unit
val pp_logic_info : Format.formatter -> Cil_types.logic_info -> unit
val pp_logic_constant : Format.formatter -> Cil_types.logic_constant -> unit
val pp_fundec : Format.formatter -> Cil_types.fundec -> unit
Printer for ACSL constructs
val pp_relation : Format.formatter -> Cil_types.relation -> unit
val pp_model_info : Format.formatter -> Cil_types.model_info -> unit
val pp_term_lval : Format.formatter -> Cil_types.term_lval -> unit
val pp_term_lhost : Format.formatter -> Cil_types.term_lhost -> unit
val pp_logic_var : Format.formatter -> Cil_types.logic_var -> unit
val pp_logic_type : Format.formatter -> Cil_types.logic_type -> unit
val pp_identified_term : Format.formatter -> Cil_types.identified_term -> unit
val pp_term : Format.formatter -> Cil_types.term -> unit
val pp_model_field : Format.formatter -> Cil_types.model_info -> unit
val pp_term_offset : Format.formatter -> Cil_types.term_offset -> unit
val pp_logic_builtin_label :
Format.formatter ->
Cil_types.logic_builtin_label ->
unit
val pp_logic_label : Format.formatter -> Cil_types.logic_label -> unit
val pp_builtin_logic_info :
Format.formatter ->
Cil_types.builtin_logic_info ->
unit
val pp_extended : Format.formatter -> Cil_types.acsl_extension -> unit
val pp_short_extended : Format.formatter -> Cil_types.acsl_extension -> unit
val pp_predicate_node : Format.formatter -> Cil_types.predicate_node -> unit
val pp_predicate : Format.formatter -> Cil_types.predicate -> unit
val pp_toplevel_predicate :
Format.formatter ->
Cil_types.toplevel_predicate ->
unit
val pp_identified_predicate :
Format.formatter ->
Cil_types.identified_predicate ->
unit
val pp_code_annotation : Format.formatter -> Cil_types.code_annotation -> unit
val pp_funspec : Format.formatter -> Cil_types.funspec -> unit
val pp_behavior : Format.formatter -> Cil_types.funbehavior -> unit
val pp_global_annotation :
Format.formatter ->
Cil_types.global_annotation ->
unit
val pp_decreases : Format.formatter -> Cil_types.variant -> unit
val pp_variant : Format.formatter -> Cil_types.variant -> unit
val pp_from : Format.formatter -> Cil_types.from -> unit
val pp_assigns : Format.formatter -> Cil_types.assigns -> unit
val pp_allocation : Format.formatter -> Cil_types.allocation -> unit
val pp_loop_from : Format.formatter -> Cil_types.from -> unit
val pp_loop_assigns : Format.formatter -> Cil_types.assigns -> unit
val pp_loop_allocation : Format.formatter -> Cil_types.allocation -> unit
val pp_post_cond :
Format.formatter ->
(Cil_types.termination_kind * Cil_types.identified_predicate) ->
unit
General form of printers
val pp_full_assigns : string -> Format.formatter -> Cil_types.assigns -> unit
first parameter is the introducing keyword (e.g. loop_assigns or assigns).
val without_annot :
(Format.formatter -> 'a -> unit) ->
Format.formatter ->
'a ->
unit
without_annot printer fmt x
pretty prints x
by using printer
, without pretty-printing its function contracts and code annotations.
val force_brace :
(Format.formatter -> 'a -> unit) ->
Format.formatter ->
'a ->
unit
self#force_brace printer fmt x
pretty prints x
by using printer
, but add some extra braces '{' and '}' which are hidden by default.
Extensible printer
class extensible_printer : unit -> Frama_c_kernel.Printer_api.extensible_printer_type
Extend this class if you want to obtain a custom pretty-printer.
module type PrinterClass = sig ... end
Auxiliary module type for a pretty-printer
module type PrinterExtension = functor (_ : PrinterClass) -> PrinterClass
Signature for extending an existing pretty-printer. OCaml forbids inheriting from a class received as argument, so we use a functor instead.
val update_printer : (module PrinterExtension) -> unit
Register a pretty-printer extension. The pretty-printer passed as argument X
in the functor PrinterExtension
is the current pretty-printer, which you should inherit from.
This is how this function should be used:
module PrinterClassDeferred (X: Printer.PrinterClass) = struct
class printer : Printer.extensible_printer = object(self)
inherit X.printer as super
(* Override the standard methods *)
end
end
let () = Printer.update_printer
(module PrinterClassDeferred: Printer.PrinterExtension)
val current_printer : unit -> (module PrinterClass)
Returns the current pretty-printer, with all the extensions added using update_printer
.
val set_printer : (module PrinterClass) -> unit
Set the current pretty-printer, typically to a printer previously obtained through current_printer
. This can be useful to cancel a modification performed through update_printer
.