commit e376773f930763fccc6aa8a5ccdb3419ac9d3e49
Author: thing1 <l.standen@posteo.com>
Date: Sun, 5 Oct 2025 21:14:08 +0100
init spec
Diffstat:
3 files changed, 70 insertions(+), 0 deletions(-)
diff --git a/.gitignore b/.gitignore
@@ -0,0 +1,3 @@
+*.o
+*.html
+hlc
diff --git a/Makefile b/Makefile
@@ -0,0 +1,7 @@
+all: spec
+
+spec: spec.md
+ smu spec.md > spec.html
+
+clean:
+ rm -rf *.html *.o hlc
diff --git a/spec.md b/spec.md
@@ -0,0 +1,60 @@
+HLC - the High Level Compiler
+=============================
+
+HLC is a programming is a language that compiles down to LLI (Low Level Interpreter)
+
+General info
+------------
+The language will be C like in nature, it will have
+- pointers
+- ...
+
+Types
+-----
+The language will have 3 built in types:
+- `byte`
+- `short`
+- `long`
+
+Syntax
+------
+The syntax for the language can be defined in the following BNF notation
+
+ prog ::= decs
+
+ decs ::= dec
+ ||= dec decs
+
+ dec ::= type NAME = value ';'
+
+ type ::= "byte"
+ ||= "short"
+ ||= "long"
+ ||= type '*'
+
+ value ::= "func(" args ')' '{' exprs '}'
+ ||= expr
+
+ args ::= arg
+ ||= arg args
+
+ arg ::= type NAME
+
+ exprs ::= expr ';'
+ ||= expr ';' exprs
+
+ expr ::= NUM
+ ||= '"' STRING '"'
+ ||= dec
+ ||= expr '+' expr
+ ||= expr '-' expr
+ ||= expr '*' expr
+ ||= expr '/' expr
+ ||= expr '==' expr
+ ||= expr '!=' expr
+ ||= expr '>' expr
+ ||= expr '<' expr
+ ||= expr '>=' expr
+ ||= expr '<=' expr
+ ||= '*' expr
+ ||= '&' expr