Commit Graph

27 Commits

Author SHA1 Message Date
PaddiM8
3a8e939ac0 Removed self.advance() code duplication in lexer. 2020-06-04 20:09:43 +02:00
PaddiM8
cbc0b340a1 Renamed to 'kalk'. 2020-06-04 19:43:43 +02:00
PaddiM8
bccbbee2c4 Created set_angle_unit() builder function for the parser context. 2020-06-04 18:56:49 +02:00
PaddiM8
1e5159f84f Separated some functionality in main.rs into output.rs and repl.rs. 2020-06-04 18:55:08 +02:00
PaddiM8
36ae7a0b90 Split it up into two parts: library and cli binary 2020-06-04 18:19:48 +02:00
PaddiM8
e30fdf9cc1 Fixed angle unit conversion. 2020-06-04 14:50:22 +02:00
PaddiM8
93321c3dac Replaced f64 with rug::Float. 2020-06-04 14:46:45 +02:00
PaddiM8
0d2d6df85b Added special function 'sum'. 2020-05-30 21:05:06 +02:00
PaddiM8
456b61bf08 Implemented factorial. 2020-05-30 20:28:13 +02:00
PaddiM8
dc59d7cac2 Added hyp function. 2020-05-30 18:01:45 +02:00
PaddiM8
0dac28bb42 Made it possible for the parser to parse combined variables, eg. xy, so that the user does not have to write the multiplication sign. 2020-05-30 17:56:16 +02:00
PaddiM8
01aa30c2c1 Made some of the error messages in the interpreter more specific. 2020-05-30 16:59:58 +02:00
PaddiM8
2b90620d83 Added some colours to the terminal output. 2020-05-30 15:59:25 +02:00
PaddiM8
036fadb041 Moved AST node enums and functions into their own file. 2020-05-30 15:27:58 +02:00
PaddiM8
41a41629a5 Implemented somewhat proper error handling for the interpreter. This involved removing the visitor. 2020-05-30 15:16:13 +02:00
PaddiM8
1a56ddac45 Separated match arms in the interpreter into their own functions. 2020-05-29 23:54:20 +02:00
PaddiM8
e29299bdfe Removed the warning suppressor, since it is not needed anymore. 2020-05-29 23:23:50 +02:00
PaddiM8
1c65fbed08 Refactored the parser
Added error checking to the parser and changed it from being a struct to
independent functions with a context struct instead.
2020-05-29 23:21:59 +02:00
PaddiM8
aacb787bce Added binary log function. 2020-05-29 22:04:40 +02:00
PaddiM8
34364dd40e Made parenthesis optional for unary functions
This only applies when the argument is a literal. To do this
efficiently, I changed the `prelude` module. The module now has
compile-time generated hashmaps of functions.
2020-05-29 21:35:59 +02:00
PaddiM8
2cdade5d05 Removed the struct MathParser. The regular Parser struct does does its job now. 2020-05-29 19:30:43 +02:00
PaddiM8
dfd8e4ff64 Improved REPL by using the rustyline crate. 2020-05-29 15:56:01 +02:00
PaddiM8
7c42368501 Added binary functions to the prelude. 2020-05-29 15:04:50 +02:00
PaddiM8
32cd3a4e9e Completed the parsing of multi-parameter functions. It now works! 2020-05-29 14:49:52 +02:00
PaddiM8
6d67797565 Prepared for supporting multiple function arguments. The types now support several arguments, and the only thing left is to parse this. 2020-05-29 00:27:08 +02:00
PaddiM8
94722ed27e Fixed function declarations not parsing properly. 2020-05-28 23:56:09 +02:00
PaddiM8
70d2913cb9 Initial commit 2020-05-28 23:46:35 +02:00