[e-acsl] new compilation scheme via intermedia language
Introduce a new compilation scheme where E-ACSL logic terms are translated to CIL is implemented as a two-stage process. First, E-ACSL is translated into an intermediate language. Only then in the second stage the intermediate language is translated into CIL. The module Interlang specifies the E-ACSL intermediate language type, along with pretty printing functions. As this language is still subject to frequent changes, documentation remains scant for the moment. The module Interlang_gen helps in the creation of Interlang expressions, and is thus useful for the first stage. The module Interlang_trans specifies the translation of Interlang expression to CIL and is relevant for the second stage. Both modules make heavy use of the RWS monad, defined in the Monad_rws module. RWS stands for Reader, Writer, State. The RWS monad is a monad to model computations with side-effects and environments in a purely functional and type-safe manner. As the new compilation scheme covers E-ACSL only partially, it fails on many E-ACSL terms. Therefore we keep for the moment the old direct-to-CIL compilation scheme, and, whenever the new compilation scheme fails for a given sub-term raising the Interlang_gen.Not_covered exception, we fall back on the direct-to-CIL compilation scheme for that sub-term.
Showing
- src/plugins/e-acsl/E_ACSL.ml 3 additions, 0 deletionssrc/plugins/e-acsl/E_ACSL.ml
- src/plugins/e-acsl/doc/Changelog 1 addition, 0 deletionssrc/plugins/e-acsl/doc/Changelog
- src/plugins/e-acsl/src/code_generator/env.ml 6 additions, 0 deletionssrc/plugins/e-acsl/src/code_generator/env.ml
- src/plugins/e-acsl/src/code_generator/env.mli 4 additions, 0 deletionssrc/plugins/e-acsl/src/code_generator/env.mli
- src/plugins/e-acsl/src/code_generator/translate_predicates.ml 69 additions, 15 deletions...plugins/e-acsl/src/code_generator/translate_predicates.ml
- src/plugins/e-acsl/src/code_generator/translate_terms.ml 119 additions, 5 deletionssrc/plugins/e-acsl/src/code_generator/translate_terms.ml
- src/plugins/e-acsl/src/code_generator/translate_terms.mli 4 additions, 0 deletionssrc/plugins/e-acsl/src/code_generator/translate_terms.mli
- src/plugins/e-acsl/src/code_generator/translate_utils.mli 1 addition, 1 deletionsrc/plugins/e-acsl/src/code_generator/translate_utils.mli
- src/plugins/e-acsl/src/interlang/interlang.ml 121 additions, 0 deletionssrc/plugins/e-acsl/src/interlang/interlang.ml
- src/plugins/e-acsl/src/interlang/interlang.mli 94 additions, 0 deletionssrc/plugins/e-acsl/src/interlang/interlang.mli
- src/plugins/e-acsl/src/interlang/interlang_build.ml 38 additions, 0 deletionssrc/plugins/e-acsl/src/interlang/interlang_build.ml
- src/plugins/e-acsl/src/interlang/interlang_build.mli 40 additions, 0 deletionssrc/plugins/e-acsl/src/interlang/interlang_build.mli
- src/plugins/e-acsl/src/interlang/interlang_gen.ml 77 additions, 0 deletionssrc/plugins/e-acsl/src/interlang/interlang_gen.ml
- src/plugins/e-acsl/src/interlang/interlang_gen.mli 93 additions, 0 deletionssrc/plugins/e-acsl/src/interlang/interlang_gen.mli
- src/plugins/e-acsl/src/interlang/interlang_trans.ml 348 additions, 0 deletionssrc/plugins/e-acsl/src/interlang/interlang_trans.ml
- src/plugins/e-acsl/src/interlang/interlang_trans.mli 54 additions, 0 deletionssrc/plugins/e-acsl/src/interlang/interlang_trans.mli
- src/plugins/e-acsl/src/interlang/monad_rws.ml 104 additions, 0 deletionssrc/plugins/e-acsl/src/interlang/monad_rws.ml
- src/plugins/e-acsl/src/interlang/monad_rws.mli 129 additions, 0 deletionssrc/plugins/e-acsl/src/interlang/monad_rws.mli
- src/plugins/e-acsl/src/libraries/analyses_types.ml 5 additions, 0 deletionssrc/plugins/e-acsl/src/libraries/analyses_types.ml
- src/plugins/e-acsl/src/options.ml 20 additions, 0 deletionssrc/plugins/e-acsl/src/options.ml
Loading
Please register or sign in to comment