Musique language interpreter
Go to file
Robert Bendun a3d0a942e4 Ensure when adding new operators we add them right
Operators not only are needed to be defined by their implementation in
Interpreter constructor, but also are needed to be included in
precedense resolution.

To prevent partial definition we predefine number of builtin operators
as numeric constant and test against it in all relevant places.
2022-08-18 22:07:13 +02:00
doc New chord notation in cheatsheet 2022-05-29 03:11:26 +02:00
etc Index operator binds more tightly then function call 2022-06-11 17:55:52 +02:00
examples Par accepts arrays of notes 2022-06-23 07:49:38 +02:00
lib Elegant exit (not aborting due to thread issues) 2022-06-23 07:36:28 +02:00
src Ensure when adding new operators we add them right 2022-08-18 22:07:13 +02:00
.gitignore Ignoring new LSP 2022-08-18 22:07:13 +02:00
.gitmodules Minor cleanup 2022-07-30 13:40:59 +02:00
Doxyfile Major documentation of source code improvement 2022-05-29 02:28:51 +02:00
instruments.mq Instruments list 2022-05-30 16:56:57 +02:00
LICENSE License 2022-05-24 12:11:50 +00:00
Makefile Tests now compile again 2022-07-30 13:45:23 +02:00
prelude.mq Added each to prelude 2022-05-25 04:34:37 +02:00
README.md Documentation for programmers 2022-05-29 01:00:13 +02:00

Musique interpreter

Interpreter języka Musique. Możliwy do wykorzystywania jako:

  • biblioteka interpretera języka dołączana do innego projektu (podobnie jak Lua);
  • REPL działający w systemie GNU/Linux + ALSA wykonujący język Musique.

Budowanie interpretera

Jeśli nie posiadasz zależności lib/midi to:

$ git submodule init
$ git submodule update
$ (cd lib/midi; make)

A następnie zbuduj interpreter:

$ make bin/musique

Dostępne komendy

  • make - Buduje interpreter bin/musique (tryb release)
  • make debug - Buduje interpreter bin/debug/musique (tryb debug)
  • make clean - Usuwa reprodukowalne elementy projektu (automatycznie stworzone pliki binarne czy raporty)

Dokumentacja

  • make doc - Tworzy doc/build/html/ zawierający dokumentację projektu

Testowanie

  • make test - Uruchom wszystkie dostępne testy automatyczne
  • make unit-tests - Uruchamia testy jednostkowe interpretera
  • make unit-test-coverage - Uruchamia raport pokrycia kodu przez testy jednostkowe
  • etc/tools/test.py test examples - Uruchamia testy zachowań przykładów
  • etc/tools/test.py record examples - Nagrywa testy zachowań przykładów

Debugowanie

  • etc/tools/log-function-calls.sh - Tworzy listę wywołań funkcji używając GDB

Budowa projektu

.
├── bin            Miejsce produkcji plików wykonywalnych
├── coverage
├── doc            Dokumentacja języka, interpretera
│   └── build      Miejsce produkcji dokumentacji
├── etc/tools      Dodatkowe narzędzia
├── lib            Zewnętrzne zależności projektu
│   ├── expected
│   └── ut
└── src            Główny katalog z kodem źródłowym
    └── tests      Katalog z testami jednostkowymi

Kolorowanie składni

Vim / Neovim

Skopiuj plik etc/editor/musique.vim do folderu syntax wewnątrz twojej konfiguracji Vima (Neovima). Np:

$ cp etc/editor/musique.vim ~/.config/nvim/syntax/

Następnie musisz dodać ustawienie typu pliku na podstawie rozszerzenia wewnątrz twojej konfiguracji:

au BufRead,BufNewFile *.mq set filetype=musique

Visual Studio Code

Skopiuj katalog etc/editor/musique-vscode do folderu <user home>/.vscode/extensions i uruchom ponownie program VSCode.