Commit Graph

1217 Commits

Author SHA1 Message Date
Stephen Chung
a00d6ba99e Optimize IndexChainValue usage. 2020-11-19 13:51:59 +08:00
Stephen Chung
0e4743e7c7 Share environment when making module from AST. 2020-11-19 10:52:45 +08:00
Stephen Chung
1de85d749d Optimize AST. 2020-11-19 10:41:08 +08:00
Stephen Chung
d35a7eeaa8 Optimize PackagesCollection. 2020-11-19 10:24:43 +08:00
Stephen Chung
a8cdb661f8 Optimize Imports. 2020-11-19 10:14:43 +08:00
Stephen Chung
21c641d21f Set namespace in Module::set_fn_XXX_mut calls. 2020-11-17 15:11:58 +08:00
Stephen Chung
038e3c2554 Add FnNamespace for module functions. 2020-11-17 12:23:53 +08:00
Stephen Chung
999a87f86e Fix no_optimize build. 2020-11-16 23:32:44 +08:00
Stephen Chung
7ef3bd6b20 Fix no_function build. 2020-11-16 23:25:19 +08:00
Stephen Chung
699220057f Fix bug. 2020-11-16 23:17:34 +08:00
Stephen Chung
272c8505b8 Refactor use. 2020-11-16 23:10:14 +08:00
Stephen Chung
d50d48f26f Move definition of Array and Map to lib.rs. 2020-11-16 21:14:32 +08:00
Stephen Chung
adb902326e Reduce feature gates on imports. 2020-11-16 16:28:04 +08:00
Stephen Chung
ef02150afd Expose methods for Engine::register_module. 2020-11-16 14:07:48 +08:00
Stephen Chung
cd62104296 More Dynamic constants. 2020-11-16 13:56:07 +08:00
Stephen Chung
b6d35ab310 Fix no_module build. 2020-11-16 09:30:17 +08:00
Stephen Chung
b75964e383 Add Dynamic::UNIT. 2020-11-15 23:14:29 +08:00
Stephen Chung
937b45a187 Add Engine::load_module. 2020-11-15 23:14:16 +08:00
Stephen Chung
fbe9425794 Add discriminant to Dynamic::hash. 2020-11-15 18:39:23 +08:00
Stephen Chung
c919ee4e46 Fine tune hash map sizes. 2020-11-15 13:49:54 +08:00
Stephen Chung
bde8917ed4 Set capacity of hash maps. 2020-11-15 12:07:35 +08:00
Stephen Chung
a63f14b59c Expr::Switch -> Stmt::Switch. 2020-11-14 23:43:36 +08:00
Stephen Chung
0182117759 Change Stmt Variant names. 2020-11-14 22:55:23 +08:00
Stephen Chung
fce2c62f02 Reformat code files. 2020-11-14 22:43:56 +08:00
Stephen Chung
28de155f08 Add Expr::DynamicConstant. 2020-11-14 19:04:49 +08:00
Stephen Chung
89254a04c4 Fix tests. 2020-11-14 17:22:01 +08:00
Stephen Chung
56fbe39b7b Use references for switch expressions, if possible. 2020-11-14 16:08:48 +08:00
Stephen Chung
b0c66eb5e5 Add benchmarks for switch statement. 2020-11-13 19:35:51 +08:00
Stephen Chung
bc07b4fa84 Fix builds. 2020-11-13 18:49:23 +08:00
Stephen Chung
55b4907f19 Add switch expression. 2020-11-13 18:32:18 +08:00
Stephen Chung
7d1b971b39 More interned strings. 2020-11-13 10:43:54 +08:00
Stephen Chung
27619b86db Fix builds. 2020-11-12 23:09:27 +08:00
Stephen Chung
69a0f044f4 Use interned strings to prepare for match statement. 2020-11-12 22:36:13 +08:00
Stephen Chung
8e5a53bc0d Implement Hash for Dynamic. 2020-11-12 21:53:26 +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
958762079e Change modules to namespace. 2020-11-10 23:26:50 +08:00
Stephen Chung
c41f5aefcb Change sub-modules to shared. 2020-11-09 22:44:20 +08:00
Stephen Chung
e69444293c Encapsulate imported modules into AST. 2020-11-09 21:52:23 +08:00
Stephen Chung
821e64adc4 Allow multiple exports. 2020-11-09 14:38:33 +08:00
Stephen Chung
173f8474d6 Fix no_module build. 2020-11-09 12:50:18 +08:00
Stephen Chung
4b622a8830 Enable export let/export const short-hand. 2020-11-09 12:21:11 +08:00
Stephen Chung
48886eacc8 Add == and != to arrays and maps. 2020-11-08 23:00:37 +08:00
Stephen Chung
487a073caf Fix recursive file import bug. 2020-11-08 23:00:03 +08:00
Stephen Chung
232ba27548 Add NativeCallContext::new. 2020-11-08 18:15:23 +08:00
Stephen Chung
b926eba501 Fix doc test. 2020-11-08 16:49:59 +08:00
Stephen Chung
1e07e4356e Re-index imported modules if they are not yet indexed. 2020-11-08 14:29:54 +08:00
Stephen Chung
760f6c3678 Fix no_function build. 2020-11-08 10:56:33 +08:00
Stephen Chung
b3d318ef7f Module resolver returns shared module. 2020-11-07 23:33:21 +08:00
Stephen Chung
d5d70367fa Fix no-std buld. 2020-11-06 19:22:00 +08:00
Stephen Chung
6bc5ba6668 Enable functions to use global imports. 2020-11-06 19:17:07 +08:00
Stephen Chung
07a8a43298 Optimize data structures. 2020-11-06 16:27:40 +08:00
Stephen Chung
3f6db1d9d4 Remove extra export of LexError. 2020-11-04 20:20:55 +08:00
Stephen Chung
a5d22ddd45 Make FuncInfo a struct. 2020-11-04 14:37:46 +08:00
Stephen Chung
b390586bcc Fix optimization of Stmt::Expr. 2020-11-04 13:11:37 +08:00
Stephen Chung
c287a61b93 Streamline ScriptFnDef. 2020-11-04 12:34:54 +08:00
Stephen Chung
f75942715d Remove clippy warnings. 2020-11-04 12:34:34 +08:00
Stephen Chung
2168fd5361 Expr::Stmt takes a statements block. 2020-11-04 11:49:02 +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
b9de8eaa7f Minor code refactor. 2020-11-02 23:54:19 +08:00
Stephen Chung
cc304ba513 Fix serde build. 2020-11-02 13:18:37 +08:00
Stephen Chung
d7d6f74dfd Add constant NO_POS. 2020-11-02 12:50:27 +08:00
Stephen Chung
6f3ce96d9d Enable termination token. 2020-11-02 11:04:45 +08:00
Stephen Chung
b07a2aa79c Pack Imports. 2020-11-01 23:42:00 +08:00
Stephen Chung
717e8e7eee Remove unnecessary clone. 2020-11-01 22:55:19 +08:00
Stephen Chung
c55fc5a9a5 Optimize Scope. 2020-11-01 22:46:46 +08:00
Stephen Chung
a2e2b5e2ef Add f32_float feature. 2020-11-01 15:48:48 +08:00
Stephen Chung
629e02f9da Use Ident. 2020-11-01 00:04:02 +08:00
Stephen Chung
abbee80e5d Do not box ModuleRef. 2020-10-31 23:51:59 +08:00
Stephen Chung
42eac410b7 Optimize Expr. 2020-10-31 23:26:21 +08:00
Stephen Chung
89811c8dfc Pack Stmt and Expr some more. 2020-10-31 14:13:45 +08:00
Stephen Chung
3e23cf943e Add to_float from f32 to f64. 2020-10-30 14:19:19 +08:00
Stephen Chung
a73584cd36 Fix no_std. 2020-10-29 12:00:02 +08:00
Stephen Chung
4e115d2bc2 Code structure refactor. 2020-10-29 11:37:51 +08:00
Stephen Chung
cbd7ed2ca7 Fix test. 2020-10-28 22:30:35 +08:00
Stephen Chung
bed6364dcb Simplify hash calculation. 2020-10-28 22:30:29 +08:00
Stephen Chung
f5ffbfbe06 Code structure cleanup. 2020-10-28 22:18:44 +08:00
Stephen Chung
53adc58f63 Fix no_closure build. 2020-10-28 19:21:45 +08:00
Stephen Chung
f56c3fe9cb Add Ident/IdentX to AST. 2020-10-28 19:11:17 +08:00
Stephen Chung
00b1051732 Optimize Stmt/Expr reflections. 2020-10-28 14:10:48 +08:00
Stephen Chung
427af14f1b Don't wrap system errors from function calls. 2020-10-28 14:10:46 +08:00
Stephen Chung
30e11f137b Move ErrorAssignmentToUnknownLHS to ParseError. 2020-10-28 10:26:36 +08:00
Stephen Chung
4b087d0e69 Fix test. 2020-10-27 23:45:04 +08:00
Stephen Chung
51fca1e757 Move Assignment to Stmt. 2020-10-27 23:21:20 +08:00
Stephen Chung
fd2ba54b49 Introduce BinaryExpr. 2020-10-27 23:00:05 +08:00
Stephen Chung
f62f7908ab Pack Stmt tighter. 2020-10-27 19:23:43 +08:00
Stephen Chung
93b5df6b3c Pack Stmt structure. 2020-10-27 18:18:19 +08:00
Stephen Chung
01663a6581 Refine docs. 2020-10-27 11:30:38 +08:00
Stephen Chung
4add90b215 Change parser output to String. 2020-10-27 09:56:37 +08:00
Stephen Chung
54d68c1061 Fix bug. 2020-10-26 21:49:49 +08:00
Stephen Chung
7496c77ac9 Custom syntax parser function takes &[String]. 2020-10-26 19:46:58 +08:00
Stephen Chung
b467b18722 Fix no_std build. 2020-10-25 22:08:02 +08:00
Stephen Chung
b607a3a9ba Add raw API for custom syntax. 2020-10-25 21:57:18 +08:00
Stephen Chung
f670d55871 Fix Send+Sync for EvalAltResult. 2020-10-25 21:48:18 +08:00
Stephen Chung
65432330c4 Add Module::fill_with. 2020-10-25 00:39:47 +08:00
Stephen Chung
2c7c719cd5 Minor cleanup before release. 2020-10-22 12:26:44 +08:00
Stephen Chung
e89d12c42f Reserve thread keyword. 2020-10-21 14:45:20 +08:00
Stephen Chung
3660e42b96 Refactor try/catch code. 2020-10-21 14:45:10 +08:00
Stephen Chung
ad60db5bae Reduce max fn call level. 2020-10-21 10:10:46 +08:00
Stephen Chung
44dc5f95c3 Fix serde feature. 2020-10-20 23:29:56 +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
13f1ae577b Use plugins to define functions. 2020-10-19 23:49:01 +08:00
Stephen Chung
ccba5f2188 Move custom syntax into separate function. 2020-10-19 19:21:40 +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
d1f9f4096d Update badges 2020-10-19 17:26:47 +08:00
Stephen Chung
c8c4ca21ad Update docs. 2020-10-19 14:26:15 +08:00
Stephen Chung
d68c951795 Pad string to exact length even when padding string is not multiple. 2020-10-18 22:47:58 +08:00
Stephen Chung
25f820f5bf Reimplement pad for string. 2020-10-18 22:36:58 +08:00
Stephen Chung
6e5c903241 Fix no_module build. 2020-10-18 22:10:08 +08:00
Stephen Chung
46b92c9d1f Allow NativeCallContext in function arguments. 2020-10-18 21:47:34 +08:00
Stephen Chung
dc4c47e008 Fix no_function and no_module builds. 2020-10-18 17:29:11 +08:00
Stephen Chung
232ff91957 Fix doc test. 2020-10-18 17:08:57 +08:00
Stephen Chung
82e6dd446a Encapsulate register_fn_raw parameters into NativeCallContext. 2020-10-18 17:02:17 +08:00
Stephen Chung
58c820785b Add drain and retain for arrays. 2020-10-18 13:18:12 +08:00
Stephen Chung
aa6d00f253 Fix bug. 2020-10-17 20:01:31 +08:00
Stephen Chung
f903eda8ab Catch Fn and eval in method call at parse time. 2020-10-17 18:18:29 +08:00
Stephen Chung
7a4905209c Introduce EvalAltResult::ErrorSystem. 2020-10-17 16:34:07 +08:00
Stephen Chung
8eb6c821d4 Fix tests. 2020-10-17 14:08:59 +08:00
Stephen Chung
39474d6420 Streamline function pointers and currying. 2020-10-17 13:49:16 +08:00
Stephen Chung
a16fc71935 Encapsulate RwLock and RefCell into Locked. 2020-10-16 23:41:56 +08:00
Stephen Chung
f995d09d8b Fix bug with calling scripted function. 2020-10-16 21:16:06 +08:00
Stephen Chung
e62df6cbed Remove none for array. 2020-10-16 21:02:16 +08:00
Stephen Chung
54d5b29390 Remove clone. 2020-10-15 23:44:05 +08:00
Stephen Chung
1e21a7f7e7 Introduce IndexChainValue. 2020-10-15 23:30:30 +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
3b99b8f166 Simplify iterator registration. 2020-10-15 22:11:18 +08:00
Stephen Chung
707ece7e80 Refactor iterators API. 2020-10-14 23:22:10 +08:00
Stephen Chung
e0c39edff4 Enhance array functions. 2020-10-14 21:27:31 +08:00
Stephen Chung
3df8d6c398 Fix typo. 2020-10-13 17:16:19 +08:00
Stephen Chung
13c4d0bbb3 Adjust precedence of in. 2020-10-13 16:01:42 +08:00
Stephen Chung
9dceeaf114 Reserve ** operator. 2020-10-13 15:51:59 +08:00
Stephen Chung
037e8334d4 Reset modulo precedence. 2020-10-13 15:49:09 +08:00
Stephen Chung
28697e0380 Remove support for script-line native functions. 2020-10-13 14:40:02 +08:00
Stephen Chung
6db412815b Add chop and extract for arrays. 2020-10-13 14:39:49 +08:00
Stephen Chung
1c86c66f1a Add more functions to arrays. 2020-10-13 10:57:29 +08:00
Stephen Chung
3c7805d514 Encapsulate environment in ScriptFnDef. 2020-10-13 09:38:14 +08:00
Stephen Chung
0b4129fb98 Raise precedence of ~ and %. 2020-10-13 09:33:16 +08:00
Stephen Chung
a0d5249c4d Fix unchecked build. 2020-10-12 23:17:16 +08:00
Stephen Chung
747fda1ec7 Add filter, map, reduce to Array. 2020-10-12 22:49:51 +08:00
Stephen Chung
6d0851de44 Reverse function call parameter change. 2020-10-12 19:36:34 +08:00
Stephen Chung
21b989afd5 Refine function call parameters size. 2020-10-12 17:00:58 +08:00
Stephen Chung
c4f00afbee Disallow ! in module function calls. 2020-10-12 16:59:59 +08:00
Stephen Chung
e343bcfa8f Change Option<usize> to usize for variable resolver index. 2020-10-11 22:41:26 +08:00
Stephen Chung
fd5a932611 Implement variable resolver. 2020-10-11 21:58:11 +08:00
Stephen Chung
9d93dac8e7 Reserve some more symbols. 2020-10-10 22:14:10 +08:00
Stephen Chung
994e5a4251 Move some concat functions to builtin. 2020-10-10 22:13:55 +08:00
Stephen Chung
dd9f58f323 Merge ser/de modules. 2020-10-10 13:43:14 +08:00
Stephen Chung
612ecc4ebc Move StaticVec definition to lib.rs. 2020-10-10 13:41:55 +08:00
Stephen Chung
95c4ac4180 Fix no_float bug in time. 2020-10-09 13:47:35 +08:00
Stephen Chung
59b380b130 Allow propagation for pushed scope constants. 2020-10-09 13:26:32 +08:00
Stephen Chung
630ec51624 Simplify let/const statement. 2020-10-09 13:25:53 +08:00
Stephen Chung
1f74b36496 Add EntryType::is_constant. 2020-10-09 13:23:44 +08:00
Stephen Chung
a4b674d015 Trap elapsed error when timestamp is later than now. 2020-10-09 12:51:26 +08:00
Stephen Chung
7ede299aae Allow expressions in constants. 2020-10-09 11:15:25 +08:00
Stephen Chung
d511aac7a4 Reduce max call stack size for debug. 2020-10-08 23:00:01 +08:00
Stephen Chung
1272eeb81a Add/remove #[inline] attributes. 2020-10-08 22:25:50 +08:00
Stephen Chung
b2d603ec06 Refine Add/AddAssign for AST and Module. 2020-10-07 23:25:08 +08:00
Stephen Chung
ec19103478 Fix serde typo. 2020-10-07 15:51:00 +08:00
Stephen Chung
d7bfe13b3e Add convenient functions and operators for Module and module resolvers. 2020-10-07 15:40:36 +08:00
Stephen Chung
1523981e4e Add AST::combine and AST::combine_filtered. 2020-10-07 12:11:25 +08:00
Stephen Chung
3340760b35 Fix no_std build. 2020-10-07 11:44:06 +08:00
Stephen Chung
ae1157a140 Remove Expr::get_constant_str and change Expr::get_constant_value not to panic. 2020-10-06 22:09:26 +08:00
Stephen Chung
8809d25d3c Add Dynamic::from(&str) 2020-10-06 21:25:05 +08:00
Stephen Chung
1de44c7ecd Reserve $ symbol. 2020-10-05 23:02:50 +08:00
Stephen Chung
44f8d9e429 Refine Module::iter_script_fn_info. 2020-10-05 21:52:39 +08:00
Stephen Chung
2f6bb643aa Remove Module::get_script_function_by_signature. 2020-10-05 18:07:40 +08:00
Stephen Chung
82d48df734 Merge data type mismatch errors. 2020-10-05 13:45:57 +08:00
Stephen Chung
b67a743306 Do not eagerly evaluate is_def_fn and is_def_var. 2020-10-05 12:14:34 +08:00
Stephen Chung
29bf790286 Fix no_function build. 2020-10-05 12:09:45 +08:00
Stephen Chung
4356d02828 Fix no_object builds. 2020-10-05 12:05:46 +08:00
Stephen Chung
0d0affd5e9 Eagerly evaluate built-in operators for OptimizationLevel::Simple. 2020-10-05 10:27:31 +08:00
Stephen Chung
a962debf0d Simplify target back propagation. 2020-10-04 10:40:44 +08:00
Stephen Chung
23d0f52284 Better error messages. 2020-10-03 23:27:30 +08:00
Stephen Chung
1e13e6be5f Doc formatting. 2020-10-03 18:49:11 +08:00
Stephen Chung
fbfb7677c1 Add is_def_var and is_def_fn. 2020-10-03 16:25:58 +08:00
Stephen Chung
eec3f4e1bf Module:;eval_ast_as_new defaults to merging namespaces. 2020-10-03 11:42:54 +08:00
Stephen Chung
a72f70846f Make merged namespace more efficient. 2020-10-02 23:14:33 +08:00
Stephen Chung
08ca90a136 Use ImmutableString for import alias. 2020-10-02 18:52:18 +08:00
Stephen Chung
038b058e63 Use shared AST module. 2020-10-02 16:21:18 +08:00
Stephen Chung
d2c94ba07c Add more module tests. 2020-10-02 14:55:02 +08:00
Stephen Chung
e8d5f78f88 Simplify code. 2020-10-01 23:31:27 +08:00
Stephen Chung
2290c72de1 Fix tests. 2020-09-30 23:27:41 +08:00
Stephen Chung
a04ed02b54 Simplify macro system and update doc comments. 2020-09-30 22:55:40 +08:00
Stephen Chung
e526b53b42 No need to merge module if empty. 2020-09-30 09:57:21 +08:00
Stephen Chung
c7dfbd48a6 Restore call_fn_dynamic. 2020-09-29 18:37:00 +08:00
Stephen Chung
69054f1b69 Change lib to &Module. 2020-09-29 18:17:41 +08:00
Stephen Chung
ea78fa2b27 Change SharedPluginFunction to Shared<FnPlugin> 2020-09-29 13:06:48 +08:00
Stephen Chung
2123b0a279 Module::eval_ast_as_new will merge global and module namespaces if private_namespace is true. 2020-09-28 18:53:03 +08:00
Stephen Chung
5e43f2e5a4 Better error handling messages. 2020-09-28 11:19:49 +08:00
Stephen Chung
a1cf852bb9 Merge in function pointer arguments. 2020-09-28 11:01:25 +08:00
Stephen Chung
f92d992165 Handle timestamps in serde. 2020-09-27 22:34:07 +08:00
Stephen Chung
e1ce67adc2 Add TimeStamp variant. 2020-09-27 22:15:35 +08:00
Stephen Chung
516f7b60d9 Fix no_std build. 2020-09-27 18:47:20 +08:00
Stephen Chung
a2694114d1 Better panic messages. 2020-09-27 11:14:50 +08:00
Stephen Chung
726b030616 Implement +/- operators for timestamp. 2020-09-26 19:45:33 +08:00
Stephen Chung
e0483f2a50 Implement Dynamic::From<Instant> 2020-09-26 19:41:04 +08:00
Stephen Chung
03dce86328 Support Dynamic as function default return value. 2020-09-26 16:27:38 +08:00