6611512b1f
Working arrays, flat function
2022-05-24 19:09:37 +02:00
64417bf187
changed shape of Value constructors; added Array type
2022-05-24 17:39:07 +02:00
d549d23f0a
Overloadable index operation
2022-05-24 16:38:18 +02:00
1c6db5e7b7
Removed say
from default builtins, moved to src/main.cc
...
The reason is that `say` requires text output to work, which is platform
specific. Interpreter should only register platform independent
functions like operations on arrays or math library
2022-05-24 03:48:10 +02:00
2c19db7354
Playing MIDI!
2022-05-24 03:35:15 +02:00
ba463139d6
Note duration calculation in current BPM context
2022-05-24 02:58:15 +02:00
2e2c34ce21
Note parsing & printing
2022-05-24 01:58:17 +02:00
142680ab77
Working note resolution
2022-05-24 01:40:16 +02:00
7d2ba379f7
Infrastructure for note parsing
2022-05-24 00:48:15 +02:00
f28cb10669
Block indexing and len builtin
2022-05-22 16:43:36 +02:00
bde30f5d99
Separated Musique functions and C++ intrinsics; blocks as delayed computations
2022-05-22 05:29:46 +02:00
5b3cfca2a8
More testing & keywords
2022-05-22 04:31:31 +02:00
6bc2a1cd38
Context aware clojures
...
Moved from dynamic scoping to static scoping.
2022-05-22 03:44:15 +02:00
b9d87e1456
New environment implementation
...
It's a failure of locating precise source of the bug that would cause `var x =
[i|i] 0` to segfault. New implementation DOES NOT have this bug.
2022-05-22 03:44:10 +02:00
d542bbe696
Small refactoring
2022-05-21 23:12:50 +02:00
881b90506b
Lambdas!
2022-05-17 16:10:56 +02:00
8025e9bd0f
Separated blocks from lambdas
2022-05-17 14:09:40 +02:00
5d51d1672f
Scoped variables, single namespace variables and functions
2022-05-17 02:35:51 +02:00
0f9c46dffb
Parsing variable declarations
2022-05-16 16:58:31 +02:00
0b9e7e8f4a
Better operator resolution mechanism
2022-05-16 15:51:38 +02:00
ccd2166231
Interpreter started!
2022-05-16 02:18:53 +02:00
14ea494686
Number parsing
2022-05-16 00:06:27 +02:00
2385e0e28c
Ported Number class from pi/demo-2022-03-09
2022-05-15 23:03:09 +02:00
926a68cb84
Block parameters accepts separators; block testing
2022-05-15 22:22:26 +02:00
5bfec0e77a
Block expressions
2022-05-10 16:49:36 +02:00
c5260df41c
Expression sequencing
2022-05-10 16:03:30 +02:00
555a35ecc0
Function calls
2022-05-10 15:25:17 +02:00
a25719c987
Paren some expressions mate
2022-05-10 14:20:23 +02:00
f17f3dc49f
Binary operator's parsing
2022-05-09 19:42:02 +02:00
9fd70386c5
Doxygen & Sphinx documentation tooling
...
This is far from real documentation both in structure and contents -
it's only a start, from which we can expand.
2022-05-08 18:02:23 +02:00
4a5c53240c
Result cannot be discarded from now
2022-05-08 15:57:31 +02:00
35a8345bc5
Better main, refactoring of error system and Result type
2022-05-08 00:03:22 +02:00
31262e74a0
Parser started: basic literal parsing
...
Mostly this commit implements structure to implement parsing, not actual
parsing itself
2022-05-07 20:52:09 +02:00
108b7f1fee
Moved implementation from header
2022-05-07 18:39:29 +02:00
df1f90d827
Added expression separator tokenization
...
Closes #5
2022-05-07 18:20:22 +02:00
0eeb21c885
Comments
2022-05-02 21:23:01 +02:00
22eb0684c2
Solved almost all problems with lexing
...
The remaining one is better unicode support
2022-05-02 20:06:40 +02:00
240939c3d6
Operator lexing
2022-05-02 19:42:57 +02:00
62c2faa33a
Parsing symbols
2022-05-02 19:24:29 +02:00
d6edc2e6e4
Chord literals support
2022-05-02 19:00:11 +02:00
74f4393d6a
better error reporting
2022-05-02 15:13:12 +02:00
43223e685e
unicode support & location in errors
2022-05-02 14:50:04 +02:00
8d0507e341
Token location tracking
2022-04-27 14:58:02 +02:00
fd4db02e8d
Lexer skips whitespace
2022-04-27 14:37:21 +02:00
e833cd6523
Lexer: number literals, one rune tokens
2022-04-27 13:48:50 +02:00
bf1bec4b44
Started unit testing
2022-04-24 16:10:29 +02:00
06f9b35c6c
Let's go!
2022-04-24 15:27:09 +02:00