Commit Graph

133 Commits

Author SHA1 Message Date
Sage Vaillancourt fc4f0bef28 Move main() etc. into main.c 2022-04-05 20:05:58 -04:00
Sage Vaillancourt 61b9f79c36 Pull segfault-handling into a dedicated function and ifdef.
Some stringing tweaks.
2022-04-05 16:41:23 -04:00
Sage Vaillancourt b419826b8e More robust addToTable().
Add several pl string functions: `slen`, `chars`, `matches`, and `substr`.
Add support for comments in native tests.
2022-04-05 15:30:30 -04:00
Sage Vaillancourt caaa6c53f6 Add simple object hashtable for env.
Currently has some issues with accessing parameters in recursive calls.
2022-04-04 14:15:44 -04:00
= 343568afda Merge branch 'master' of https://gitlab.com/sagev9000/pebblisp 2022-04-02 11:51:58 +01:00
= 323b3113d7 Patch to compile for Pebble devices.
Mostly throwing ifdef Standalone all over the place.
2022-04-02 11:51:06 +01:00
Sage Vaillancourt 13fa4ce54f More cd-related sugar.
Add preprocess pl func for repl.
Add basic aliases to repl.
2022-04-02 04:57:53 -04:00
Sage Vaillancourt 1a13fe4814 Add `unused` macro.
Prefer malloc() over calloc() in env.c
2022-04-01 15:07:19 -04:00
Sage Vaillancourt 980a1c42ab Add (cd) and (cwd).
Handle quotes in printColored().
2022-03-31 21:31:24 -04:00
Sage Vaillancourt b770a618e0 Simpler listEvalFunc() implementation.
Simpler simpleFuncEval(), which should eventually be removed, anyway.
 - Something with it or (reduce) is a bit leaky, but actually less so than before.
