No, your example just showed that you'd need to remove the :port option if your parser is stupid. Here's how it could work.
1. Are there two ':' in the URL? Then you have protocol:host:port.
2. Are there zero ':' in the URL? Then you have host, assume protocol and port from context (like your web browser does now).
3. Is there one ':' in the URL?
3a. Is the string in front of ':' a known protocol name? Then you have protocol:host.
3b. It's not? Then you have host:port, assume protocol from context.
See how easy that was? Furthermore, you're basing your entire argument on the way things work now, not the way they worked at the time. Sir Tim could have come up with any system he wanted, as evidenced by the fact that he did come up with an arbitrary system in the form of two slashes.