/tila

Functional programming language

Primary LanguageCMIT LicenseMIT

tila Build Status Coverage Status Documentation

Automated tests Code coverage status Rendered documentation

Programming language interpreter for Aineopintojen harjoitustyö: Tietorakenteet ja algoritmit.

Progress

  • Tokenizer
  • Base parser
  • Sub parsers
    • Basic infix and prefix stuff
    • For, if etc (macros?)
  • Abstract syntax tree
  • Environment
    • Basic stuff
    • Ability to load multiple files in a single program
  • Built in library

Folder structure

.
├── build                   For building the project
├── cmake
│   └── Modules             Additional modules for CMake
├── cmd                     The command line client to tila
│   ├── include             Includes for the header files for the cmd
│   └── src                 The source files
├── doc                     Manually written documentation (week reports etc)
├── example                 Examples of the tila language
├── lib                     Source code for libtila, basically all of the actual code is here
│   ├── include             Headers and HeaderDoc documentation for the library
│   │   ├── datastructures  Implemented datastructures
│   │   ├── interpreter     The tila interpreter, that deals with nodes
│   │   ├── parser          Parser takes tokens from tokenizer and creates nodes for the interpreter
│   │   ├── tokenizer       Tokenizer tokenizes the source
│   │   └── util            Contains some helpful functions
│   └── src                 The source files, sub directories are the same as in include
│       ├── datastructures
│       ├── interpreter
│       ├── parser
│       ├── tokenizer
│       └── util
└── test                    Folder for all of the tests
    ├── include             Headers for the tests
    └── src                 Actual tests

Dependencies

CMake for building. Check for testing. LCOV for test coverage. HeaderDoc for documentation generation.

Building

cd build
cmake ..
make

The executable is now in build/cmd/tila

Running

cd build/cmd
./tila [filename]

You can find example programs in examples/.

./tila ../../examples/math.tila

Will print the tokens, the abstract syntax tree and the results of the file.

Testing

cd build
cmake ..
make
ctest --output-on-failure .

Rendered documentation

cd build
cmake ..
make docs

The documentation is now in build/docs