Rangi
538395b92c
Prevent simple syntax highlighters from breaking on /* in a string
2025-09-29 11:11:40 -04:00
Rangi
634fd853d1
Factor out a single parseNumber utility function ( #1839 )
2025-09-22 15:15:24 -04:00
Rangi42
d8aff148bb
Factor out RRANGE macro like RANGE
2025-09-19 16:53:44 -04:00
Rangi
e31bcabbaa
Implement === and !== string comparison operators ( #1832 )
2025-09-19 14:06:36 -04:00
Rangi
67741ab428
Trim left space from macro args, even past block comments ( #1831 )
2025-09-19 13:44:18 -04:00
Rangi42
1dfc1d3231
Factor out isBinDigit and parseHexDigit utility functions
2025-09-04 13:23:10 -04:00
Rangi42
cc96b4d517
Two small improvements
...
- Check whether `.read()` completed
- `.reserve()` expected space ahead of time
2025-09-01 11:46:41 -04:00
Rangi42
0ccdbf509a
Simplify format specs to not use a per-character state machine
2025-08-30 12:23:01 -04:00
Rangi
531278961f
Require underscores to actually be digit separators ( #1812 )
...
Multiple, trailing, or next to decimal point are errors
2025-08-30 10:44:20 -04:00
Rangi42
fcfc931867
Shorten lexing of simple tokens
2025-08-20 22:37:03 -04:00
Rangi
3d155d5695
Some refactoring and cleanup ( #1806 )
...
* Use clang-tidy `misc-include-cleaner` for IWYU `#include` cleanup
* Use `std::optional<size_t>` instead of `ssize_t`
* Rename some functions in linkdefs.hpp
* Fix header order
2025-08-20 16:09:04 -04:00
Rangi42
386fb5f398
Add more character utility functions
2025-08-19 19:17:40 -04:00
Rangi42
94e9ef5213
Factor shared code out of lexer_CaptureRept and lexer_CaptureMacro
2025-08-19 18:11:50 -04:00
Rangi
b7e0783ae7
Implement ? suffix to "quiet" a context and exclude it from backtraces ( #1800 )
2025-08-18 21:34:58 -04:00
Rangi
272019beb0
Fix line numbers from nested expansions ( #1802 )
2025-08-14 11:13:50 -04:00
Rangi
db6793f444
Don't count single quote ' as garbage ( #1801 )
...
Also copy the "blank space" (space or tab) vs "whitespace" (space,
tab, or newline) convention from `<ctype.h>`
2025-08-14 10:10:59 -04:00
Rangi
7b405513d9
Make quote marks consistent in error/warning messages ( #1791 )
...
- "Double quotes" for strings (filenames, section names, CLI option arguments, etc)
- 'Single quotes' for characters and CLI option flags
- `Backticks` for keywords and identifiers (symbol names, charmap names, etc)
CLI option flags also have their leading dashes
2025-08-12 15:24:21 -04:00
Rangi
5f8b7474b4
Add -B/--backtrace option to RGBASM and RGBLINK ( #1787 )
2025-08-11 14:30:14 -04:00
Rangi42
2130a5ba1f
Error messages refer to "undefined" symbols and sections
2025-08-08 19:47:42 -04:00
Rangi
e41ce49698
Only print one warning for too-large integer constants, not one per digit ( #1781 )
...
This also makes all too-large integer constants evaluate to 0.
2025-08-08 18:58:38 -04:00
Rangi
39f0f9edc0
Remove previously deprecated features ( #1777 )
...
- Treating multi-unit strings as numbers
- `rgbasm -Wnumeric-string`
- `ldio [c], a` and `ldio a, [c]` (use `ldh`)
- `ld [c], a` and `ld a, [c]` (use `ldh`)
- `ldh [$xx], a` and `ldh a, [$xx]` (use `$FFxx`)
2025-08-05 16:24:10 -04:00
Rangi42
504a45a4ed
Reuse isWhitespace and isNewline, also refactoring readAtFile
2025-08-05 13:46:53 -04:00
Rangi42
f1fd3abcff
Don't bother searching the keywordDict for local labels
2025-08-05 10:49:09 -04:00
Rangi42
2cae47a5a2
Color verbose output as magenta
...
Output RGBASM's lexed tokens at level 5 (TRACE)
2025-08-05 00:00:57 -04:00
Rangi42
ac75a085fa
Refactor lexer_CaptureRept and lexer_CaptureMacro
2025-08-04 23:26:29 -04:00
Rangi42
0c1b422c36
Refactor some redundant lexer code
2025-08-04 22:43:34 -04:00
Rangi
23ce888d65
Use colored/styled text output for diagnostics and usage info ( #1775 )
2025-08-04 17:02:24 -04:00
Rangi42
543b7fa6c2
Use std::nothrow for the only new expression
...
Ideally we'd use `std::make_shared`, but it has insufficient compiler
support for array types
2025-08-02 22:52:20 -04:00
Rangi
752b273aec
Extend RGBASM and RGBLINK verbosity flags to have multiple levels like RGBGFX ( #1772 )
2025-08-02 17:10:10 -04:00
Rangi42
b51056f743
Fix "while expanding symbol" error message
...
Fixes #1771
2025-08-01 16:25:44 -04:00
Rangi42
db2cda790c
Factor out a single consumeChar function
...
This and `peek` are the only functions that should call the low-level
`peekChar` and `peekCharAhead` methods.
2025-08-01 12:12:22 -04:00
Rangi42
86b43ea14f
Fix interpolation after empty string literal
2025-07-31 15:17:11 -04:00
Rangi42
6d53bc4121
Simplify toggling of enabling/disabling expansions
2025-07-31 07:19:04 -04:00
Rangi42
6d05de9d4d
Remove a little no-longer-necessary header boilerplate
2025-07-29 11:22:31 -04:00
Rangi42
d21e6669ce
Unrefactor peek() to use tail recursion instead of a loop
...
Profiling RGBDS on building pret/pokecrystal reveals commit
cfe1f60e47 as a clear outlier
among the past few hundred commits for reducing performance
(an 8% increase on my machine from ~5 to ~5.4 seconds).
2025-07-29 00:24:51 -04:00
Rangi42
2341d1ee50
Replace platform-specific mmap with reading the entire .asm file
2025-07-28 20:50:48 -04:00
Rangi42
75aed1afd5
Factor out an UpperMap for case-insensitive matching
2025-07-28 00:00:24 -04:00
Rangi42
a353637a90
Split RGBLINK linkerscript parser functions into their own file
2025-07-27 11:31:25 -04:00
Rangi42
d6a28a6259
Prefer pre-increment/decrement operators in for loops
2025-07-24 18:08:17 -04:00
Rangi42
c6d0e8de63
Improve some error messages
2025-07-24 11:19:04 -04:00
Rangi42
5f333d9753
More refactoring around extern variables
2025-07-21 19:22:10 -04:00
Rangi42
d1493a9f96
Group extern RGBASM variables in an Options struct
2025-07-21 19:02:21 -04:00
Rangi42
9e0e7ef9a1
Improve RGBASM test coverage
2025-07-20 13:13:45 -04:00
Rangi42
2dc948fefb
Miscellaneous refactoring
2025-07-20 12:28:59 -04:00
Rangi42
e3a5290dad
Restore blue-painting of macro arg expansions to prevent recursion
2025-07-20 11:53:36 -04:00
Rangi42
cfe1f60e47
Refactor peek() to use a loop instead of tail recursion
2025-07-20 11:38:26 -04:00
Rangi42
0eed237517
Refactor peeking at macro args to be like peeking at interpolations
2025-07-20 11:21:44 -04:00
Rangi42
68ffb01cac
Use nextChar() for shiftChar() and then peek()
2025-07-20 11:15:06 -04:00
Rangi42
169ac61e14
Rename nextChar to bumpChar in the RGBASM lexer for symmetry with std::filebuf in the RGBLINK lexer
2025-07-20 11:02:02 -04:00
Rangi42
0681110647
Refactor peek() some more
2025-07-20 10:59:35 -04:00