Since 2021 I've been working off and on developing the SharpBASIC compiler. In my experience one of the most complicated aspects I've come across is real number computation and especially conversion. Real numbers just don't really fit in the world of binaries and integers and there are many options to adjust FPU behavior. Libraries have been developed such as Dragon4 and Grisu to improve precision, but at the cost of performance. But even without high precision it takes a lot of time figuring out how to get a routine working correctly that performs a seemingly simple task of converting a single precision number to string, especially if it should support even basic E-notation. Sure, there's printf and other C dependencies. But I refuse to make SharpBASIC dependent on C libs. I suppose Pascal lovers feel the same way.
Also interesting is how compilers have their own procedure conventions. C adds parameters on the stack backwards and accesses them forward. Pascal (from what I know) adds parameters forward and accesses them backwards (like SharpBASIC). But Pascal cleans up the stack inside, while C and SharpBASIC let the caller handle that. For this purpose SharpBASIC introduced two keywords to specifically reference C procedures (cdecl) and Pascal procedures (pdecl).
And so the journey continues.