| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Fix CI.
|
|
|
|
|
|
|
|
|
|
|
| |
Now all implemented phases of the SubX translator in SubX support the new
syntax:
✓ hex.subx (no changes required)
survey.subx (not yet started)
✓ pack.subx (fixed here)
✓ assort.subx
✓ dquotes.subx (has failing tests for other reasons)
|
|
|
|
|
|
|
| |
Clean up some old TODOs related to our pre-mmap limitations.
Also caught another case of using the wrong comparison. When comparing
addresses, one must always use unsigned rather than signed jump instructions.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Still some failing tests:
- emit-string-literal-data doesn't ignore metadata when computing the
length of literal strings
- emit-string-literal-data doesn't handle escape sequences
One issue doesn't have a failing test:
- emit-metadata doesn't handle string literals containing '/'
All these open issues involve a common design question: how to parse a
'word' that includes a string literal that may include spaces.
For everything else I know words can't contain spaces and datums can't
contain slashes. But for string literals things are tougher.
|
|\
| |
| |
| |
| | |
dquotes.subx is now segfaulting after this merge. Seems to be trying to
use addresses from the old stack.
|
| |
| |
| |
| |
| | |
Skimping on tests; the code changes seem pretty trivial. Will this fix
CI?!
|
| |
| |
| |
| |
| |
| |
| | |
Pretty blunt for now; just abort the entire program on any failure to write.
I'm encountering it because I'm somehow treating a stream address as a
file descriptor. Maybe mmap is returning addresses below 0x08000000?
|
| |
| |
| |
| |
| | |
Bugfix: I'd neglected to update the input stream's state when natively
writing a stream to file.
|
| | |
|
|\|
| |
| |
| | |
Segfault in this branch is now fixed.
|
| |
| |
| |
| |
| | |
All tests passing now. Things are very explicit; before a program can `allocate`
memory, it has to first obtain a segment from the OS using `new-segment`.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
These are variants of write-byte-buffered and print-byte-buffered respectively
that operate on in-memory `stream`s rather than `buffered-file`s.
They don't operate on files, so we'll avoid using the prefix 'write-'.
|
|/
|
|
|
| |
Operations on buffered-file now always include the word 'buffered'. More
verbose, but hopefully this highlights holes in the library.
|
| |
|
| |
|
|
|
|
|
| |
Pull in a _different_ function than `next-word` (commit 5092) into a shared
file between phases. Let's see how this goes.
|
|
|
|
|
|
|
| |
Realization: 'next-word' can't be reused in converting string literals,
because it has to understand string literals.
Let's just keep each phase self-contained.
|
|
|
|
|
|
|
| |
Start using the new newline escape in string literals everywhere.
I could use it more aggressively, but it makes tests harder to read. So
only one line of text per string for now.
|
|
|
|
|
|
|
|
| |
Fix CI.
For some reason allocating 4KB natively on Linux triggers a segfault. Temporarily
reducing segment size to 256 bytes; that's large enough for the test. But
it's not a long-term solution. Maybe I need to grow the heap with sbrk()?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Current plan for SubX translator:
$ cat files.subx ... |assort |pack |survey |hex > a.out
Higher-level notations will be inserted at the start of the pipeline. The
first (and needed for bootstrapping) is for string literals.
$ cat files.subx ... |string-literals |assort |pack |survey |hex > a.out
Alternatively, we should check how often we use string literals and just
convert them by hand.
They're used all over in tests, and converting them would make tests hard
(even harder) to read.
|
| |
|
| |
|
| |
|
| |
|
|
|