hlc

High level language for lli
Log | Files | Refs

spec.md (1332B)


      1 HLC - the High Level Compiler
      2 =============================
      3 
      4 HLC is a programming is a language that compiles down to LLI (Low Level Interpreter)
      5 
      6 General info
      7 ------------
      8 The language will be C like in nature, it will have
      9 - pointers
     10 - ...
     11 
     12 Types
     13 -----
     14 The language will have 3 built in types:
     15 - `byte`
     16 - `short`
     17 - `long`
     18 
     19 Syntax
     20 ------
     21 The syntax for the language can be defined in the following BNF notation
     22 
     23     prog    ::= decs
     24 
     25     decs    ::= dec
     26             ||= dec decs
     27 
     28     dec     ::= type NAME '=' value ';'
     29 
     30     type    ::= "byte"
     31             ||= "short"
     32             ||= "long"
     33             ||= type '*'
     34 
     35     value   ::= "func" '(' args ')' '{' exprs '}'
     36             ||= expr
     37 
     38     args    ::= arg
     39             ||= arg args
     40 
     41     arg     ::= type NAME
     42 
     43     exprs   ::= expr ';'
     44             ||= expr ';' exprs 
     45 
     46     expr    ::= NUM
     47             ||= '"' STRING '"'
     48             ||= var
     49             ||= dec
     50             ||= expr '+' expr
     51             ||= expr '-' expr 
     52             ||= expr '*' expr 
     53             ||= expr '/' expr 
     54             ||= expr '==' expr 
     55             ||= expr '!=' expr 
     56             ||= expr '>' expr 
     57             ||= expr '<' expr 
     58             ||= expr '>=' expr 
     59             ||= expr '<=' expr 
     60             ||= '*' expr
     61             ||= '&' expr
     62             
     63     var     ::= NAME
     64             || '*' var