FWIW - ScripBasic requires clear/ readable BASIC syntax to work. I don't think stripping spaces does anything for readability. I never liked multiple statements on a line either. SB is an embeddable scripting API and any replication of functionality has be minimized to keep it's runtime at ~500KB. I haven't missed CASE and find IF/ELSEIF works just fine. I was taken back at first by your use of CYCLE/REPEAT common loop structure but I'm getting more comfortable with it.
It was the interpreter that was stripping spaces as part of the parser - they were re-generated in the LIST output (and preserved when you use the built-in editor, or an external editor) And yes , I never liked the multipe statement per line thing either (and RTB doesn't support it). It was a neccessary evil in the bad old days to save a bit of memory and execution time...
The cycle...repeat thing comes from an Algol-like language called Imp77 which was used in Edinburgh (& Manchester I think) universities in the 1970s and '80s to write their operating system (EMAS) and utilities in. It was my first exposure to a structured programming language. (After BASIC & FORTRAN) It supported the while/until at the top or bottom of the loops too and had a few other interesting constructs like:
a = 5 unles b = 7
unless was the opposite test for if just as while and until are opposite tests. (and you could put the test after the statement).
While Imp77 supported more or less everything that C does (including the ability to write complete multi-user operating systems in), it more or less died as a general purpose language due to the widespread adoption adoption of C & Unix. It used 'stroppping' for the keywords - I guess to make the parser easier to impement in those days of limited memory/resources, so each keyword was prefixed by %, so:
a = 5 %unless b = 7
and the text formatter you passed listings through would use the % character as a flag to underline stuff. Doing that and ignoring spaces allowed variables, function names, etc. to have spaces in them... (which is where I got that idea from!)
So my task this week is to improve the parser :-)
And back to cycle repeat - I'm toying with the idea of a simple counted repeat now - after using RTB to teach introduction to programming using turtle graphics...
clock // Angles
cycle 4 // alternative to: for count = 1 to 4 cycle ?
move (100)
turn (15)
repeat
-Gordon