PaddiM8
6c9f0b10f3
Added parenthesis to sum completion.
2020-06-09 10:37:57 +02:00
PaddiM8
8d111d2fe2
Added completions for sum and parenthesis.
2020-06-09 10:34:58 +02:00
PaddiM8
995897fc25
Fixed lexer not ignoring whitespace properly.
2020-06-09 10:34:39 +02:00
PaddiM8
9495ab9f6e
Added completion for ceil and floor.
2020-06-08 21:58:55 +02:00
PaddiM8
165df6d3f3
Changed lexer source to a peekable iterator, resulting in (hopefully) proper UTF-8 support.
2020-06-08 21:51:45 +02:00
PaddiM8
42524eefa3
Somewhat fixed UTF-8 support in the lexer.
2020-06-07 19:48:52 +02:00
PaddiM8
ce65eb79a8
Changed lexer to allow any symbol as identifier as long as it isn't already used for syntax.
2020-06-07 19:08:33 +02:00
PaddiM8
3db7c215d3
Change hint highlight to gray.
2020-06-07 19:02:07 +02:00
PaddiM8
c1facbe6f1
Implemented simple syntax highlighting and symbol-completion.
2020-06-07 18:56:28 +02:00
PaddiM8
f6b7dce791
Added position data to tokens.
2020-06-06 20:15:32 +02:00
PaddiM8
aeed8049fc
Fixed output not displaying small-ish decimal numbers properly.
2020-06-06 17:20:40 +02:00
PaddiM8
d0536d6bd6
Created CalcError enum and centralised error formatting into once place.
2020-06-06 16:28:48 +02:00
PaddiM8
4a02134b22
Added unit tests for unit, var, undefined var, and var decl for the interpreter.
2020-06-06 15:39:34 +02:00
PaddiM8
25dcc81bad
Improved output.
2020-06-06 14:55:30 +02:00
PaddiM8
3fda01e087
Added unit tests for literal, binary, and unary for the interpreter.
2020-06-05 21:57:20 +02:00
PaddiM8
2bacbf5c67
Added unary expression unit test for the parser.
2020-06-05 19:03:16 +02:00
PaddiM8
f1d09ae799
Changed lexer to allow whitespace between number literal.
2020-06-05 17:18:36 +02:00
PaddiM8
1056206d49
Removed trailing zeroes from results.
2020-06-05 17:06:24 +02:00
PaddiM8
e7cbbc45c2
Removed test_case from test_pow().
2020-06-05 16:20:50 +02:00
PaddiM8
dab1006eb7
Added pow, var_decl, fn_decl, fn_call unit tests for the parser.
2020-06-05 16:18:29 +02:00
PaddiM8
98d4a16195
Cleaned up redundant code and replaced compare_enums() with PartialEq.
2020-06-05 13:47:39 +02:00
PaddiM8
4360f3f4ee
Set up foundation for parser unit testing and added test_var() and test_precedence() tests.
2020-06-05 13:36:11 +02:00
PaddiM8
0d33efbf63
Added unit tests for lexer.
2020-06-04 21:53:45 +02:00
PaddiM8
75cb4a9d19
Merge branch 'master' of https://github.com/PaddiM8/kalk
2020-06-04 20:09:50 +02:00
PaddiM8
3a8e939ac0
Removed self.advance()
code duplication in lexer.
2020-06-04 20:09:43 +02:00
PaddiM8
d4cd8a59bf
Create README.md
2020-06-04 19:57:48 +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