DECLARE SUB SplitFirst (aFirst AS STRING, aRest AS STRING) LET Q$ = "TESTPROG.TXT" LET F = FREEFILE OPEN Q$ FOR INPUT AS #F DO WHILE NOT EOF(F) LINE INPUT #F, FileInput$ LET FileInput$ = LTRIM$(FileInput$) SplitFirst KeyWord$, FileInput$ SELECT CASE KeyWord$ CASE "-" SplitFirst KeyWord$, FileInput$ GOSUB InterpretKeyword END SELECT
LOOP CLOSE #F SYSTEM InterpretKeyword: SELECT CASE UCASE$(KeyWord$) CASE "STORE" GOSUB AssignToValue CASE "ADD" GOSUB AddToValue CASE "MULTIPLYBY" GOSUB MultiplyWithValue CASE "PRINT" GOSUB PutOutput CASE "CLS" GOSUB ClearScreen CASE "NEWLINE" PRINT CASE ELSE PRINT PRINT "I don't know what "; KeyWord$; " "; FileInput$; " means." END SELECT RETURN
AssignToValue: GOSUB GetArg LET Value$ = Arg$ RETURN
AddToValue: GOSUB GetArg LET Value$ = LTRIM$(STR$(VAL(Value$) + VAL(Arg$))) RETURN
MultiplyWithValue: GOSUB GetArg LET Value$ = LTRIM$(STR$(VAL(Value$) * VAL(Arg$))) RETURN
GetArg: Split KeyWord$, FileInput$ SELECT CASE UCASE$(KeyWord$) CASE "INPUT" GOSUB GetInput LET Arg$ = UserInput$ CASE "VALUE" LET Arg$ = Value$ CASE "TEXT" LET Arg$ = FileInput$ CASE ELSE LET Arg$ = KeyWord$ + " " + FileInput$ END SELECT RETURN
GetInput: LINE INPUT "", UserInput$ RETURN
PutOutput: GOSUB GetArg PRINT Arg$; " "; RETURN
ClearScreen: CLS RETURN
NewLine: PRINT RETURN
SUB SplitFirst (aFirst AS STRING, aRest AS STRING) DIM J AS INTEGER
LET J = INSTR(aRest + " ", " ") LET aFirst = LTRIM$(LEFT$(aRest, J - 1)) LET aRest = LTRIM$(MID$(aRest, J))
END SUB
There is a program to try with this interpreter, on the