slash.bac
'
' This is an interpreter for the Esoteric Language "Slash". PvE October 2016 - MIT License
'
' Link: http://esolangs.org/wiki////
'-------------------------------------------------------------------------------------------------------
'
' Possible inputs are:
'
' "/foo/foobar/foo foo foo"
' "/ world! world!/Hello,/ world! world! world!"
' "/foo/Hello, world!//B\\/\\\\R/foo/B/\\R"
' "/\\\\/good/\\/"
' "a/ab/bbaa/abb"
' "Hello"
' "/foo/Hello, world!//bar/foo/bar"
' "/1/0*//*0/0**//0//100010"
' "/*/\\/.\\\\0\\/,\\\\,0,\\\\,1\\/\\/.\\\\1\\/,\\\\,1,\\\\,0\\/\\/,\\\\,\\/.\\//********/.//.0"
' "/-/World//--/Hello//--W/--, w/---!"
INPUT "Enter SLASH code line: ", input$
PRINT NL$, "OUTPUT: ";
WHILE LEN(input$)
token$ = LEFT$(input$, 1)
input$ = MID$(input$, 2)
IF NOT(escape_mode) THEN
IF token$ = "\\" THEN
escape_mode = TRUE
CONTINUE
ELIF token$ = "/" THEN
op_mode = IIF(op_mode < 2, op_mode+1, 0)
IF op_mode > 0 THEN CONTINUE
ENDIF
ENDIF
SELECT op_mode
CASE 1
pattern$ = pattern$ & token$
CASE 2
replace$ = replace$ & token$
CASE 0
input$ = REPLACE$(input$, pattern$, replace$)
IF NOT(INSTR(token$ & input$, "/")) THEN
PRINT token$;
BREAK
ELSE
PRINT LEFT$(input$, INSTR(input$, "/")-1);
input$ = MID$(input$, INSTR(input$, "/"))
ENDIF
pattern$ = ""
replace$ = ""
ENDSELECT
escape_mode = FALSE
WEND
PRINT input$
PRINT NL$, "PROGRAM READY."
Generated by GNU Enscript 1.6.5.90.