Small plfunc.c reordering.
2022-03-31 15:44:18 -04:00
Sage Vaillancourt 2fb6643326 A bit of cleanup and warning-hushing. 2022-03-31 14:12:52 -04:00
Sage Vaillancourt fb2e1811ff Rename possessive to structAccess.
Gives better error messages.
Use typical type-checking in structAccess.
Make checkTypes() more global, and move to pebblisp.c
2022-03-31 12:09:23 -04:00
Sage Vaillancourt 32e21bf758 Replace (struct's field) with (struct.field)
It was cute, but hard to read in space-delimited lists.
Convert (map) to a normal pl function.
Add trueObject() falseObject() macros.
2022-03-31 10:29:10 -04:00
Sage Vaillancourt f2742e8411 Add (env var_name)
Add make: release
2022-03-30 16:47:54 -04:00
Sage Vaillancourt d76e3f5341 Make (def) a normal function.
Remove (defe) for now.
2022-03-30 16:32:42 -04:00
Sage Vaillancourt 75ba0ac5ee Dedicated getPrompt() function.
Can now handle strings or lambdas.
2022-03-30 14:41:53 -04:00
Sage Vaillancourt 92daee1d0d Skip past func-y objects in REPL, too. 2022-03-29 23:01:50 -04:00
Sage Vaillancourt f48e1bf5c9 REPL defers to sh when a symbol isn't found. 2022-03-29 22:51:13 -04:00
Sage Vaillancourt 32a2254da9 Tweak some help text. 2022-03-29 16:44:21 -04:00
Sage Vaillancourt 857219a4e8 Remove readFromEnvironment().
Something about it was buggy. Might be worth coming back to.
2022-03-29 16:31:23 -04:00
Sage Vaillancourt f12d8bea7f Start reading from HOME/.pebblisp.pbl for config. 2022-03-29 16:06:57 -04:00
Sage Vaillancourt 2b09187a94 Add readFromEnvironment() for reading without cloning.
Define the REPL prompt in the environment.
2022-03-29 15:49:53 -04:00
Sage Vaillancourt 79a2d09995 Adjust repl to allow dropping the parens around `?`
`?` with no arg also returns its own help text.
Improve web help texts.
2022-03-29 15:30:28 -04:00
Sage Vaillancourt 803935c637 Move help directly into env.
Fix repl leak.
2022-03-29 15:09:36 -04:00
Sage Vaillancourt a444bc11bb Use dynamically-sized strings for stringObj.
Fix webby.pl's `reduce` usage and web.c's struct creation.
2022-03-29 14:01:44 -04:00
Sage Vaillancourt af7a2e6265 Cleanup and a couple (micro) optimizations. 2022-03-28 23:51:05 -04:00
Sage Vaillancourt 66a07e395c Add some runtime type-checking.
Adjust simple-ops structure.
2022-03-28 13:19:44 -04:00
Sage Vaillancourt e22e022cd8 Reference count strings. 2022-03-28 09:56:34 -04:00
Sage Vaillancourt 34032cb1c6 Simplify Environment struct.
Fill in envForLambda with errorObjects if not enough are provided.
Move addStructDef() into env.c
Add dedicated Dictionary struct to env.c
env->size -> env->capacity
2022-03-27 18:52:56 -04:00
Sage Vaillancourt 9a454e6a30 Small optimizations and cleanup. 2022-03-27 00:03:34 -04:00
Sage Vaillancourt 158c21f441 Reference count LAMBDAS.
Remove more unused code/checks.
Simplify evalList (though it could use more work).
2022-03-26 19:51:52 -04:00
Sage Vaillancourt 5226640fb6 Some stringing cleanup and unused code removal. 2022-03-26 12:54:38 -04:00
Sage Vaillancourt 502b9349fe Fix some busted tests.
Better styling of native test printing.
Add `detail` parameter to runTests().
2022-03-25 16:11:25 -04:00
Sage Vaillancourt 59c6ff50b5 Break printColored() into own function.
Replace (pch) with (ch).
Fix error memory bug.
Add sugar for (? fil) => (? "fil").
Inline some of (fil).
Simplify (print) and allow for varargs.
Total up valgrind errors when testing.
2022-03-25 13:33:30 -04:00
Sage Vaillancourt 68a7a55fc0 Continue FUNC transition.
Removing some list-func features, at least for now. e.g. (+ 5 (1 2 3)).
Disable related tests.
Improve (reduce) syntax.
2022-03-24 21:50:18 -04:00
Sage Vaillancourt 0a649095ab Start switch to array-based functions.
No more mandatory two-params, though several things are still busted.
2022-03-24 16:59:59 -04:00
Sage Vaillancourt e00d706522 Add function to read a file into a string object.
Move webby.pl into dedicate examples/web/ dir.
Pull out styles.css into its own file.
Fix small parseEval leak.
2022-03-24 16:59:58 -04:00
Sage Vaillancourt 6c7132aa46 Exit code of `./pl --run-tests` is the number of failed tests. 2022-03-23 01:02:27 -04:00
Sage Vaillancourt d743970b1a Tweak (eval) to accept SLIST arguments.
Tweak implicit-cat detection.
Explicit empty-string notation in test display.
A couple more tests.
2022-03-23 01:00:11 -04:00
Sage Vaillancourt 097cbf6a5c Start some internal testing frameworking. 2022-03-21 12:33:57 -04:00
Sage Vaillancourt 3bf65577c0 Add help text for STANDALONE.
Pull most user functions into the new plfunc.
Could integrate some tests directly into pl with --run-tests
2022-03-20 03:50:43 -04:00
Sage Vaillancourt 30e8c87e66 General code clean-up. 2022-03-19 22:25:20 -04:00
Sage Vaillancourt 9da4649a27 Several small additions.
Add basic allocation tracking.
Add extra error context
  - more useful for debugging the language than programs written in it
Let reduce work on a single non-list item. May be removed.
Add more testing.
Add test filtering.
Fix triple-quotes.
2022-03-18 16:12:39 -04:00
Sage Vaillancourt ee8eaf2d28 Fix web struct handling.
Typedef to handle different versions of libmicrohttpd.
Add getStructIndex().
Fix small print() mem leak.
2022-03-18 11:23:19 -04:00
Sage Vaillancourt b4584fa377 Start work on adding queryParams, etc. 2022-03-17 16:59:08 -04:00
Sage Vaillancourt 011ed937fe Some memory fixes.
Also removed unnecessary comments.
2022-03-16 23:31:14 -04:00
Sage Vaillancourt 711719289f Several changes.
Add `reduce` and `islist`.
 - Reduce is broken with lambdas for some reason.
Remove `switch` from lib (breaks `penv`).
More detailed lambda to-stringing.
A bit of fixing for lambdas that return lambdas.
Re-org Object fields for simpler visual debugging.
Let `cat` work with one argument.
Add prompt option for `inp`.
Some more refinement of the webby.pl example.
2022-03-16 16:50:55 -04:00
Sage Vaillancourt 7faf2ebbb3 Add POST method.
Rename `addroute` to `get`.
2022-03-15 23:22:28 -04:00
Sage Vaillancourt 4decbbbe5c Use readline history. 2022-03-15 22:47:46 -04:00
Sage Vaillancourt f37969418d Add simple web server implementation.
Adjust global Environment implementation.
Example `webby.pl` is now a simple server program.
Only limit stringNObj outside of STANDALONE implementations.
Larger catObjects sizes.
Parsing files ignores semicolons inside of quotes.
2022-03-15 21:48:04 -04:00