summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authordibyendumajumdar <mobile@majumdar.org.uk>2023-08-25 23:16:07 +0100
committerdibyendumajumdar <mobile@majumdar.org.uk>2023-08-25 23:16:07 +0100
commit9a2ab9bb803aa4da2a6007cc2e945d6bc1fe0b39 (patch)
tree05dcb2c2b972538dba2da0429ba9705e09dc8e96 /README.md
parentb6098a9b9166da962676e33de31e93ace260d686 (diff)
downloadSimple-9a2ab9bb803aa4da2a6007cc2e945d6bc1fe0b39.tar.gz
Simple-9a2ab9bb803aa4da2a6007cc2e945d6bc1fe0b39.zip
Reorganized the project as multi-maven module
Updated README Added language module with grammar Split the code into common and chapter01 modules. Removed a number of utility classes that were imported from AA. Added github workflow file.
Diffstat (limited to 'README.md')
-rw-r--r--README.md35
1 files changed, 32 insertions, 3 deletions
diff --git a/README.md b/README.md
index ba068fb9..f764099c 100644
--- a/README.md
+++ b/README.md
@@ -2,9 +2,38 @@
A Simple showcase for the Sea-of-Nodes compiler IR
This repo is intended to demonstrate the Sea-of-Nodes compiler IR.
-The Sea-of-Nodes is the core IR inside of HotSpot's C2 compiler and Google's V8 compiler and Sun/Oracle's Graal compiler.
+
+The Sea-of-Nodes is the core IR inside of HotSpot's C2 compiler
+and Google's V8 compiler and Sun/Oracle's Graal compiler.
+
Since we are show casing the SoN IR, the *language* being implemented is less important.
We're using a very simple language similar to C or Java, but with far fewer features.
-The Sea-of-Nodes is used for machine code generation in these industrial strength systems - but for this demonstration the backend is both difficult and less important.
-This repo also is not intended to be a complete language in any sense, and so the backend will probably start with levering C or Java.
+The Sea-of-Nodes is used for machine code generation in these industrial
+strength systems - but for this demonstration the backend is both difficult
+and less important.
+
+This repo also is not intended to be a complete language in any sense,
+and so the backend will probably start with levering C or Java.
+
+## Chapters
+
+The following is a rough plan, subject to change.
+
+The Common chapter defines code that will be reused throughout.
+
+The remaining chapters will each be self-sufficient and complete; in the sense that each chapter will fully implement
+a subset of the simple language. Each chapter will also include a detailed commentary on relevant aspects of the
+Sea Of Nodes intermediate representation.
+
+The simple language will be a small subset of C.
+* [Common](common/README.md): Common utilities including a lexer.
+* [Language](language/README.md): definition.
+* [Chapter 1](chapter01/README.md): Simple control flow statements, `if` and `while`. Variables of `int` type. Simple
+ arithmetic such as addition, subtraction, multiplication, division. Non-zero values will be truthy.
+* Chapter 2: Function calls.
+* Chapter 3: Comparison operators.
+* Chapter 4: Boolean operators `&&`, `||` and `!`.
+* Chapter 5: `float` and one dimensional static length array type.
+* Chapter 6: Visualize Sea of Nodes IR.
+* Chapter 7: Optimizations - tbc \ No newline at end of file