Commit Graph

299 Commits

Author SHA1 Message Date
Sage Vaillancourt 71623db37c Fix prnl in lib.pbl 2022-03-27 20:00:55 -04:00
Sage Vaillancourt 806f63e8ae Inline some of web.h into web.c 2022-03-27 19:36:45 -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 69cf9212d7 Simplify several functions.
Namely, printObj() and _copyList().
Remove separate cloneList() function.
2022-03-27 00:49:10 -04:00
Sage Vaillancourt b715b2116a Remove unnecessary listLength type checking. 2022-03-27 00:13:04 -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 03920147d4 Add idea/ and pl executable to gitignore. 2022-03-26 12:59:35 -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 581dfed359 Combine fn macros.
Toying with storing fn types in the code.
2022-03-24 23:58:54 -04:00
Sage Vaillancourt 62e430af69 Adjust test formatting.
Replace plfunc.h comments with simple type hints.
2022-03-24 23:32:51 -04:00
Sage Vaillancourt 3398729ab8 Track length of stringObj().
Use this to simplify catObjects().
2022-03-24 23:07:34 -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 06389ac5fc Manual specification of color-highlighting order. 2022-03-24 16:59:57 -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 bf2b9504a6 Better handle deeply nested help highlighting. 2022-03-22 12:01:24 -04:00
Sage Vaillancourt 86f3f4b32c Do some simple depth highlighting in help text. 2022-03-22 11:54:26 -04:00
Sage Vaillancourt 5a622736d3 Handle more testing stuff statically.
Remove fnt and just have centralized fn.
Longer printObj temp string.
`?` now shows tests.
Add more internal testing.
2022-03-22 11:45:02 -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 4733e1172e Fix uncaught mismatched paren error.
Add test against that error behavior.
Remove bits of unused code from web.c and tests.sh
2022-03-19 21:53:18 -04:00
Sage Vaillancourt c9be701b19 Fix no-param lambda environment bug.
Put allocation cap behind an ifdef
2022-03-19 21:28:17 -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 13a7ad97b5 Correct known memory leaks. 2022-03-17 13:23:19 -04:00
Sage Vaillancourt 011ed937fe Some memory fixes.
Also removed unnecessary comments.
2022-03-16 23:31:14 -04:00
Sage Vaillancourt bbb2cb471e Improve testing.
Remove explicit endBlock function.
Test some of the new features.
2022-03-16 16:57:37 -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
Sage Vaillancourt b390e272a7 Remove Makefile testing code.
Revert disabled printd() to a semicolon.
2022-03-15 16:53:34 -04:00
Sage Vaillancourt 2cc97288bf Add hard-coded readline REPL.
...the library issue was not Ubuntu's fault.
2022-03-15 16:51:23 -04:00
Sage Vaillancourt a59ce1646f More comprehensive webby.pl
Allow for longer strings, but there's still another limiting element somewhere.
2022-03-15 16:03:23 -04:00
Sage Vaillancourt 1d5621923c Further flesh-out structs.
Temporarily disable http due to buggy Ubuntu libmicrohttpd.
Add a way to access their fields with `'s`.
 - Uses some fairly hacky parseAtom additions. Needs to be refined.
Add structCapacity to Environment.
Add global Environment pointer.
Use structDef indexes instead of direct pointers.
 - Easier to increase capacity this way
strcpy struct field names
2022-03-15 15:27:02 -04:00
Sage Vaillancourt 11f39bf136 Add simple webserver functionality. 2022-03-14 23:46:20 -04:00
Sage Vaillancourt 6c8ff04711 Extremely barebones struct object implementation. 2022-03-14 16:52:08 -04:00
Sage Vaillancourt e2c977e95a Finally some consistent styling.
Centralized printf/printd defines in object.h
Removed null/isList checking from FOR_POINTER_IN_LIST
2022-01-07 16:55:03 -05:00
Sage Vaillancourt 8d22bf575c Add history and ok/err functionality to REPL. 2021-12-15 14:40:49 -05:00
Sage Vaillancourt f3a69989fa Better switch functionality. 2021-12-15 14:39:13 -05:00
Sage Vaillancourt 55d39431b1 Add TYPE_SLIST.
Not yet stable, but allows manipulation of lists without immediate
evaluation.
2021-12-15 14:38:52 -05:00
Sage Vaillancourt 5261880ebb Fix test quoting. 2021-12-15 14:27:01 -05:00
Sage Vaillancourt d73247a471 Fix deleteEnv null-pointer bug. 2021-12-15 14:25:47 -05:00