ISSOtm
3fe2fa43bb
Switch to GNU Bison as a dependency
...
First step for #595
2020-12-09 20:30:31 +01:00
ISSOtm
ede982b50a
Bump patch level appropriately
...
*HEADDESK*
2020-12-09 20:30:31 +01:00
ISSOtm
319d775c13
Add CI script to create docs on new releases
2020-12-09 16:08:43 +01:00
ISSOtm
44124319a6
Work around old Bison versions not forward-declaring yyparse
...
Notably, macOS still ships 2.3 (from 2008)...
Should fix #214
2020-12-09 16:00:22 +01:00
ISSOtm
462fd7539c
Prohibit nested macros
...
After discussion (starting there:
https://github.com/gbdev/rgbds/pull/594#issuecomment-706437458
), it was decided that plain nested macros should not be
allowed.
Since #590 is fixed, EQUS can be used as a workaround;
multiline strings (#589 ) will make that easier on the
user when implemented.
Fixes #588 , supersedes and closes #594 .
Additionally, closes #388 .
2020-12-09 10:44:39 +01:00
ISSOtm
f16e34b804
Fix captures beginning in expansions
...
Fixes #590
2020-12-09 09:54:55 +01:00
ISSOtm
c3ccdc548e
Remove unnecessary flex dep from Dockerfile
2020-12-09 09:42:19 +01:00
ISSOtm
fd721ca480
Document optional RB/RW/RL argument
2020-12-09 09:39:46 +01:00
ISSOtm
eac365aef0
Allow argument to rb, rw and rl to be optional
...
Fixes #617
2020-12-09 09:31:47 +01:00
ISSOtm
4de6266442
Add explanation of how EXPORT works
...
Fixes #608
2020-12-08 21:07:24 +01:00
ISSOtm
213d985e17
Fix incorrect "sliced" INCBIN causing memory leaks
...
Oh, how I miss RAII...
2020-11-29 12:47:53 +01:00
ISSOtm
de76dcb8fb
Fix possible segfault from -MT and -MQ
...
Happened only if `malloc` failed, so...
2020-11-29 12:47:53 +01:00
Eldred Habert
30fb6bde5e
Merge pull request #615 from ISSOtm/find-sym
...
Create specialized symbol finder functions
2020-11-25 15:17:34 +01:00
ISSOtm
4f842a1248
Create specialized symbol finder functions
...
The old "find symbol with auto scope" function is now three:
- One finds the exact name passed to it, skipping any checks
This is useful e.g. if such checks were already performed.
- One checks that the name is not scoped, and calls the first.
This is useful for names that cannot be scoped, such as checking for EQUS.
Doing this instead of the third should improve performance somehwat, since
this specific case is hit by the lexer each time an identifier is read.
- The last one checks if the name should be expanded (`.loc` → `Glob.loc`),
and that the local part is not scoped. This is essentially the old function.
2020-11-21 01:06:17 +01:00
ISSOtm
cc4d455b8a
Add test for empty local label component
2020-11-21 00:58:40 +01:00
Eldred Habert
0bb5efebfd
Merge pull request #610 from daid/stdin
...
Allow rgbasm and rgblink to use stdout and stdin as input and output
2020-11-08 01:20:44 +01:00
ISSOtm
b6bf7ae620
Fix RGBLINK incorrectly reading file stack nodes
...
This caused node IDs to mismatch, yielding possibly corrupted file stacks
Worst part is, the docs mentioned the reading order had to be reversed...
2020-11-04 02:52:06 +01:00
ISSOtm
dc96cc6d1e
Add zsh completion scripts
...
Can't get bash ones to work, but these do.
2020-11-03 23:29:47 +01:00
ISSOtm
0c55703438
Improve helpers.h
...
Use C11 standard _Noreturn instead of attributes (except, of course, MSVC)
Remove unused helpers
Avoid trapping in release builds, in favor of just unreachability
Improve shim when __builtin_* are not available
2020-10-26 15:19:31 +01:00
ISSOtm
6c57ad2226
Have make clean delete parser artifacts
...
Forgot to update the names there
2020-10-25 16:26:58 +01:00
ISSOtm
9028fb5391
Fix mistakes in RGBDS man pages
...
As reported by `mandoc -Wall`
2020-10-23 01:02:59 +02:00
ISSOtm
12dc49b60a
Make page processor print usage only after reporting all bad opts
2020-10-23 00:40:05 +02:00
Eldred Habert
7e1d20acdf
Merge pull request #607 from anderoonies/inline-comment-#537
...
handle inline c-like comments in lexer
2020-10-19 19:36:49 +02:00
Eldred Habert
42b3a17356
Merge pull request #602 from NieDzejkob/shiftstorm
...
Report only one error when invalid shift has argument
2020-10-13 15:48:16 +02:00
ISSOtm
4ce4fdec71
Mention setting CMAKE_BUILD_TYPE to Release when using CMake
...
Not *necessary*, but if you don't know better, you should probably use it.
Fixes rgbds-www#9
2020-10-13 11:37:25 +02:00
Eldred Habert
05256946ac
Merge pull request #604 from NieDzejkob/narg-overwrite
...
Don't overwrite symbol when it's not allowed
2020-10-13 10:47:57 +02:00
Eldred Habert
73396166aa
Merge pull request #605 from NieDzejkob/invalid-labels
...
Don't consider difference of invalid labels constant
2020-10-13 10:42:05 +02:00
Eldred Habert
e4f5df1306
Merge pull request #603 from NieDzejkob/rpn-realloc
...
reserveSpace: don't assume one doubling is enough
2020-10-12 12:26:44 +02:00
ISSOtm
71d8aeb4c2
Add CMake defines to enable tracing lexer and parser
2020-10-12 09:02:21 +02:00
Eldred Habert
0836f67d42
Merge pull request #601 from NieDzejkob/utf8decoder
...
utf8decoder: Use byte-sized byte argument
2020-10-12 01:49:57 +02:00
Eldred Habert
176a57a1e9
Merge pull request #600 from NieDzejkob/stray-shift
...
Report error when shifting outside a macro
2020-10-12 01:44:10 +02:00
Eldred Habert
0d02355dbf
Merge pull request #599 from NieDzejkob/stray-align
...
Report error when aligning outside of a section
2020-10-12 01:43:35 +02:00
ISSOtm
2dd9015dc6
Remove two stale variables from parser.y
...
They were made useless with the lexer rewrite
2020-10-12 00:52:12 +02:00
ISSOtm
0b1d01792d
Indicate cur offset in linkerscript "backwards org" message
2020-10-12 00:04:08 +02:00
ISSOtm
01637768cf
Rename asmy to more explicit parser
...
This should make the purpose of that file clearer to newcomers
2020-10-11 21:03:41 +02:00
ISSOtm
6a8ae643d5
Mention that SHIFT updates _NARG
...
Fixes #598
2020-10-11 02:13:30 +02:00
ISSOtm
fd83d46ba0
Enable master docs update workflow always
...
There seems to be no way to make the check work, and Actions are disabled
in forks by default anyways.
2020-10-11 02:04:09 +02:00
ISSOtm
914856342c
Fix incorrect documentation of accepted sym names
...
No, they cannot start with a digit!
2020-10-11 01:57:27 +02:00
Eldred Habert
91889fc14a
Merge pull request #593 from Rangi42/issue586
...
Fix #586 : Update the `charmaps` hashmap when an existing charmap is resized
2020-10-10 02:15:04 +02:00
Eldred Habert
f9daf27511
Merge pull request #585 from ISSOtm/msvc-ci
...
Add MSVC in CI
2020-10-06 17:48:13 +02:00
ISSOtm
06f7387466
Avoid using VLA in EQUS dumping
...
MSVC does not support those...
Also add a `develop` warning about VLAs, to avoid future incidents
2020-10-06 08:55:45 +02:00
ISSOtm
21e50eeff1
Have lexer not require <unistd.h> on MSVC
...
Required for `open`, `close`, `read`, and `STDIN_FILENO`,
which are defined elsewhere on MSVC.
2020-10-06 08:55:45 +02:00
ISSOtm
fd4cec93cd
Compile with MSVC as well in CI
2020-10-06 08:55:41 +02:00
ISSOtm
92f2055a6c
Fix implicit cast between enums
...
This caused `make develop` to fail
2020-10-05 01:53:54 +02:00
Eldred Habert
be9b1198e9
Merge pull request #584 from Xeyler/master
...
Add directory summary to README.rst
2020-10-04 20:20:08 +02:00
Eldred Habert
fdfc02ab96
Merge pull request #583 from JL2210/cmake-build-type
...
Modularize CMake build configuration
2020-10-04 19:45:20 +02:00
Eldred Habert
fc7f042ad6
Merge pull request #551 from NieDzejkob/errors-after-unknown-symbol
...
link: Suppress cascading errors.
2020-10-04 19:43:38 +02:00
Eldred Habert
3036b58598
Merge pull request #557 from ISSOtm/new-lexer-electric-boogaloo
...
New lexer 2 — Electric Boogaloo
2020-10-04 16:45:47 +02:00
ISSOtm
2eca43cd2d
Fix critical oversight in lexer buffer refilling
...
Since the lexer buffer wraps, the refilling gets handled in two steps:
First, iff the buffer would wrap, the buffer is refilled until its end.
Then, if more characters are requested, that amount is refilled too.
An important detail is that `read()` may not return as many characters as
requested; for this reason, the first step checks if its `read()` was
"full", and skips the second step otherwise.
This is also where a bug lied.
After a *lot* of trying, I eventually managed to reproduce the bug on an
OpenBSD VM, and after adding a couple of `assert`s in `peekInternal`, this
is what happened, starting at line 724:
0. `lexerState->nbChars` is 0, `lexerState->index` is 19;
1. We end up with `target` = 42, and `writeIndex` = 19;
2. 42 + 19 is greater than `LEXER_BUF_SIZE` (= 42), so the `if` is entered;
3. Within the first `readChars`, **`read` only returns 16 bytes**,
advancing `writeIndex` to 35 and `target` to 26;
4. Within the second `readChars`, a `read(26)` is issued, overflowing the
buffer.
The bug should be clear now: **the check at line 750 failed to work!** Why?
Because `readChars` modifies `writeIndex`.
The fix is simply to cache the number of characters expected, and use that.
2020-10-04 16:10:32 +02:00
ISSOtm
c24694233f
Fix incomplete duplication of REPT nodes
...
"Initialization, sizeof, and the assignment operator ignore the flexible array member."
Oops!
2020-10-04 04:46:01 +02:00
ISSOtm
423a7c4899
Handle \\r better
...
Translate it to \\n regardless of the lexer mode
2020-10-04 04:46:01 +02:00
ISSOtm
ee9e45b3d4
Change assertion condition in __FILE__ buf dumping
...
Removes a false positive from Clang static analysis
2020-10-04 04:46:01 +02:00
ISSOtm
5a65188ca9
Implement compact file stacks in object files
...
Gets rid of `open_memstream`, enabling Windows compatibility again
Also fixes #491 as a nice bonus!
2020-10-04 04:46:01 +02:00
ISSOtm
930080f556
Mark not unmapping macro-containing files as okay
...
There isn't really a better alternative.
Making several mappings instead requires too much bookkeeping.
2020-10-04 04:46:01 +02:00
ISSOtm
8e7afb0ab3
Move some MSVC-specific defines to platform.h
2020-10-04 04:46:01 +02:00
ISSOtm
138523570e
Fix possible uninitialized read on Windows
2020-10-04 04:46:01 +02:00
ISSOtm
82469ac0fd
Shim around mmap on Windows
2020-10-04 04:46:01 +02:00
ISSOtm
96cb5e10ed
Fix range-dependent dead code in recursion depth check
2020-10-04 04:46:01 +02:00
ISSOtm
b224cab3e0
Harmonize printing distance
2020-10-04 04:46:01 +02:00
ISSOtm
7381d7b92f
Remove unnecessarily nested symbol data union
2020-10-04 04:46:01 +02:00
ISSOtm
dbef51ba05
Move isWhitespace to a place where it makes more sense
2020-10-04 04:46:01 +02:00
ISSOtm
c952dd8a6e
Fix fixed-point constants not working correctly
...
And added a test to check their behavior
2020-10-04 04:46:01 +02:00
ISSOtm
b65ea64a58
Add newlines to all test output
...
MacOS treats them differently, for some reason.
2020-10-04 04:46:01 +02:00
ISSOtm
542b5d18f1
Fix possible capture buffer size overflow
...
Attempt to grow it to the max size first.
Seriously, if this triggers, *how*
2020-10-04 04:46:01 +02:00
ISSOtm
71a0a42cfb
Fix C2x use of static_assert
2020-10-04 04:46:01 +02:00
ISSOtm
ac011fe69f
Use common function to discard comments in macro args
2020-10-04 04:46:01 +02:00
ISSOtm
9e3d7a50e6
Handle comments in line continuations
2020-10-04 04:46:00 +02:00
ISSOtm
e33c2ad6a2
Fix INCLUDE ignoring -MG
2020-10-04 04:46:00 +02:00
ISSOtm
615f1072d9
Fix readFractionalPart never shifting characters
2020-10-04 04:46:00 +02:00
ISSOtm
f7b7a97407
Prevent expanding macro args in comments
...
Also use a cleaner way, instead of hardcoding to capture
2020-10-04 04:46:00 +02:00
ISSOtm
ece6853e0f
Implement opt b and opt g
2020-10-04 04:46:00 +02:00
ISSOtm
b7b03ee451
Fix "REPT 0" not being a no-op
2020-10-04 04:45:59 +02:00
ISSOtm
f9b48c0cad
Fix else working incorrectly from macros
...
Since the "skip ELSE blocks" variable is global, it used to get carried
over from the macro's `if` to the outer's.
2020-10-04 04:45:59 +02:00
ISSOtm
aa76603da9
Add line+col trace info to lexer
2020-10-04 04:45:59 +02:00
ISSOtm
b83b9825f8
Fix _NARG crashing outside of macros
...
And add a test for it
2020-10-04 04:45:59 +02:00
ISSOtm
d641972cde
Fix macro args not being restored when exiting macros
2020-10-04 04:45:59 +02:00
ISSOtm
4d1333e124
Fix incorrect error reporting of INCLUDEd files
2020-10-04 04:45:59 +02:00
ISSOtm
35396e6410
Fix files being unmapped when still referenced by macros
2020-10-04 04:45:59 +02:00
ISSOtm
8d18b39eee
Support missing register tokens
...
Made possible by #491
2020-10-04 04:45:59 +02:00
ISSOtm
ae77893021
Fix file name reporting
...
As noted in the function's code, this is very error-prone, but
will do the job; this needs rewriting due to #491 anyways, so, temporary.
2020-10-04 04:45:59 +02:00
ISSOtm
baeb180acd
Apply error reporting changes to tests
2020-10-04 04:45:58 +02:00
ISSOtm
fd02ffb7bd
Implement __FILE__ symbol
...
Also clean up built-in symbol creation
This is not great, but currently okay.
Should be fixed later, like the rest...
2020-10-04 04:45:58 +02:00
ISSOtm
62ecdce0b0
Fix line-continuation-macro test
2020-10-04 04:45:58 +02:00
ISSOtm
e4f2fad215
Support line continuations in main scope
2020-10-04 04:45:58 +02:00
ISSOtm
3f5f9bcaf0
Fix numeric constant overflow checks
2020-10-04 04:45:58 +02:00
ISSOtm
08867b3cec
Enable catching invalid macro arg 0
2020-10-04 04:45:55 +02:00
ISSOtm
9081feab51
Reinstate macro arg scan distance
...
Used to be broken, so it was removed, but doing so prevents escaping them.
So it was instead put back in, but with corrected behavior
2020-10-04 04:39:27 +02:00
ISSOtm
cf992164f7
Fix lexer capture sometimes not being reset
2020-10-04 04:39:27 +02:00
ISSOtm
b27b821e7f
Fix RAW lexer length underflow
...
Also added an assertion to check against more such overflows
2020-10-04 04:39:26 +02:00
ISSOtm
d9ecaabac1
Add debug tracing code to lexer
...
Hidden behind a #define, like YYDEBUG
2020-10-04 04:39:26 +02:00
ISSOtm
cd747d8175
Fix many lexer bugs
...
More to come...
2020-10-04 04:39:25 +02:00
ISSOtm
df75fd2ec2
Fix expansion reporting being incorrect
2020-10-04 04:38:53 +02:00
ISSOtm
adcaf4cd46
Fix crash when no macro args are being used
2020-10-04 04:38:53 +02:00
ISSOtm
81a77a9b88
Re-implement block copy to avoid expanding macro args
...
They were expanded during the capture, and there was no easy way to
avoid expanding them (believe me, after three hours and somehow an OOM, I
gave up trying).
2020-10-04 04:38:53 +02:00
ISSOtm
6e805cd318
Implement macro args
...
This finally allows running 90% of the test suite, debugging time!
2020-10-04 04:38:53 +02:00
ISSOtm
e11f25024e
Add test for built-in file symbol
...
It's currently defined in fstack.c, making it more prone to accidental
dropping. Let's not repeat the 0.3.9 scenario...
2020-10-04 04:38:53 +02:00
ISSOtm
7c895f8a1b
Fix diagnostic formatting
...
Missing colon and space after the file stack
2020-10-04 04:38:53 +02:00
ISSOtm
38bda7e1bb
Fix string expansion reporting
...
More expansions were allowed than the limit specified, and reporting code
did not account for the extra one that caused overflow
2020-10-04 04:38:52 +02:00
ISSOtm
149db9a022
Fix incorrect freeing of expansions
...
Freeing an expansion should free its children, not its siblings...
Fixes a use-after-free reported by scan-build. Nice catch!
2020-10-04 04:38:52 +02:00
ISSOtm
fed252bc49
Fix nested expansions being incorrectly handled
...
The biggest problem was simply that the length of children expansions was
not accounted for when skipping over the parent... this took a lot of
arduous debugging, but it finally works!
2020-10-04 04:38:52 +02:00