aboutsummaryrefslogtreecommitdiff
path: root/crates/readrom
diff options
context:
space:
mode:
authorMiquel Sabaté Solà <mikisabate@gmail.com>2024-12-24 16:48:16 +0100
committerMiquel Sabaté Solà <mikisabate@gmail.com>2025-01-07 16:38:54 +0100
commit9b5e5aa6d36a550bed84f85df8e1e46fcf9765e1 (patch)
tree9748bd1059bb24fd5fb204ff9d91ae7531632beb /crates/readrom
parentf3c6b02fb2f2957b9b896c34d05abe75263c3f60 (diff)
downloadtools.nes-9b5e5aa6d36a550bed84f85df8e1e46fcf9765e1.tar.gz
tools.nes-9b5e5aa6d36a550bed84f85df8e1e46fcf9765e1.zip
Add the .repeat control statement
This is a control statement which acts similarly as .proc/.macro/.scope, in which an inner block is allocated for it. Hence, all the previous work from 1f8a6becc7cd ("parser: Implement block bodies") and ec8b709fa24c ("Implement block bodies inside of the assembler") make this one out possible, as .repeat statements don't have an identifier that can be used for hashing. From the parser perspective this introduction raises two new things. First of all this control statement also needed a differentiation between the amount of required arguments, and the allowed ones, since there is a second optional argument to it. And second, even the identifier is not given, we have to generate one so to add a context for it. This was at first not needed, but introducing .repeat-only variables means that we have to have inner contexts which need to be named somehow so we can retrieve the context later when picking up the value for them again. This last thing brought the need for a new dependency: rand. This is used to generate a random string to identify the .repeat block. Signed-off-by: Miquel Sabaté Solà <mikisabate@gmail.com>
Diffstat (limited to 'crates/readrom')
0 files changed, 0 insertions, 0 deletions