SQS to SQF conversion

What's different in SQF

• Every command has to end with semicolon.
• SQF does not have a goto command anymore.
• SQF commands can span several lines if they are enclosed in brackets.
• SQF can return a variable, where SQS cannot.

Replacing

Comment

 SQS ```; This is a comment ```
 SQF ```// This is single-line comment ``` ```/* This is multiline comment */ ``` ```comment "And this is a comment working both in SQS and SQF"; ```

Condition

 SQS ```@CONDITION ```
 SQF ```waitUntil {CONDITION}; ```

Delay

 SQS ```~DELAY ```
 SQF ```sleep DELAY; ```

Conditional command

 SQS ```?CONDITION: COMMAND ```
 SQF ```if (CONDITION) then {COMMAND}; ```

Multi-conditional command

 SQS ```?CONDITION: goto "SKIP" COMMAND_2 goto "END" #SKIP COMMAND_1 #END ```
 SQF ```if (CONDITION) then {COMMAND_1} else {COMMAND_2}; ```

Cycle

 SQS ```#loop COMMAND ~DELAY ?CONDITION: goto "LOOP" ```
 SQF ```while {CONDITION} do { COMMAND; sleep DELAY; }; ```

Cycle with step

 SQS ```_n = 0 #LOOP COMMAND _n = _n + 1; ?_n < COUNT: goto "LOOP" ```
 SQF ```for [{_n = 0},{_n <= COUNT},{_n = _n+1}] do { COMMAND; }; ```

Structured conditional command

 SQS ```?VARIABLE == VALUE_1: goto "SKIP_1" ?VARIABLE == VALUE_2: goto "SKIP_2" DEFAULT COMMAND goto "END" #SKIP_1 COMMAND_1 goto "END" #SKIP_2 COMMAND_2 #END ```
 SQF ```switch (VARIABLE) do { case VALUE_1: {COMMAND_1}; case VALUE_2: {COMMAND_2}; default {DEFAULT_COMMAND}; }; ```

Exiting

 SQS ```?CONDITION: goto "Exit" COMMAND_1 ``` ```#Exit COMMAND_2 exit ```
 SQF ```if (CONDITION) exitWith { COMMAND_2; }; COMMAND_1; ```