I didn't do an exhaustive search, but it seems that the managed hashmaps only allocates space for the structure of the map itself, not its keys or values. This mostly makes sense, but it also means that this was only working due to the fact that I am currently not freeing the input buffer until after iterating through the parse result. Looking through this, I'm also reasonably surprised by how many times this is assigned in the normal parsing vs the flow parsing. There is a lot more repetition in the code of the normal parser, I think because it does not have a granular state machine. It may be worth revisiting the structure to see if a more detailed state machine, like the one used for parsing the flow-style objects, would reduce the amount of code repetition here. I suspect it certainly could be better than it currently is, since it seems unlikely that there really are four different scenarios where we need to be parsing a dictionary key. Taking a quick glance at it, it looks like I could be taking better advantage of the flipflop loop on indent as well as dedent. This might be a bit less efficient due to essentially being less loop unrolling, but it would also potentially make more maintainable code by having less manual repetition.
Description
No description provided
Languages
Zig
100%