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
Rangi42
8d1b111692
Small lexer refactors, commenting when tail recursion occurs
2025-07-20 00:14:13 -04:00
Rangi42
14f5e16ae8
Prefer pre-inc/dec unless post-inc/dec are necessary
2025-07-19 16:18:35 -04:00
Rangi42
bf69043a1d
Reduce deep nesting some more
2025-07-19 16:18:30 -04:00
Rangi
53c39d01d4
Implement READFILE function ( #1759 )
2025-07-18 18:27:52 -04:00
Rangi
0c96234532
Use concrete types instead of auto when convenient and not redundant ( #1757 )
2025-07-17 14:59:51 -04:00
Rangi
1fecf80659
Implement 'character' literals ( #1747 )
2025-07-15 13:08:50 -04:00
Rangi
b6d77fbb9e
Implement BYTELEN and STRBYTE ( #1744 )
2025-07-14 21:46:35 -04:00
Rangi42
0149122cd0
Note how to print lexed token names for future reference
2025-07-14 10:25:47 -04:00
Rangi42
35335aadbe
Add test for labels when expecting symbols
2025-07-14 00:10:14 -04:00
Rangi42
80df858ee3
Clarify comment
2025-07-14 00:02:25 -04:00
Rangi42
eafc32fd68
Simplify switch with one case to if
2025-07-13 23:48:01 -04:00
Rangi42
21a6d35b8b
Simplify readString
2025-07-13 13:26:59 -04:00
Rangi42
ce78280af3
Simplify appendCharInLiteral
2025-07-13 13:22:40 -04:00
Rangi42
041b86b8dd
Use Defer instead of relying on a "Don't return before this" comment
2025-07-13 12:52:45 -04:00
Rangi42
da133baf17
Reduce nesting depth in lexer.cpp
2025-07-12 07:54:16 -04:00
Rangi42
d32b1912ed
Use verbosePrint in rgbasm as well as rgblink
2025-07-12 01:38:19 -04:00
Rangi42
82513e5255
Simplify appendCharInLiteral
2025-07-11 23:52:52 -04:00
Rangi42
f2708ce967
Consolidate readString and appendStringLiteral
2025-07-11 23:43:36 -04:00
Rangi42
01a5c94c7e
Factor out common code from readString and appendStringLiteral
2025-07-11 22:37:28 -04:00
Rangi
34cf959c9d
Refactor to reduce nesting depth some more ( #1740 )
2025-07-09 22:46:40 -04:00
Rangi
44f5b47bf0
Reduce nesting depth in some functions ( #1739 )
2025-07-09 16:20:33 -04:00
Rangi
41ab5dff5a
Implement [[ fragment literals ]] ( #1614 )
...
This feature is referred to as "code/data literals" in ASMotor,
and simply as "literals" in some older assemblers like MIDAS
for the PDP-10. RGBASM already had the "section fragments"
feature for keeping disparate contents together when linked,
so these worked naturally as "fragment literals".
2025-07-09 12:13:01 -04:00
Rangi
5e43ece578
Remove errx and errors.hpp ( #1737 )
2025-07-09 11:04:23 -04:00
Rangi
fda54fd0c3
Replace Either with std::variant ( #1731 )
2025-07-08 13:59:03 -04:00
Rangi
35962dedc4
Refactor warnings and errors ( #1728 )
...
* Remove `err` and `warn`, keep `errx` and `warnx`, using them in RGBGFX too
* Separate RGBGFX and RGBLINK warnings/errors from main options
* Separate `report` function into `error` and `fatal` messages
* Implicit newlines for most RGBASM errors
2025-07-08 12:58:23 -04:00
Rangi
089e366ddc
Implement CHARVAL function ( #1701 )
2025-06-12 17:21:12 -04:00