Commit Graph

69 Commits

Author SHA1 Message Date
Sage Vaillancourt c37a12e244 Rename main() files.
Tweak checkTypes() to expect a closing semicolon.
2023-03-03 10:57:04 -05:00
Sage Vaillancourt 6176e9eb4b Improve lambda param handling.
Add (rand)
Clean up testing output.
tic-tac-toe.pbl QOL changes
2022-10-25 14:39:20 -04:00
Sage Vaillancourt 672cdb692a Display parseEval source in error messages. 2022-10-25 13:21:04 -04:00
Sage Vaillancourt ce3472cb90 Add simple varargs. 2022-04-25 13:39:03 -04:00
Sage Vaillancourt d40e551933 Add dedicated plfunc directory.
Contains most native pl functions.
Consolidated pebcom into pebbleobject.
Broke out several pc (STANDALONE) and plstring functions into their own files.
2022-04-22 08:57:02 -04:00
Sage Vaillancourt 11525e9531 More (table) use in Forbble2.
Clean objects when adding duplicates to a hash table.
Type-check hash functions.
Add (switch) (first-where) and (match) to lib.pbl.
Support escaping in (standalone) strings.
2022-04-19 15:18:29 -04:00
Sage Vaillancourt 8e30b24e8f Start work on hash-table objects. 2022-04-18 16:59:35 -04:00
Sage Vaillancourt 4ea3b1d36d Start work on forbble2.
Keep the old version around for now.
Add (indexOf) and (split) to lib.pbl
Distinct addToEnv() and setInEnv().
Add .clangd to gitignore.
2022-04-18 15:37:34 -04:00
Sage Vaillancourt 04b7e7b64a Centralize/simplify file-reading.
Handle comments at the token level.
2022-04-18 11:18:43 -04:00
Sage Vaillancourt e326af38f8 Allow number indexing of struct fields.
Better error messages on failed struct access.
2022-04-13 16:57:58 -04:00
Sage Vaillancourt 96d759a7e6 Merge branch 'master' of https://gitlab.com/sagev9000/pebblisp 2022-04-11 20:44:38 -04:00
Sage Vaillancourt 48b1f3c54b Correcting some REPL behavior.
Add BuildListNamed() macro for optimized list creation.
2022-04-11 20:43:45 -04:00
Sage Vaillancourt 7b014ebafa Fix (reduce) with lambdas.
Fix await memory leak.
Allow running specific tests with --run-test x (for valgrinding).
2022-04-11 16:38:49 -04:00
Sage Vaillancourt 7a0433aa68 Add funcyEval() for equivalent Func/Lambda eval.
Still a bit buggy.
Some general renaming for clarification.
2022-04-07 01:20:59 -04:00
Sage Vaillancourt 4d215b1b79 Add simple sigint handler for repl.
inline evalLambdaArgs() and evalBuiltIns()
2022-04-06 16:55:49 -04:00
Sage Vaillancourt abaf3a1ddc Use plfunc name in type-error messages.
Previously used the name of the C function.
2022-04-06 09:55:31 -04:00
Sage Vaillancourt deca6045ff More useful type-error messages.
BAD_PARAMS_ON -> BAD_PARAMS
Replace printType() with getTypeName().
Use --ignore-config in testing.
Add type-checking (and missing clone) to (await).
2022-04-06 09:51:53 -04:00
Sage Vaillancourt fc4f0bef28 Move main() etc. into main.c 2022-04-05 20:05:58 -04: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 1a13fe4814 Add `unused` macro.
Prefer malloc() over calloc() in env.c
2022-04-01 15:07:19 -04:00
Sage Vaillancourt 2fb6643326 A bit of cleanup and warning-hushing. 2022-03-31 14:12:52 -04:00
Sage Vaillancourt ac04fa1a96 Make pointer-printing in (penv) optional.
Colorize (penv) output.
2022-03-31 13:23:45 -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 d76e3f5341 Make (def) a normal function.
Remove (defe) for now.
2022-03-30 16:32:42 -04:00
Sage Vaillancourt 5779ad5427 Define function symbols at their declaration. 2022-03-29 19:00:01 -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 9a454e6a30 Small optimizations and cleanup. 2022-03-27 00:03:34 -04:00
Sage Vaillancourt 5226640fb6 Some stringing cleanup and unused code removal. 2022-03-26 12:54:38 -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 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 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 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 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 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 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 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 49bf4aa1a2 Add system calls and some char processing.
Color REPL error output.
Add 'clear' shorthand to REPL.
Add basic switch to lib.
2021-12-10 16:38:44 -05:00
= 3d8e2d30d4 Add LOW_MEM and SIMPLE_ERRORS flags for aplite.
LOW_MEM drops some functionality (like `defe`) for very low memory devices like
aplite. SIMPLE_ERRORS is enabled when compiling with LOW_MEM, and overrides the
new error-with-context functionality with older, less intensive methods.
Also marked more code for standalone compilation only.
2021-07-21 19:31:40 +01:00
Sage Vaillancourt 3d48c2eae0 Added `loadfile` to standalone.
Tests now manually load the library file, instead of needing it to be
installed.
2021-07-04 21:49:41 -04:00
Sage Vaillancourt 7c7a68df5f Add `iserr`, `defe`. Fix `eval`. Increase env size
`iserr` is a basic type-check like `isnum`
`defe` adds a string to the environment as the equivalent symbol
`eval` can take in variables or functions, instead of just raw strings
Broke type-printing into its own function
Errors maxing out an environment. Likely extending incorrectly
2020-11-06 15:07:12 -05:00
Sage Vaillancourt e0153528a1 Take input in standalone. Print numbers as chars 2020-11-02 16:38:37 -05:00
Sage Vaillancourt 963996f3a0 Add (eval) function, for evaluating strings
Added a few tests for this new function
2020-11-02 15:46:17 -05:00
Sage Vaillancourt 875228a2b6 Add `isstr` to type-checking collection 2020-11-02 15:29:03 -05:00