hlc

High level language for lli
Log | Files | Refs

commit e376773f930763fccc6aa8a5ccdb3419ac9d3e49
Author: thing1 <l.standen@posteo.com>
Date:   Sun,  5 Oct 2025 21:14:08 +0100

init spec

Diffstat:
A.gitignore | 3+++
AMakefile | 7+++++++
Aspec.md | 60++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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