Commit Graph

656 Commits

Author SHA1 Message Date
Stephen Chung
278b840e13 Fix unchecked build. 2021-08-04 18:57:52 +08:00
Stephen Chung
4807fdf1cf Loops cannot be pure. 2021-08-04 17:37:56 +08:00
Stephen Chung
1d82a11f0b Change AST nodes to use bitflags for options. 2021-08-03 22:19:25 +08:00
Stephen Chung
8ea6424d50 Rename syntax to custom_syntax. 2021-08-02 10:16:28 +08:00
Stephen Chung
0944261b88 Merge Stmt::Let and Stmt::Const into Stmt::Var. 2021-08-01 11:59:53 +08:00
Stephen Chung
b8485b1909 Fix bug in indexing. 2021-07-24 12:27:33 +08:00
Stephen Chung
694ac5b5bd General code fixups. 2021-07-04 16:40:15 +08:00
Stephen Chung
b4da054bab Catch more parse errors. 2021-07-04 00:15:27 +08:00
Stephen Chung
3e0fd33db4 Fix optimizer test. 2021-07-01 12:33:16 +08:00
Stephen Chung
8c802dcd58 Fix optimizer bug. 2021-07-01 12:27:29 +08:00
Stephen Chung
fc349f67f8 Make more functions const. 2021-06-29 23:17:31 +08:00
Stephen Chung
bd35999b75 Remove unnecessary Box::new(). 2021-06-29 21:58:05 +08:00
Stephen Chung
03cb398edf Better implementation for Expression::get_literal_value. 2021-06-16 12:24:36 +08:00
Stephen Chung
68ea8c27fd Fix unchecked.
Do not duplicate data size checking.
2021-06-12 10:26:50 +08:00
Stephen Chung
79d9977cd5 Change take_string and take_immutable_string to as_XXX. 2021-06-10 10:45:44 +08:00
Stephen Chung
a5031969ca New custom syntax expression types. 2021-06-10 10:16:39 +08:00
Stephen Chung
65b7135324 Fix tests. 2021-06-07 11:54:10 +08:00
Stephen Chung
1e66f1963a Add counter variable to for statement. 2021-06-07 11:01:16 +08:00
Stephen Chung
989cb702c0 Use chars() to iterate strings. 2021-06-07 09:47:49 +08:00
Stephen Chung
a530fbf4ff Remove unnecessary raw stirngs. 2021-06-05 15:26:43 +08:00
Stephen Chung
71684f5e2a Implement bit-fields. 2021-06-02 14:29:18 +08:00
Stephen Chung
cc3e2d79a5 Replace unwrap with expect. 2021-05-22 19:14:24 +08:00
Stephen Chung
2ade56fd94 Fix no_index build. 2021-05-18 21:38:09 +08:00
Stephen Chung
dc9b4d7f4d Indexer as fallback to property. 2021-05-18 20:12:30 +08:00
Stephen Chung
941e09d29d Guard against setters mutating constants, and allow pure setters. 2021-05-15 11:41:42 +08:00
Stephen Chung
202285f9ab Disallow pure setters. 2021-05-13 10:34:24 +08:00
Stephen Chung
97c8194d17 No need to specify number of variables added/removed for custom syntax. 2021-05-11 10:58:28 +08:00
Stephen Chung
aad842fe50 Remove Engine::enable_doc_comments. 2021-05-03 13:07:51 +08:00
Stephen Chung
ed18b3f32a Fix unchecked test. 2021-04-25 15:27:43 +08:00
Stephen Chung
41d3709db1 Fix decimal build. 2021-04-24 15:53:02 +08:00
Stephen Chung
fc782c5563 Refine posistion display. 2021-04-23 14:24:53 +08:00
Stephen Chung
a54fbb32ff Add no_position feature. 2021-04-22 23:02:25 +08:00
Stephen Chung
fe37edd123 Add Stmt::FnCall. 2021-04-21 18:16:24 +08:00
Stephen Chung
0f66c67f82 Do not unnecessarily use raw strings. 2021-04-20 12:01:35 +08:00
Stephen Chung
46b22ddd96 Fix tests. 2021-04-19 18:08:29 +08:00
Stephen Chung
ea866cead5 More array tests. 2021-04-19 17:02:17 +08:00
Stephen Chung
1be7e60be2 Automatic global module. 2021-04-17 17:25:35 +08:00
Stephen Chung
208e5fdbf4 New switch errors. 2021-04-16 13:28:36 +08:00
Stephen Chung
980a13ca42 Add switch case conditions. 2021-04-16 12:04:33 +08:00
Stephen Chung
40fda5139d Support negative index counting from end. 2021-04-10 15:00:03 +08:00
Stephen Chung
4aaf957d73 Gate doc-comment tokenizing. 2021-04-09 23:13:33 +08:00
Stephen Chung
0f2e7e3825 Fix builds and tests. 2021-04-06 23:28:22 +08:00
Stephen Chung
f17a826f99 Refine debug print-out. 2021-04-06 23:18:41 +08:00
Stephen Chung
7ec49a9510 Fix f32_feature with serde. 2021-04-06 23:18:28 +08:00
Stephen Chung
a3ee0f4245 Fix no_index build. 2021-04-05 18:32:20 +08:00
Stephen Chung
00784d39ad PropertyExpected for map literal with interpolated key. 2021-04-05 14:51:26 +08:00
Stephen Chung
e6ea006ac6 Fix builds. 2021-04-05 00:05:56 +08:00
Stephen Chung
0807c474a1 Revise using string interpolation. 2021-04-04 23:22:45 +08:00
Stephen Chung
aacb7f0b24 Ensure no interpolation for normal strings. 2021-04-04 15:37:59 +08:00
Stephen Chung
20aaf1826a Fix builds. 2021-04-04 15:06:13 +08:00
Stephen Chung
e6c878edf3 Implement string interpolation. 2021-04-04 13:13:07 +08:00
Stephen Chung
ab0ea87f9c Allow sync in test. 2021-04-03 12:10:08 +08:00
Stephen Chung
b1452f4c35 Fix no_object build. 2021-04-03 12:00:22 +08:00
Stephen Chung
f7ad1cec39 Fix builds. 2021-04-03 11:49:16 +08:00
Stephen Chung
b089d5b8f4 Fix bug in property setter op-assignment. 2021-04-03 11:12:35 +08:00
Stephen Chung
a738f750f9 Implement string functions with to_string/to_debug. 2021-04-02 19:26:55 +08:00
Stephen Chung
b14d18934a Add Dynamic::clone_cast. 2021-03-30 18:57:16 +08:00
Stephen Chung
e36e490a30 Support back-tick at EOL for literal strings. 2021-03-30 13:59:27 +08:00
Stephen Chung
d2ded7733a Add support for line continuation and multi-line string literals. 2021-03-30 00:21:09 +08:00
Stephen Chung
7bdc2e3d20 Extract constant arguments from function calls. 2021-03-28 19:04:25 +08:00
Stephen Chung
ea970631ff Fix test formatting. 2021-03-27 18:08:34 +08:00
Stephen Chung
6d1700728a Intern module registration strings. 2021-03-24 09:56:25 +08:00
Stephen Chung
1200ffcd2b Add test with &str parameter. 2021-03-17 22:32:22 +08:00
Stephen Chung
80c7e9310e Fix unchecked build. 2021-03-17 15:26:37 +08:00
Stephen Chung
4581943435 Remove public_only parameters. 2021-03-17 09:58:08 +08:00
Stephen Chung
082ecaa739 Fix feature builds. 2021-03-15 23:03:26 +08:00
Stephen Chung
12e3a5b050 Add test of functions with context. 2021-03-15 21:30:45 +08:00
Stephen Chung
e9f280f917 Deprecate Module::set_fn_XXX API. 2021-03-15 12:39:06 +08:00
Stephen Chung
d0922adb5b Deprecate RegisterFn and RegisterResultFn. 2021-03-15 11:36:30 +08:00
Stephen Chung
4e3fdf6dab Revamp statement block optimization. 2021-03-13 23:43:05 +08:00
Stephen Chung
cbad703b00 Flatten data structures and more aggressive inlining. 2021-03-10 13:32:09 +08:00
Stephen Chung
352408fd36 Flatten statement blocks. 2021-03-10 12:27:10 +08:00
Stephen Chung
b11b8d6d39 Reduce redirections in Stmt. 2021-03-09 23:30:48 +08:00
Stephen Chung
975bb3d6bf Map in operator to contains function call. 2021-03-09 13:44:54 +08:00
Stephen Chung
57140cbeeb Fix internals build. 2021-03-08 15:55:26 +08:00
Stephen Chung
62928f8613 Revise function hashing. 2021-03-08 15:30:32 +08:00
Stephen Chung
4da5af8aae Do not flatten arguments passed by value. 2021-03-06 21:25:49 +08:00
Stephen Chung
e14bef4b10 Trap &mut String parameters. 2021-03-06 14:41:35 +08:00
Stephen Chung
fe633ea7d3 Fix bug when passing shared string variable to &str parameter. 2021-03-06 10:44:55 +08:00
Stephen Chung
f92e6f3983 Fix metadata build. 2021-03-05 23:56:00 +08:00
Stephen Chung
426f841aa2 Fix serde build. 2021-03-05 23:41:20 +08:00
Stephen Chung
a251219730 Remove public Dynamic::as_str. 2021-03-05 23:00:27 +08:00
Stephen Chung
65ef32af19 Calculate whether contains global functions during indexing. 2021-03-05 20:07:35 +08:00
Stephen Chung
4c5ea8decc Fix switch of non-hashable value. 2021-03-05 10:33:48 +08:00
Stephen Chung
01664ef7ee Fix range overflow panics. 2021-03-04 23:47:52 +08:00
Stephen Chung
ed568a9395 Make RhaiResult internal. 2021-03-03 22:49:29 +08:00
Stephen Chung
dfc1ea692f Implement built-in operators with macros. 2021-03-03 21:46:48 +08:00
Stephen Chung
2c8b15c740 Private global functions are still exposed. 2021-03-03 11:40:27 +08:00
Stephen Chung
e3e53bd399 Introduce RhaiResult. 2021-03-02 15:02:28 +08:00
Stephen Chung
67d277aa21 Disallow overriding keywords. 2021-03-01 22:44:56 +08:00
Stephen Chung
fc10df7d63 Keyword can no longer be overloaded. 2021-03-01 17:17:13 +08:00
Stephen Chung
061fce1f02 No more pub_only. 2021-03-01 15:39:49 +08:00
Stephen Chung
6aa0be546f Replace String::from("...") with "...".into(). 2021-02-26 11:21:05 +08:00
Stephen Chung
3f4dba9dbc Build in operators between string and char. 2021-02-25 13:29:49 +08:00
Stephen Chung
49e5382ab0 Do not return default for comparisons between same types. 2021-02-25 10:59:11 +08:00
Stephen Chung
4ac05aee8b Disallow implicit comparisons between different numeric types. 2021-02-24 15:45:29 +08:00
Stephen Chung
93d970235e Fix no_object. 2021-02-23 19:31:43 +08:00
Stephen Chung
36420f0b99 Implement print/debug functions via Dynamic parameters. 2021-02-23 19:08:05 +08:00
Stephen Chung
9a9adbefcc Wrap eval errors in ErrorInFunctionCall. 2021-02-18 14:33:12 +08:00
Stephen Chung
3650b04c38 Add Decimal number type. 2021-02-13 20:57:56 +08:00
Stephen Chung
8ffb6c03b5 Add scientific notation to floats. 2021-02-11 19:20:30 +08:00
Stephen Chung
61638d6566 Use ** for power/exponentiation. 2021-02-10 12:41:27 +08:00
Stephen Chung
8c26b49a39 Change trig functions to take/return radians. 2021-02-10 12:10:50 +08:00
Stephen Chung
a76bed2f46 Use eval_statements_block when at global. 2021-02-07 17:06:33 +08:00
Stephen Chung
903b6d6795 Rename set_doc_comments to enable_doc_comments. 2021-01-28 16:59:19 +08:00
Stephen Chung
f76daadcba Refine FuncArgs trait. 2021-01-28 15:29:55 +08:00
Stephen Chung
e902c74073 Add threading example. 2021-01-25 11:31:54 +08:00
Stephen Chung
ab317bec4e Add test for NativeCallContext. 2021-01-24 21:33:05 +08:00
Stephen Chung
c245fe88fd Allow stacking ! operators. 2021-01-24 21:21:15 +08:00
Stephen Chung
3b42cc5bb2 Fix bug where plugin module parameters are consumed. 2021-01-23 09:37:27 +08:00
Stephen Chung
8aae3ac46c Add function name to NativeCallContext. 2021-01-21 21:49:25 +08:00
Stephen Chung
ec272cf9b9 Add Serialize/Deserialize for Dynamic and ImmutableString. 2021-01-18 10:30:58 +08:00
Stephen Chung
fe65bf6137 Fix bug in optimizer. 2021-01-12 23:52:50 +08:00
Stephen Chung
f8b36a470a Fix test. 2021-01-09 16:57:21 +08:00
Stephen Chung
ad250fc973 Recursive self-contained AST. 2021-01-09 16:52:22 +08:00
Stephen Chung
637f47d259 Split AST::set_source into set_source/clear_source. 2021-01-09 15:20:07 +08:00
Stephen Chung
0f1f6c4ad3 Add Engine::compile_to_self_contained. 2021-01-09 00:24:55 +08:00
Stephen Chung
96b1e7777b Update URL links. 2021-01-07 17:30:06 +08:00
Stephen Chung
e2a47b2a65 Disallow duplicated function definitions. 2021-01-03 20:54:08 +08:00
Stephen Chung
ba7f8c6391 Propagate source info. 2020-12-30 21:12:51 +08:00
Stephen Chung
13f5cec291 Fix call stack limits. 2020-12-29 12:29:45 +08:00
Stephen Chung
eca8212f38 More code refinements. 2020-12-29 10:41:20 +08:00
Stephen Chung
5c813ca7c0 Code cleanup. 2020-12-28 09:49:54 +08:00
Stephen Chung
6b8d78d64c Streamline parsing. 2020-12-27 16:50:48 +08:00
Stephen Chung
48af8719e7 Fix closure property access. 2020-12-27 11:50:24 +08:00
Stephen Chung
66d3af256e Enhance custom operators. 2020-12-26 23:21:09 +08:00
Stephen Chung
dc4e52e795 Code enhancements. 2020-12-26 13:05:57 +08:00
Stephen Chung
f55a56c6bc Engine::register_global_module and Engine::register_static_module must be passed shared Module. 2020-12-23 10:08:43 +08:00
Stephen Chung
15fb03218c Rename packages to global modules. 2020-12-22 23:45:14 +08:00
Stephen Chung
2e7ec8f1db IdentX -> Ident. 2020-12-22 16:45:56 +08:00
Stephen Chung
ff67efc6d5 Add source to contexts. 2020-12-21 23:12:45 +08:00
Stephen Chung
5ac83f0f46 Add context source to on_debug. 2020-12-21 22:04:46 +08:00
Stephen Chung
2955a4ab64 Fix unary operators binding. 2020-12-21 17:39:37 +08:00
Stephen Chung
f99703f951 Add Engine::disable_doc_comments and smarter doc-comments treatment. 2020-12-20 20:05:23 +08:00
Stephen Chung
719f0babbf Fix comments parsing. 2020-12-18 16:07:19 +08:00
Stephen Chung
fc54fdc907 Emphasize custom syntax are expressions. 2020-12-17 10:42:20 +08:00
Stephen Chung
95b8dcc623 Update docs. 2020-12-16 14:57:28 +08:00
Stephen Chung
f8c14ba1c4 Add look-ahead to custom syntax parser. 2020-12-15 19:23:30 +08:00
Stephen Chung
17310ef576 Encapsulate structures. 2020-12-14 23:05:13 +08:00
Stephen Chung
ecc08271d9 Include actual tokens in custom syntax node. 2020-12-13 14:31:24 +08:00
Stephen Chung
dbdb8f43b7 Change AST to struct. 2020-12-12 15:57:55 +08:00
Stephen Chung
40b6a014ae Provide Position to debug. 2020-12-12 11:47:18 +08:00
Stephen Chung
4438c358d5 on_progress takes u64. 2020-12-12 10:10:27 +08:00
Stephen Chung
bed29da71a Use ImmutableString. 2020-12-11 12:57:07 +08:00
Stephen Chung
f22a04fc74 Move constancy into Dynamic. 2020-12-08 22:47:38 +08:00
Stephen Chung
8e8069f819 Do not propagate constants if shadowed. 2020-12-08 22:20:29 +08:00
Stephen Chung
bd52333802 Add namespace test. 2020-12-07 21:54:52 +08:00
Stephen Chung
c5babac3da Quote map property names. 2020-11-30 22:02:32 +08:00
Stephen Chung
4c4a209609 Fix tests. 2020-11-30 21:16:59 +08:00
Stephen Chung
1004bca5b5 Print arrays and maps with to_debug. 2020-11-30 11:20:51 +08:00
Stephen Chung
86009c70c8 Allow floating point numbers ending in a period. 2020-11-23 22:51:21 +08:00
Stephen Chung
eb4636f219 Fix LexError::ImproperSymbol. 2020-11-21 15:15:14 +08:00
Stephen Chung
0046fe7e73 Prefer Engine::disable_symbol to disable eval. 2020-11-21 15:08:18 +08:00
Stephen Chung
6c07d5fd73 Fix constant example. 2020-11-21 14:46:05 +08:00
Stephen Chung
2be757fda0 Make shadowing variables in custom syntax work. 2020-11-21 13:05:57 +08:00
Stephen Chung
17cd305af7 Restore previous always_search when exiting block. 2020-11-21 12:25:39 +08:00
Stephen Chung
6069a4cf55 do loop. 2020-11-20 22:23:37 +08:00
Stephen Chung
783803ec46 Update comments with links. 2020-11-20 16:52:28 +08:00
Stephen Chung
21c641d21f Set namespace in Module::set_fn_XXX_mut calls. 2020-11-17 15:11:58 +08:00
Stephen Chung
df72d324ba Fix tests. 2020-11-17 12:40:12 +08:00
Stephen Chung
038e3c2554 Add FnNamespace for module functions. 2020-11-17 12:23:53 +08:00
Stephen Chung
d50d48f26f Move definition of Array and Map to lib.rs. 2020-11-16 21:14:32 +08:00
Stephen Chung
ef02150afd Expose methods for Engine::register_module. 2020-11-16 14:07:48 +08:00
Stephen Chung
b75964e383 Add Dynamic::UNIT. 2020-11-15 23:14:29 +08:00
Stephen Chung
a63f14b59c Expr::Switch -> Stmt::Switch. 2020-11-14 23:43:36 +08:00
Stephen Chung
c104afbdce Fix switch test. 2020-11-14 18:30:26 +08:00
Stephen Chung
89254a04c4 Fix tests. 2020-11-14 17:22:01 +08:00
Stephen Chung
83c7c101d1 Add docs and tests for switch. 2020-11-14 09:38:16 +08:00
Stephen Chung
55b4907f19 Add switch expression. 2020-11-13 18:32:18 +08:00
Stephen Chung
41c815f355 Optimize in-place. 2020-11-12 12:37:42 +08:00
Stephen Chung
7b27dcdd62 Fix error messages. 2020-11-11 13:25:45 +08:00
Stephen Chung
821e64adc4 Allow multiple exports. 2020-11-09 14:38:33 +08:00
Stephen Chung
487a073caf Fix recursive file import bug. 2020-11-08 23:00:03 +08:00
Stephen Chung
c6ef2d1e95 Add test to make sure call_fn does not pollute scope. 2020-11-06 13:41:04 +08:00
Stephen Chung
32f41c69bd Refine code and docs. 2020-11-03 21:50:14 +08:00
Stephen Chung
f74d947c6b Fix constant assignment. 2020-11-03 13:08:19 +08:00
Stephen Chung
d7d6f74dfd Add constant NO_POS. 2020-11-02 12:50:27 +08:00
Stephen Chung
3485f9b00b Fix test. 2020-11-01 16:02:10 +08:00
Stephen Chung
a2e2b5e2ef Add f32_float feature. 2020-11-01 15:48:48 +08:00
Stephen Chung
427af14f1b Don't wrap system errors from function calls. 2020-10-28 14:10:46 +08:00
Stephen Chung
4b087d0e69 Fix test. 2020-10-27 23:45:04 +08:00
Stephen Chung
01663a6581 Refine docs. 2020-10-27 11:30:38 +08:00
Stephen Chung
54d68c1061 Fix bug. 2020-10-26 21:49:49 +08:00
Stephen Chung
b607a3a9ba Add raw API for custom syntax. 2020-10-25 21:57:18 +08:00
Stephen Chung
2c7c719cd5 Minor cleanup before release. 2020-10-22 12:26:44 +08:00
Stephen Chung
ce03a4fda5 Fix throw test. 2020-10-20 23:30:01 +08:00
Stephen Chung
07bdb824fe Add try-catch. 2020-10-20 23:16:03 +08:00
Stephen Chung
5ee9dfc5cd 1) Change namespaces to iter_namespaces
2) throw can throw any value
2020-10-20 18:09:26 +08:00
Stephen Chung
92ba7b42d5 Implement namespaces chain. 2020-10-20 10:54:32 +08:00
Stephen Chung
a9fd0ff4de Encapsulate scope into EvalContext;
Fix bug with custom syntax delta.
2020-10-19 19:11:55 +08:00
Stephen Chung
c8c4ca21ad Update docs. 2020-10-19 14:26:15 +08:00
Stephen Chung
8a17856f27 Fix test. 2020-10-18 22:38:15 +08:00
Stephen Chung
ea814779bf Fix test. 2020-10-18 22:24:01 +08:00
Stephen Chung
82e6dd446a Encapsulate register_fn_raw parameters into NativeCallContext. 2020-10-18 17:02:17 +08:00
Stephen Chung
d88adfd73d Fix test. 2020-10-16 21:26:38 +08:00
Stephen Chung
f995d09d8b Fix bug with calling scripted function. 2020-10-16 21:16:06 +08:00
Stephen Chung
fb05e811b7 Map::keys and Map::values can be used method-call style. 2020-10-15 22:11:40 +08:00
Stephen Chung
1c86c66f1a Add more functions to arrays. 2020-10-13 10:57:29 +08:00
Stephen Chung
747fda1ec7 Add filter, map, reduce to Array. 2020-10-12 22:49:51 +08:00
Stephen Chung
fd5a932611 Implement variable resolver. 2020-10-11 21:58:11 +08:00