Commit Graph

9 Commits

Author SHA1 Message Date
Jose Luis Montañes Ojados
dd67537598 Add string type support: literals, concatenation, println, and if eval
- Implement string literal tokenization and parsing (lexer + parser)
- Add string concatenation with + operator in evaluator
- Add println keyword for printing with newline
- Add NODE_IF evaluation in VM
- Fix null terminator bug in string concat buffer
2026-02-16 17:40:12 +01:00
Jose Luis Montañes Ojados
84b3abbfda Add while loops, GC mark-and-sweep, and malloc block reuse
- Lexer: add INDENT/DEDENT tokens, <, >, : operators, while keyword,
  closing DEDENT emission, include guards
- Parser: add NODE_WHILE with while_loop union, parse while/cond/body
  blocks, include guards
- Eval: add while loop evaluation, GC integration with roots from env,
  debug and gc flags, <, > comparison operators
- GC: implement mark-and-sweep collector with 3 stages (mark roots,
  sweep unmarked, join free blocks)
- Allocator: block reuse via first-fit search with splitting, exponential
  heap growth, NULL check on malloc, include guards, marked field in metadata
- Object: add include guards, fix include to use allocator.h
2026-02-16 04:55:52 +01:00
Jose Luis Montañes Ojados
01740d4892 Add evaluator with environment and file-based execution
Implements recursive AST evaluator with variable environment,
reads .j files from command line args, and executes programs
end-to-end (lexer -> parser -> eval).
2026-02-16 02:08:54 +01:00
Jose Luis Montañes Ojados
e2896fac5b Add lexer, parser and AST debug printer
Implements tokenizer for basic tokens (INT, ID, ASSIGN, PLUS, MINUS, NEWLINE, PRINT),
recursive descent parser for assignments and binary expressions, and
tree-formatted AST visualization with ast_debug().
2026-02-16 01:36:41 +01:00
Jose Luis Montañes Ojados
d14227efeb Add list type, obj_free for compound types, and self-reference guard
- Implement OBJ_LIST with offset-based items array and capacity
- obj_free now releases child allocations (string buffer, list items)
- obj_print detects self-referencing lists to prevent infinite recursion
- Visualizer distinguishes freed blocks (JLANG_NOT_USE) from active ones
- JLANG_free now zeroes payload on release
2026-02-16 00:33:02 +01:00
Jose Luis Montañes Ojados
13c9d052a0 Refactor allocator to use offsets instead of absolute pointers
JLANG_malloc now returns size_t offsets relative to the heap buffer,
making all references stable across heap growth (realloc). Object API
updated accordingly: constructors return offsets, obj_print/obj_free
receive (allocator, offset). Added heap auto-grow when out of space.
2026-02-15 23:17:51 +01:00
Jose Luis Montañes Ojados
5dc0946a19 add JLANG_free and Object 2026-02-15 22:12:19 +01:00
Jose Luis Montañes Ojados
c90883ac27 base allocator logic 2026-02-15 20:57:19 +01:00
Jose Luis Montañes Ojados
74b426e12d first commit 2026-02-15 20:48:01 +01:00