Commit Graph

251 Commits

Author SHA1 Message Date
PaddiM8
c273e028b3 Return Option from js_eval 2020-12-31 00:16:39 +01:00
PaddiM8
88215dbe98 JavaScript bindings to KalkNum and ScientificNotation 2020-12-31 00:15:16 +01:00
PaddiM8
5daaa129f2 Added ToString trait to CalcError enum 2020-12-30 22:54:32 +01:00
PaddiM8
72cea91394 WebAssembly foundation 2020-12-30 22:50:39 +01:00
PaddiM8
613829320e Created a cargo feature for rug, f64 will be used instead if it's disabled 2020-12-30 16:03:02 +01:00
PaddiM8
005976e1dd Prevent self-referencing variables 2020-12-28 23:54:12 +01:00
PaddiM8
1b2ae2dba1 Improved consonant precision 2020-12-28 23:06:53 +01:00
PaddiM8
8ea11b6c24 v0.3.9 2020-12-28 19:15:25 +01:00
PaddiM8
22d9f50688 Fixed function declarations not being parsed 2020-12-28 19:13:39 +01:00
PaddiM8
2908b735e5 Interpretation timeout 2020-12-28 19:09:21 +01:00
PaddiM8
2f7af7de90 Simple equation solving, mostly using pre-existing logic from the inverter 2020-12-14 19:21:30 +01:00
PaddiM8
a29e7492f9 v0.3.8 2020-12-14 00:07:19 +01:00
PaddiM8
38a65fe144 Added sum function to symbol_table::contains_fn 2020-12-13 23:47:44 +01:00
PaddiM8
0c7e694648 Fixed bug where symbol_table::contains_fn didn't check in the BINARY_FUNCS map 2020-12-13 23:44:33 +01:00
PaddiM8
ec74089faa v0.3.7 2020-12-13 23:17:49 +01:00
PaddiM8
483e82fb03 Allow multiplication with parenthesis without star symbol 2020-12-13 23:16:47 +01:00
PaddiM8
4f02a0f0a3 Added 'Copy' to TokenKind, and added a missing line related to the sum function 2020-12-13 22:09:49 +01:00
PaddiM8
fbf901620f User-configurable precision 2020-12-13 18:12:33 +01:00
PaddiM8
0ce06d96b9 Optimised 'sum' function 2020-12-13 17:45:06 +01:00
PaddiM8
1cbc5004d5 Allow spaces in input number literals 2020-12-13 16:44:45 +01:00
PaddiM8
720a4da283 Fixed constant rounding 2020-12-13 15:53:38 +01:00
PaddiM8
56145c2f45 Store number literals as f64 2020-12-13 15:52:22 +01:00
PaddiM8
4ddb2bf33f Moved some unit logic into kalk_num 2020-12-13 15:31:11 +01:00
PaddiM8
bd86091e89 Trimming zeroes at the start of scientific notation, and scientific notation exponent value fix 2020-12-13 02:25:33 +01:00
PaddiM8
318e8b85ee Fixed tests 2020-12-13 02:11:19 +01:00
PaddiM8
0284475b2c Created KalkNum and moved output formatting from kalk_cli to kalk 2020-12-13 01:27:55 +01:00
PaddiM8
ac6bf052d7 removed un-used rug features 2020-12-11 13:17:33 +01:00
PaddiM8
035ecafe7b replaced phf with lazy_static 2020-12-10 23:40:29 +01:00
PaddiM8
ffe9ab860d updated test_percent() 2020-12-10 15:13:02 +01:00
PaddiM8
fefacbc02c fixed multiplication with percent 2020-12-10 09:27:19 +01:00
PaddiM8
cebe785b22 added percentage unit and modulo 2020-12-09 22:18:00 +01:00
PaddiM8
8e3016e9fe allow letters after underscore in variables, eg. x_a 2020-12-09 10:47:46 +01:00
PaddiM8
ea236f7e54 updated to 0.2.1 2020-12-09 09:40:26 +01:00
PaddiM8
3ece6ee5c2 fixed panic on trailing spaces 2020-12-09 09:36:49 +01:00
PaddiM8
6e40612a46 Made lexer lex '°' as 'deg'. 2020-06-18 18:06:17 +02:00
PaddiM8
2c3f70e3f2 Fixed merge issues, updated version numbers, and updated README with syntax instructions. 2020-06-18 18:03:40 +02:00
PaddiM8
b966658fa7 Merge branch 'units' 2020-06-18 17:42:36 +02:00
PaddiM8
49e4d286b3 Added units to prelude functions. 2020-06-18 17:41:57 +02:00
PaddiM8
2413ad080f Fixed parser documentation and interpreter units tests. 2020-06-18 17:06:21 +02:00
PaddiM8
f3b78e74f2 Created unit convertion expression. Syntax: <expr> to <unit> 2020-06-18 16:58:01 +02:00
PaddiM8
aa0e62af4c Changed nth_sqrt to nth_root. 2020-06-18 16:20:52 +02:00
PaddiM8
1fdfcc29c1 Implemented inversion for some prelude functions. 2020-06-18 16:20:18 +02:00
PaddiM8
a2376c9998 Made the unit be displayed in the result. 2020-06-18 02:02:48 +02:00
PaddiM8
f917b744b5 Added UnsupportedExpression errors. 2020-06-17 21:28:54 +02:00
PaddiM8
643509ce4a Fixed inversion for (function) variables and added unit tests for the inverter. 2020-06-17 17:45:46 +02:00
PaddiM8
c86b4bc2f7 Fixed the broken unit tests in the parser and completed the test_angle_units test in the interpreter. 2020-06-15 21:30:52 +02:00
PaddiM8
83668bbb84 Integrated the angle unit system with then new dynamic unit system. 2020-06-15 19:10:55 +02:00
PaddiM8
d3d2602217 Updated README with new features and updated version numbers. 2020-06-14 22:53:11 +02:00
PaddiM8
4859d78014 Added ans variable. 2020-06-14 22:33:29 +02:00
PaddiM8
80690a5575 Added semicolon support to combine several statements in one line. 2020-06-14 22:03:22 +02:00
PaddiM8
1d19f40e9f Added support for 'minus' expressions in the inverter and added some comments. 2020-06-14 21:54:39 +02:00
PaddiM8
f3c42fb95a Added support for 'minus' expressions in the inverter and added some comments. 2020-06-14 21:35:56 +02:00
PaddiM8
4c34908368 Changed inverter to instead move expressions to the LHS, like done when equations are solved in maths. Also made it multiply into parenthesis. 2020-06-14 19:23:02 +02:00
PaddiM8
6e81ea5ae1 Added some error checking to the inverter. 2020-06-13 22:18:37 +02:00
PaddiM8
7a4fefe1d0 Merge branch 'master' into units 2020-06-13 21:57:27 +02:00
PaddiM8
7b6f27186d Publish. 2020-06-13 21:42:14 +02:00
PaddiM8
05bfabb1d4 Made it possible for the inverter to invert expressions with function calls. 2020-06-13 20:06:21 +02:00
PaddiM8
71df9f5454 Created the foundation of an expression inverter. This is used to create a second *inverted* unit declaration, in order to cover both of the units. 2020-06-13 19:01:33 +02:00
PaddiM8
45adb1b526 Added the unit statement (very basic and experimental). 2020-06-13 16:19:32 +02:00
PaddiM8
ada3fc52f9 Trimmed end matches of dots in order to avoid numbers such as 1.. 2020-06-12 21:30:03 +02:00
PaddiM8
64083eca82 Updated crate versions (thought I did this in the previous commit??). 2020-06-12 21:27:01 +02:00
PaddiM8
039f79697d Merge branch 'master' of https://github.com/PaddiM8/kalk 2020-06-12 21:01:12 +02:00
PaddiM8
6f935c1ea0 Changed kalk crate version. 2020-06-12 21:00:56 +02:00
PaddiM8
bf5d02907f
Updated example code in README. 2020-06-12 21:00:03 +02:00
PaddiM8
29960043b8 Version update test. 2020-06-12 18:16:54 +02:00
PaddiM8
f39e9d6c6c Updated .travis.yml. 2020-06-12 16:10:32 +02:00
PaddiM8
2ccb439dec Created a workspace Cargo.toml to unify the library and binary. 2020-06-12 14:11:42 +02:00
PaddiM8
7a0ede8dda Fixed code in documentation in parser.rs 2020-06-12 14:10:10 +02:00
PaddiM8
11c7e5b287 Added example image and expanded feature list. 2020-06-12 00:34:50 +02:00
PaddiM8
1503336700 Added readme to Cargo.toml. 2020-06-12 00:08:14 +02:00
PaddiM8
88fd8d1bc1 Added separate readme for the library. 2020-06-12 00:06:54 +02:00
PaddiM8
fafc88f2d7 Added separate readme for the library. 2020-06-12 00:06:15 +02:00
PaddiM8
03d0ca23e9 Changed version number to 0.1.1 2020-06-11 23:53:04 +02:00
PaddiM8
aa21581cf0 Changed 'parsers' category to 'parser-implementations' 2020-06-11 23:52:12 +02:00
PaddiM8
f9283be74d Changed Cargo.toml to prepare for publish. 2020-06-11 23:47:03 +02:00
PaddiM8
3fad899daa Extended parser::eval and parser::parse documentation by explaining when None is returned. 2020-06-11 23:45:54 +02:00
PaddiM8
c42fcccabd Added simple documentation for the exposed parts. 2020-06-11 23:09:44 +02:00
PaddiM8
72baaf3e36 Added test_undefined_fn for the interpreter. 2020-06-11 22:14:43 +02:00
PaddiM8
4e2fe9eb3b Added test_fn and test_sum_fn for the interpreter. 2020-06-11 22:10:23 +02:00
PaddiM8
b3e07b710e Renamed symbol_table::contains_func to contains_fn. 2020-06-11 21:47:14 +02:00
PaddiM8
0786398d52 Made the ast module public. 2020-06-10 14:02:33 +02:00
PaddiM8
42a9e7e82a Renamed parser::parse to parser::eval and created a new parser::parse function that does not evalutate the statements. 2020-06-10 13:55:43 +02:00
PaddiM8
b4f129835a Added gamma function. 2020-06-09 20:50:05 +02:00
PaddiM8
c6f60748e2 Made the x_1 notation possible. 2020-06-09 14:59:29 +02:00
PaddiM8
280654130d Fixed lexer not ignoring whitespace properly. 2020-06-09 10:34:39 +02:00
PaddiM8
4c4b4bfede Changed lexer source to a peekable iterator, resulting in (hopefully) proper UTF-8 support. 2020-06-08 21:51:45 +02:00
PaddiM8
1861ce0719 Somewhat fixed UTF-8 support in the lexer. 2020-06-07 19:48:52 +02:00
PaddiM8
598e44ab1c Added position data to tokens. 2020-06-06 20:15:32 +02:00
PaddiM8
2074a5b15b Fixed output not displaying small-ish decimal numbers properly. 2020-06-06 17:20:40 +02:00
PaddiM8
c2e446576a Created CalcError enum and centralised error formatting into once place. 2020-06-06 16:28:48 +02:00
PaddiM8
7aececa9fb Added unit tests for unit, var, undefined var, and var decl for the interpreter. 2020-06-06 15:39:34 +02:00
PaddiM8
60384ca8a8 Added unit tests for literal, binary, and unary for the interpreter. 2020-06-05 21:57:20 +02:00
PaddiM8
5e1753410c Added unary expression unit test for the parser. 2020-06-05 19:03:16 +02:00
PaddiM8
f0889064b2 Changed lexer to allow whitespace between number literal. 2020-06-05 17:18:36 +02:00
PaddiM8
a9c4a45465 Removed test_case from test_pow(). 2020-06-05 16:20:50 +02:00
PaddiM8
3cbf4e5b4a Added pow, var_decl, fn_decl, fn_call unit tests for the parser. 2020-06-05 16:18:29 +02:00
PaddiM8
7125b18853 Cleaned up redundant code and replaced compare_enums() with PartialEq. 2020-06-05 13:47:39 +02:00
PaddiM8
ecf54b8496 Set up foundation for parser unit testing and added test_var() and test_precedence() tests. 2020-06-05 13:36:11 +02:00
PaddiM8
48033a0b13 Added unit tests for lexer. 2020-06-04 21:53:45 +02:00
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