lh-l4v/tools/c-parser
Rafal Kolanski 6095e9ecb2 cparser: annotate AST printing for top-level decls
In order to compare ASTs for appearance/disappearance/modification of
declarations, it is easier to have the annotations obvious to any
external tool for ease of parsing.

Annotations take the form:
"##<decl_type>: <name>", e.g. "##Function: ctzl"

Signed-off-by: Rafal Kolanski <rafal.kolanski@proofcraft.systems>
2022-05-10 16:40:42 +10:00
..
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 cparser: annotate AST printing for top-level decls 2022-05-10 16:40:42 +10: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 isabelle2021-1 c-parser: update CParser + tests 2022-03-29 08:38:25 +11:00
.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 isabelle2021-1 c-parser: update CParser + tests 2022-03-29 08:38:25 +11:00
CTranslation.thy isabelle-2021: cparser+tests update 2021-09-30 16:53:17 +10: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
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 c-parser: update to Isabelle2020 2020-10-27 15:52:31 +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 cparser: add release notes for c-parser-1.18 2021-10-31 13:41:58 +11:00
ROOT isabelle-2021: HOL-Word now in HOL-Library 2021-09-30 16:53:17 +10: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
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 isabelle2021-1: remove extend from TheoryData 2022-03-29 08:38:25 +11:00
mkrelease c-parser: provide AARCH64 setup 2022-02-03 16:13:45 +11:00
modifies_proofs.ML isabelle-2021: cparser+tests update 2021-09-30 16:53:17 +10: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