Musique language interpreter
Go to file
Robert Bendun 831de5abe5 Builtin operator handlers definiton now in separate file
Interpreter constructor and file in general is very unreadable
and busy now. To limit noise separate builtin operators from
src/interpreter.cc into their own file src/builtin_operators.cc

This also allows to see which functions are used as implementation
detail of which operations.
2022-08-18 22:21:04 +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 Builtin operator handlers definiton now in separate file 2022-08-18 22:21:04 +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 Builtin operator handlers definiton now in separate file 2022-08-18 22:21:04 +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.