lh-l4v/tools/c-parser
Michael McInerney 3c322eab1d cparser+crefine: move h_t_array_valid_array_assertion to cparser session
Signed-off-by: Michael McInerney <michael.mcinerney@proofcraft.systems>
2023-01-30 18:00:42 +10:30
..
Simpl isabelle2021-1: sync Simpl from AFP 2022-03-29 08:38:25 +11:00
doc license: provide documentation under CC-BY-SA-4.0 2020-03-16 14:19:15 +08:00
recursive_records isabelle2021-1: remove extend from TheoryData 2022-03-29 08:38:25 +11:00
standalone-parser c-parser: fix default target for standalone parser 2022-11-30 10:27:59 +11:00
testfiles c-parser: provide AARCH64 setup 2022-02-03 16:13:45 +11:00
tools spdx: provide copyright info for mllex/mlyacc 2020-03-16 14:19:15 +08:00
umm_heap cparser+crefine: move h_t_array_valid_array_assertion to cparser session 2023-01-30 18:00:42 +10:30
.gitignore c-parser: provide AARCH64 setup 2022-02-03 16:13:45 +11:00
Absyn-CType.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
Absyn-Expr.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
Absyn-Serial.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
Absyn-StmtDecl.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
Absyn.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
Binaryset.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
CLanguage.thy licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
CProof.thy c-parser+crefine+clib: move is_aligned_c_guard to c-parser session 2023-01-12 11:48:59 +10:30
CTranslation.thy lib+tools: MLUtils -> ML_Utils for consistency 2023-01-20 13:43:39 +11:00
Feedback.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
FunctionalRecordUpdate.ML c-parser: rewrite functional-record-update fN defs 2021-03-05 18:32:43 +11:00
General.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
HPInter.ML isabelle-2021: cparser+tests update 2021-09-30 16:53:17 +10:00
INSTALL.md c-parser: provide AARCH64 setup 2022-02-03 16:13:45 +11:00
IndirectCalls.thy licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
LemmaBucket_C.thy lib+proof+tools: move LemmaBucket_C into CParser 2023-01-25 10:18:11 +11:00
MANIFEST Finish serialisation code for AST. 2016-07-05 17:37:14 +10:00
MString.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
Makefile Makefiles: remove unused report-regression target 2022-06-03 09:36:43 +10:00
MemoryModelExtras-sig.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
MemoryModelExtras.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
ModifiesProofs.thy licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
PackedTypes.thy isabelle-2021 cparser: Word_Lib include 2021-09-30 16:53:17 +10:00
PrettyProgs.thy licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
README.md c-parser: use markdown extension 2020-11-02 17:16:46 +10:00
RELEASES.md c-parser: update release notes 2022-10-31 11:45:05 +11:00
ROOT lib+proof+tools: move LemmaBucket_C into CParser 2023-01-25 10:18:11 +11:00
Region.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
RegionExtras.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
SourceFile.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
SourcePos.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
StaticFun.thy licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
StrictC.grm licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
StrictC.lex licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
StrictCParser.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
Target-generic32.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
TargetNumbers-sig.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
TypHeapLib.thy lib+c-parser: move TypHeapLib into CParser 2023-01-25 10:13:44 +11:00
UMM_Proofs.ML isabelle2021-1: remove extend from TheoryData 2022-03-29 08:38:25 +11:00
UMM_termstypes.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
basics.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
calculate_state.ML isabelle2021-1: remove extend from TheoryData 2022-03-29 08:38:25 +11:00
complit.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
expression_translation.ML isabelle-2021: cparser+tests update 2021-09-30 16:53:17 +10:00
expression_typing.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
globalmakevars licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
heapstatetype.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
hp_termstypes.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
isa_termstypes.ML isabelle-2021: cparser+tests update 2021-09-30 16:53:17 +10:00
isar_install.ML isabelle2022 c-parser: update CParser 2022-11-09 11:45:46 +11:00
mkrelease lib+tools: MLUtils -> ML_Utils for consistency 2023-01-20 13:43:39 +11:00
modifies_proofs.ML isabelle2022 c-parser: update CParser 2022-11-09 11:45:46 +11:00
name_generation.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
openUnsynch.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
program_analysis.ML c-parser: use fresh names for temporaries 2021-03-02 19:39:12 +11:00
shorten_names.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
static-fun.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
stmt_translation.ML isabelle2021-1: remove extend from TheoryData 2022-03-29 08:38:25 +11:00
syntax_transforms.ML c-parser: use fresh names for temporaries 2021-03-02 19:39:12 +11:00
termstypes-sig.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
termstypes.ML isabelle-2021: cparser+tests update 2021-09-30 16:53:17 +10:00
topo_sort.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
use.ML licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00

README.md

The StrictC translation tool

To install, see the file INSTALL in the src/c-parser directory.

To use:

  1. Use the heap CParser that is created by installation
  2. Import the theory CTranslation
  3. Load ('install') C files into your theories with the Isar command install_C_file.

See docs/ctranslation.pdf for more information about the options and C language semantics that this tool provides.

See also the examples in the testfiles directory. For example, breakcontinue.thy is a fairly involved demonstration of doing things the hard way.


The translation tool builds on various open source projects by others.

  1. Norbert Schirmer's Simpl language and associated VCG tool.

    Sources for this are found in the Simpl/ directory. The code is covered by an LGPL licence.

    See https://isa-afp.org/entries/Simpl.shtml

  2. Code from SML/NJ:

    • an implementation of binary sets (Binaryset.ML)
    • the mllex and mlyacc tools (tools/{mllex,mlyacc})
    • command-line option parsing (standalone-parser/GetOpt)

    This code is covered by SML/NJ's BSD-ish licence.

    See http://www.smlnj.org

  3. Code from the mlton compiler:

    • regions during lexing and parsing (Region.ML, SourceFile.ML and SourcePos.ML)

    This code is governed by a BSD licence.

    See http://mlton.org