# Elna programming language Elna is a simple, imperative, low-level programming language. It is intendet to accompany other languages in the areas, where a high-level language doesn't fit well. It is also supposed to be an intermediate representation for a such high-level hypothetical programming language. ## File extension .elna ## Current implementation This repository contains a GCC frontend for Elna. After finishing the frontend I'm planning to rewrite the compiler in Elna itself with its own backend and a hand-written parser. So GCC gives a way to have a simple bootstrap compiler and a possbility to compile Elna programs for different platforms. ## Grammar Flex and bison grammar specifications, `lexer.ll` and `parser.yy`, can be found in the `boot/` directory. ## Build The frontend requires GCC 14.2.0 (not tested with other versions). Download the GCC source. Copy the contents of this repository into `gcc/elna` inside GCC. Finally build GCC enabling the frontend with `--enable-languages=c,c++,elna`. After the installation the compiler can be invoked with `$prefix/bin/gelna`. There is also a `Rakefile` that downloads, builds and installs GCC into the `./build/` subdirectory. The `Rakefile` assumes that ruby and rake, as well as all GCC dependencies are already available in the system. It works under Linux and Mac OS. In the latter case GCC is patched with the patches used by Homebrew (official GCC doesn't support Apple silicon targets). Invoke with ```sh rake boot ``` See `rake -T` for more tasks. The GCC source is under `build/tools`. The installation path is `build/host/install`.