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
Sage Vaillancourt
c0ad4481bd
Fix tokens.c missing-error-code bug.
2021-12-15 14:25:09 -05:00
Sage Vaillancourt
d36f1bf162
Remove single-quote support for strings.
...
Add triple-quote support.
Switch to structs for handling errors.
2021-12-13 10:47:35 -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
Sage Vaillancourt
08432275c8
Correct and re-enable environment tests
2021-07-22 15:51:42 -04:00
=
ea04af7b6b
Remove unused BOUNDS type from PebbleObject
2021-07-22 17:08:53 +01:00
=
787aec6f95
Remove in-memory duplication of pebbles' code text
2021-07-22 14:34:26 +01:00
=
2cbe610b95
Correct FORCE_TEXT
2021-07-21 20:48:41 +01:00
=
58f73bc0f8
Simpler SIMPLE_ERRORS and new LOW_MEM FORCE_TEXT
2021-07-21 19:49:29 +01: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
=
c142730837
Errors can have context to make them more useful.
...
External:
Error changes.
User windows will show string reps of all object types
Internal:
Some re-org and renames in calc.
Add stringNObj for more controlled string-receiving.
Note: currently aplite has a hard time with larger scripts, possibly because of
recent changes. Not sure how much can be done about it, but I'm investigating.
2021-07-21 16:26:04 +01:00
=
06ab491b1e
Give result prefix its own definition
2021-07-16 01:33:17 +01:00
=
e58e5aeaa9
Some renames and general cleanup.
...
Added spaces after `cat` `map`, etc.
2021-07-16 01:20:36 +01:00
=
bdd8c3fae3
Add extra-small font for large amounts of text
2021-07-16 00:43:46 +01:00
=
a6f3fc96e6
Fixed bug where all func calls require an argument
...
Certain I/O functions (like `inp` or `repl`) do not need arguments, but
previously all functions required at least one argument to called correctly
(i.e. `(inp 0)` or `(repl "banana")`). Now, these can be called as intended:
`(inp)` or `(repl)`.
2021-07-13 21:46:15 +01:00
Sage Vaillancourt
811e9e3dd2
Breaking: Stop `def` adding vars to higher scopes
...
Fixed OOP error in allocating lambda environments. Add ability to disable test
groups. Disabled forbble tests and `switch` implementation (broken by `def`
change)
2021-07-12 20:34:54 -04:00
Sage Vaillancourt
ce28c84696
Slightly better error-handling in Forbble
2021-07-12 20:13:02 -04:00
Sage Vaillancourt
b222df047d
Only run tests if 'make' succeeded
2021-07-12 20:10:45 -04:00
Sage Vaillancourt
77cb35f961
Add newline print to lib and use it in examples
2021-07-10 23:35:05 -04:00
Sage Vaillancourt
f89417ab9e
Load script arguments into `args` list
...
For example, running "./do_math.pl 5 + 5" would define args as a list of
( /usr/bin/pl ./do_math.pl 5 + 5 ), where each of the five elements is a
string object. The arguments will also be loaded when opening the repl,
but NOT when writing pl code directly as command-line arguments (i.e.
'./pl "(* 9 9)"').
2021-07-10 22:46:31 -04:00
Sage Vaillancourt
96a47590f1
Left-align checkmarks for valgrind testing
2021-07-05 05:32:47 -04:00
Sage Vaillancourt
5a69d5730a
Add another Forbble test
2021-07-05 05:17:59 -04:00
Sage Vaillancourt
4974e87273
Disable Forbble REPL. Add Forbble-based tests
2021-07-05 05:09:32 -04:00
Sage Vaillancourt
d4d1f27a63
Corrects all known memory leaks
2021-07-05 05:08:37 -04:00
Sage Vaillancourt
c7d3d7f457
forbble stability and usability
2021-07-05 01:15:01 -04:00
Sage Vaillancourt
166c9d4889
Add simple 'switch' implemented in pbl
2021-07-05 01:14:39 -04:00
Sage Vaillancourt
77c9c39295
Check indexes etc for `at`
2021-07-05 01:13:59 -04:00
Sage Vaillancourt
6ec0da6353
Add anonymous lambda test
2021-07-05 00:26:29 -04:00
Sage Vaillancourt
dbaf57abad
Correct executable target location
2021-07-05 00:26:18 -04:00
Sage Vaillancourt
c9babe439d
Test display and code style tweaks
2021-07-05 00:18:14 -04:00
Sage Vaillancourt
2af48f63ca
More consistent whitespace in tests.sh
2021-07-04 23:56:55 -04:00
Sage Vaillancourt
0c9c876d00
Some type-check functions. Consistent 'if' styling
2021-07-04 23:48:26 -04:00
Sage Vaillancourt
6a2e12ebfe
More dense test output
2021-07-04 23:46:59 -04: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
cc199b0e57
Add Forbble comment
2020-11-08 16:44:53 -05:00
Sage Vaillancourt
fc3fcf34ed
Added missing cleanObject() call
2020-11-08 15:26:28 -05:00
Sage Vaillancourt
35f0a94f40
Add dup, rot, and over to Forbble example
2020-11-08 13:12:00 -05:00
Sage Vaillancourt
fe86f7c836
Add Forbble example code
...
Forbble is a very, very, simple implementation of Forth, written in PebbLisp.
Forbble isn't very practical, but has been a great test-bed for finding areas
where PebbLisp is particularly lacking in features, or expressiveness.
2020-11-08 12:31:45 -05:00
Sage Vaillancourt
a3fe0b075d
Remove lingering printObj() from defe
2020-11-08 11:48:50 -05:00
Sage Vaillancourt
18b1e28185
Script dir set in Makefile. Rename exec to `pl`
...
Changed install dir.
General cleanup of Makefile.
Added `make uninstall` to Makefile.
Tests still require that lib scripts already be installed to pass.
2020-11-07 00:14:19 -05:00
Sage Vaillancourt
0962601976
Move library-like functions into examples/lib.pbl
...
Remove `tip` demo function for now. May make a move toward a folder of
.pbl files to test with, and it will be re-included then.
2020-11-06 16:12:52 -05:00
Sage Vaillancourt
775be84f5f
Add examples/. Install to system on `make install`
...
Installs examples/* to /usr/share/pebblisp
A basic REPL is one of these examples, replacing the built-in C version
with one actually written in PebbLisp. It can be invoked the same way:
running `pl` without any arguments.
2020-11-06 15:40:41 -05: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
31fcf0c2d8
Try to skip double evaluations in list
2020-11-04 15:24:09 -05:00
Sage Vaillancourt
9da87f5674
Clean up after adding `codes[]`
2020-11-03 15:20:09 -05:00
Sage Vaillancourt
68705da88f
No longer evals (x) to x
2020-11-03 14:44:37 -05:00
Sage Vaillancourt
d8d8231f0d
Break up evalList() and document the new functions
2020-11-03 14:35:47 -05:00
Sage Vaillancourt
a39c6b2c53
Comments and renaming in evalDefArgs()
2020-11-03 09:46:34 -05:00
Sage Vaillancourt
8c71fd2242
Use more cloneObject()
2020-11-03 00:07:08 -05:00
Sage Vaillancourt
e0153528a1
Take input in standalone. Print numbers as chars
2020-11-02 16:38:37 -05:00
Sage Vaillancourt
f8176fef4f
Add plain stringFromSlice()
...
Doesn't try to ignore quote marks. objFromSlice() utilizes it, but should have the same behavior as before.
2020-11-02 15:55:55 -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
Sage Vaillancourt
78f5b98f9f
Don't print newlines on (prn) or last expr in file
2020-11-02 15:23:04 -05:00
Sage Vaillancourt
058bd302df
`def` can bind multiple vars at once
...
For example `(def (a b) (10 15))` binds `a` to 10, and `b` to 15
2020-11-02 13:42:37 -05:00
Sage Vaillancourt
3319fdf2c3
Lambdas return only last item. EOL file comments
...
Added (penv) to print the current environment
Changed "Duplicate" test to work with new Lambda structure
2020-11-02 12:40:42 -05:00
Sage Vaillancourt
ba74561bed
Increase MAX_TOK_CNT. Impact on watch unsure
2020-11-02 12:38:51 -05:00
Sage Vaillancourt
a408472494
Add '->' to lambda printing
2020-11-02 12:38:38 -05:00
Sage Vaillancourt
3a413c28fc
Attempting to correct some (def) weirdness
2020-11-02 07:58:09 -05:00
Sage Vaillancourt
f9cb2d544a
More robust comment processing
2020-11-02 07:57:13 -05:00
Sage Vaillancourt
54e2e09c5c
Add explicit (print) function
2020-10-30 14:36:44 -04:00
Sage Vaillancourt
99fc088d3e
Try to be less strict about whitespace in files
2020-10-30 09:52:46 -04:00
Sage Vaillancourt
b5648963a7
Correct string equality check
2020-10-30 09:07:09 -04:00
Sage Vaillancourt
b443a54822
Add `pre` for prepending to lists
2020-10-29 11:23:35 -04:00
Sage Vaillancourt
9486854267
Basic file execution
2020-10-29 11:18:06 -04:00
Sage Vaillancourt
94555e4497
Adding to env checks outer env for existing Object
2020-10-29 10:26:44 -04:00
Sage Vaillancourt
cb87fbdae6
Print missed symbol's name
2020-10-29 10:00:25 -04:00
Sage Vaillancourt
ef8e2cbc79
Remove wrong makefile listing
2020-10-29 09:11:34 -04:00
Sage Vaillancourt
130da5a70e
Merge branch 'master' of https://gitlab.com/sagev9000/pebblisp
2020-10-29 09:06:28 -04:00
Sage Vaillancourt
46516461eb
Add 'install' to Makefile
2020-10-29 09:04:32 -04:00
Sage Vaillancourt
7b649fdf16
Add `isnum` and some tests
2020-10-28 18:09:57 -04:00
=
ca51937926
Update README for recent changes. Remove aliases.
2020-08-09 23:37:28 +01:00
=
68e062e2e0
Add TYPE_OTHER, subscriptions, and PebbleObjects
...
Move most file-local variables from calc.h to calc.c (so calc.h can be included)
Quick hack to get simple TYPE_LAMBDA evaluated
Add pebcom files for time/vibe/eventually battery etc. functions
Add TYPE_OTHER, so that pebble-specific (and potentially other) objects can be used in PebbLisp
Created PebbleObject/PebbleType to work as a sort of tagged pointer, to be used as a TYPE_OTHER object
Add some functions for creating/editing windows and textlayers from within PebbLisp
Added subscribe(), enabling lambdas to be run at set time intervals
2020-08-09 20:03:02 +01:00
=
3f9d24c617
Fix signed/unsigned comparison
2020-08-04 22:04:11 +01:00
=
d87322b6a5
Some env.c refactoring and clean-up
2020-08-04 20:26:47 +01:00
=
b92768c5ec
Add script-calling. Tweak font size thresholds
...
Other clean-up
2020-08-04 18:30:40 +01:00
=
5644a46c3c
Add OTHER type. Auto-open script 0 on code-send
2020-08-03 16:21:04 +01:00
=
f318eb6b49
User-created windows close with back button
2020-08-03 14:17:49 +01:00
=
c0f7213110
Can now receive code snippets from a phone!
...
Font adjustment tries (cheaply) to account for newlines
2020-08-02 21:53:30 +01:00
=
a5ecb1b3aa
Added TODO. Text size adjusts with code length
...
Can handle hex and binary. Other cleanup
All tests pass
2020-08-02 21:16:26 +01:00
=
796a4cdc91
Added some expected-error tests
2020-06-12 23:50:36 +01:00
=
81d5a545cf
Some new list functions and better error handling
...
New list functions include (append) (at) (rest) and (reverse). Single quotes now supported for strings.
2020-05-28 15:28:28 +01:00
=
d041e7c5bb
Switch to new testing style
...
Do blocks of tests, and only report individual tests on error, to save space. Add more tests, including some for upcoming list functions
2020-05-28 15:25:36 +01:00
=
f0a8f6ca43
Start using switches to warn on unhandled types
2020-05-23 18:01:15 +01:00
=
44c9c7a8a1
Use malloc'd strings. Add filter function
2020-05-22 06:16:45 +01:00
=
ba2cf83759
Disable tests on `make debug`
2020-05-22 06:11:35 +01:00
=
20f1985e1d
Semicolons treated as whitespace between tokens
2020-05-22 06:06:34 +01:00
=
bf1ce6e6f6
Cleaned and reorganized and renamed stuff
2020-05-22 06:04:00 +01:00
=
199eef7681
Fix saving on Pebble. Break funcs into '...' menu
...
Bump to 0.2
2020-05-21 17:57:24 +01:00
=
3dee4eb8dc
Added SKIP_FIRST() macro for list iteration
2020-05-20 02:26:56 +01:00
=
7ad541eb02
Variableize Makefile and adjust pebble tokens
...
Also made repl() a void function
2020-05-20 01:37:15 +01:00
=
8bdf42f6fd
Revert "Add basic struct notion and tests."
...
This reverts commit 95762976c5
.
Turns out these structs are not implemented well.
2020-05-18 02:22:39 +01:00
=
95762976c5
Add basic struct notion and tests.
...
Don't auto-run tests in debug mode. Some new tests fail for list-related reasons (some work in the REPL).
2020-05-18 00:00:19 +01:00
=
80967b9275
Broke lib-type code into array. New numparse errs
2020-05-16 19:31:14 +01:00
=
c59789120c
Valgrind should only print errors in tests
2020-05-16 16:12:12 +01:00
=
c97cbe850c
Ensure plain lists have elements evaluated
...
Add relevant tests. Add new doc comments. Some code shifting.
Tests pass. Valgrind is clean.
2020-05-16 15:46:19 +01:00
=
efb151d0ef
All known memory leaks handled!
...
Watch the commented `if` -127,7 +137,10 @ Object eval for weird behavior
2020-05-16 04:22:08 +01:00
=
f488e29c54
Implement liberal string copying and destruction
2020-05-15 21:28:16 +01:00
=
82f1f03d7b
Clean up makefile and tests
2020-05-15 21:27:45 +01:00
=
58705b4aa9
Cat with `+`; Related tests. Reordered pebblisp.c
2020-05-15 05:43:08 +01:00
=
4c228f8fb1
Got Pebble compilation working again
2020-05-15 04:57:51 +01:00
=
1c82c6f726
Fixed some parsing (tests pass!). Some clean up.
2020-05-15 04:51:59 +01:00
=
45cbf51f50
Added valgrind op to tests. Added recursive test.
2020-05-15 04:50:53 +01:00
=
8a45444c52
Some clean-up. Removed NO_REPL (redundant via cli)
2020-05-11 06:15:44 +01:00
=
4f6aedc4fa
Begin adding support for Window creation
2020-05-11 06:15:24 +01:00
=
60d6022d46
Multi-statements in cmdline args. Added tests.
...
Commented out unnecessary deleteEnv() in main(). Was segfaulting. May be a bigger bug, there.
2020-05-10 19:16:50 +01:00
=
340af00a29
Enable multi-statements in one line. Break out env
2020-05-10 18:52:22 +01:00
=
263af226b7
Improved testing. Added `spent` and '"' to pebble
...
Tests automatically run on `make`. Removed breaking cleanObject() in parseEval()
2020-05-10 17:51:46 +01:00
=
d83fa29bb4
Began `cat` code and added `spent` demo func
2020-05-10 07:27:59 +01:00
=
874420b3d5
Adjusted func types to account for possible eval
...
Basic ops work with lists. For example (+ 5 (10 15)) => (15 20)
2020-05-10 04:53:10 +01:00
=
d9c860805f
Turns out recursion worked the whole time.
...
Fixed issue with too-small REPL input buffer...
2020-05-10 03:32:26 +01:00
=
cb945a1e41
Seem to have resolved bad nesting issue
...
copyList() now properly deep-copies.
Recursive functions still not working.
2020-05-10 01:39:01 +01:00
=
9fe35450df
Begin simple testing script
2020-05-09 19:58:28 +01:00
=
96abccec7e
Lead on nested function borkage (pebblisp.c:222)
2020-05-09 19:57:21 +01:00
=
3e62d57166
Commands can be issued as args to the executable
2020-05-08 17:08:14 +01:00
=
29aa001de8
Clean-up. Added startList(). Fixed `T` and `F`
2020-05-08 17:00:14 +01:00
=
1da347e612
Added more error-catching
2020-05-08 07:29:06 +01:00
=
944d9287dc
Increased token size! Added more doc comments.
2020-05-08 06:18:20 +01:00
=
73bfffcf55
Clean up printf cruft. Begin adding doc comments
2020-05-08 05:32:08 +01:00
=
3843e34a51
Big mess, but something in there got `map` working
2020-05-08 03:37:54 +01:00
=
a286943984
Busted `map` with less malloc
2020-05-08 01:32:01 +01:00
=
4bc3337dcd
Better handling of raw lists
2020-05-06 16:58:09 +01:00
=
7906e55220
Slight clean-up and error-catching
2020-05-06 08:09:25 +01:00
=
80ca6e1960
Add Object helpers (less redundancy). Add new errs
2020-05-06 07:12:58 +01:00
=
f2c09c0818
Some ops support several args e.g. (+ 1 2 3)
2020-05-06 06:00:40 +01:00
=
6616cadbd5
Name the executable from the makefile
2020-05-06 05:51:19 +01:00
=
42c9f24f85
Added PC makefile, and defines for debug on/off
2020-05-06 05:47:14 +01:00
=
63be5f9435
Corrected bad error printing on PC
2020-05-06 05:20:09 +01:00
Sage Vaillancourt
cab7ebc79a
Remove tags file. Add .gitignore
2020-05-06 04:33:24 +01:00
Sage Vaillancourt
17a85a3931
Script UI now mostly added
2020-05-06 04:33:24 +01:00
Sage Vaillancourt
359d8ed439
Lambdas begin to work!
2020-05-06 04:33:24 +01:00
Sage Vaillancourt
a3bf8ab864
Decent `if` and `def` support!
2020-05-06 04:33:24 +01:00
Sage Vaillancourt
77ff84fd30
Before breaking lists
2020-05-06 04:33:24 +01:00
Sage Vaillancourt
9ab907d014
Got results-as-operands working
2020-05-06 04:33:24 +01:00
Sage Vaillancourt
17b6bf12b4
The very basics work!
2020-05-06 04:33:24 +01:00
Michael E
7579d0b30c
Initial Commit
2020-05-06 04:33:24 +01:00