# Sil A compiler for the simple imperative language sil. This compiler is written in [Clean][clean] and compiles to [ABC-assembly][abc], which can be used to generate actual machine code using Clean's code generator or can be interpreted with the [ABCMachine][abc-github] project. ## Grammar ``` ::= -list ::= '(' -clist ')' '{' '}' ::= -list -list ::= -clist ';' ::= [':=' ] ::= [ ':='] ';' | 'return' [] ';' | 'if' '(' ')' '{' '}' ['else' 'if' '(' ')' '{' '}']-list ['else' '{' '}'] | 'while' '(' ')' '{' '}' | '|~' ::= | | '(' -clist ')' | | | '(' -clist ')' | '(' ')' | '.' ::= '~' | '!' ::= '+' | '-' | '*' | '/' | '%' | '==' | '||' | '&&' ::= 'Bool' | 'Int' | 'Void' ::= | ::= 'True' | 'False' ::= -list ``` Comments (single-line `//`, multi-line `/* ... */`) are not included in the grammar above. ## Dependencies You need a working Clean installation to build the compiler and at least `clm` and the code generator to use it. ## Vim highlighting In the `vim` directory. ## Author & License Copyright © 2017 [Camil Staps][cs]. Licensed under MIT, see the `LICENSE` file. [abc]: https://en.wikipedia.org/wiki/Clean_%28programming_language%29#The_ABC-Machine [abc-github]: https://github.com/camilstaps/ABCMachine [clean]: http://clean.cs.ru.nl [cs]: https://camilstaps.nl