From 2e946ae7217717d58689d87db8ccc0d04500178e Mon Sep 17 00:00:00 2001 From: Ian Piumarta Date: Wed, 22 Mar 2023 18:42:31 +0900 Subject: [PATCH] Add documentation directory. --- doc/README.md | 96 ++++++++++++++++++++++++++++++++++++++++++ doc/ccmeta.drawio.png | Bin 0 -> 13811 bytes 2 files changed, 96 insertions(+) create mode 100644 doc/README.md create mode 100644 doc/ccmeta.drawio.png diff --git a/doc/README.md b/doc/README.md new file mode 100644 index 0000000..f0a7e98 --- /dev/null +++ b/doc/README.md @@ -0,0 +1,96 @@ +# CCMETA + +C compiler with embedded metalanguage. + +##
Table of contents
+1. [Architecture](#ar) +2. [Build the project](#bp) + - [Requirements](#ar) + - [Makefile](#makefile) + - [Build](#makefile_Build) + - [Clean](#makefile_Clean) + - [Test](#makefile_Test) +3. [Usage](#usage) +4. [Help](#help) + - [Peg/Leg](#pegleg) +5. [Authors](#authors) + + +##
Architecture
+![alt text](doc/ccmeta.drawio.png) +### [Go to the table of contents](#toc) + +##
Build the project
+###
Requirements
+ +Please install [peg/leg](https://www.piumarta.com/software/peg/) manually or with a package manager, for example with Homebrew: +```bash +$ brew install peg +``` + +Please install [the Boehm-Demers-Weiser conservative garbage collector](https://www.hboehm.info/gc/) manually or with a package manager, for example with Homebrew: +```bash +$ brew install bdw-gc +``` + +###
Makefile
+>Compatible with the homebrew installed on the apple silicon ship + +####
Build
+```bash +$ make +``` + +####
Clean
+```bash +$ make clean +``` + +####
Test
+```bash +$ make test +``` +### [Go to the table of contents](#toc) + +##
Usage
+### How it works +You can pass your program: +* via an input file +```bash +$ ./ccmeta < file +``` +* via a file +```bash +$ ./ccmeta file +``` +### **Check each test file to get an idea of how parsimony works** +### [Go to the table of contents](#toc) + +##
Help
+ +###
peg/leg
+ +``` shell +$ man peg +``` +### [Go to the table of contents](#toc) + +##
Authors
+#### Ian Piumarta (2016-) +- infrastructure +- parsing framework +- C grammar, C AST +- object system design and implementation +- metalanguage design and implementation + +#### Mahe Tardy (2020) +- object system implementation +- metalanguage implementation + +#### Nathan Razafimanantsoa, Kumar Mahadayya (2021) +- C AST + +#### Theo Souchon (2022-2023) +- metalanguage features, development, tests, examples +- grammar, object system changes for metalanguage +- source and repository reorganisation \ No newline at end of file diff --git a/doc/ccmeta.drawio.png b/doc/ccmeta.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..fa535afaca7f8c3edfda7cef461bbcc1ac287984 GIT binary patch literal 13811 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 z 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