Commit Graph

15 Commits

Author SHA1 Message Date
Aryadev Chavali
9fcd22a03b Simplify build system
RELEASE and DEBUG builds have differing build flags, triggered by
setting RELEASE variable.  No longer doing object based compilation
because:
+ gcc is fast enough without it
+ stale code compilation bugs are annoying
+ having one output binary to clean-up is just easier when switching
build-types
2024-12-03 03:17:44 +00:00
Aryadev Chavali
82eec8b529 Implement buffer_t functions to make it stretchy 2024-12-03 03:17:44 +00:00
Aryadev Chavali
c824772fc7 Introduce some nice typedefs in lib.h 2024-12-03 00:21:33 +00:00
Aryadev Chavali
4c179d7453 Add License 2024-12-03 00:11:44 +00:00
Aryadev Chavali
f66b34ec4d Added a README 2024-12-03 00:05:06 +00:00
Aryadev Chavali
9bbfa7d2cd Some general reworking, error handling 2024-12-03 00:04:40 +00:00
Aryadev Chavali
623b3acc1f Added some examples to test the interpreter 2024-12-03 00:02:12 +00:00
Aryadev Chavali
c2a4eb3985 Debug messages
Flag which provides some helpful messages for debugging.
2023-09-02 18:06:22 +01:00
Aryadev Chavali
a4f548f3ee Interpreter COMPLETE!
Really easy implementation considering opcodes are super simple.  I
was right to implement the loop_ref system so at parse time we have
resolved references and don't need to do it at runtime (helps with
compilation I guess as well).
2023-09-02 16:24:55 +01:00
Aryadev Chavali
e5cba43a0e New module for parser functions
Same principle as main->lib (previous commit).
2023-09-02 16:14:49 +01:00
Aryadev Chavali
c9b6b04d19 New module for functions I no longer need to work on
lib.(h|c) basically has structures and functions I no longer want to
stare at in main.c
2023-09-02 16:14:43 +01:00
Aryadev Chavali
f1891b0c2e Better command line usage
Now you can use command line arguments to list a set of input files
for the interpreter to use.

Currently outputs the data parsed per file.
2023-09-02 16:06:09 +01:00
Aryadev Chavali
89b9c0f94d Chunk allocator for file handling
Apparently you can't just `fseek` because it's "not portable" and
"deeply offensive" or whatever, so here's a really dirty chunk based
allocator which uses `fread` to just read chunks of data at a time and
basically runs around this issue.

While it's slower than an fseek solution for general files, this
solution allows pipes and other _weird_ things that count as "files"
to just werk.
2023-09-02 15:52:40 +01:00
Aryadev Chavali
7d369f6fad Better error reporting
Using a buffer structure allows me to pass more information to
callers and a bit more discretion over how data is passed.

Better error reporting via having a file handle and reporting it
Emacs/GCC style.
2023-09-02 15:39:51 +01:00
Aryadev Chavali
2d33640c03 INIT
Simple parser, took like an hour.

Not very smart but at least it's like O(n).
2023-09-02 15:21:56 +01:00