TO STARTUP
PO [EXPLAIN]
END

TO TRY1
PR MATCH? [$A IS NOT $B] [MY FATHER IS NOT VERY RICH]
END

TO TRY
PR MATCH? [$A GETS $B ON @DAY] [ARTHUR DALEY GETS VERY DRUNK ON THURSDAYS]
END

TO MATCH? :L1 :L2
IF AND (:L1 = []) (:L2 = []) [OP "TRUE]
IF OR (:L1 = []) (:L2 = []) [OP "FALSE]
IF OR (FIRST :L1) = (FIRST :L2) (FIRST :L1) = "@ [OP MATCH? (BF :L1) (BF :L2)]
IF (FIRST FIRST :L1) = "@ [IF MATCH? (BF :L1) (BF :L2) [MAKE (BF FIRST :L1) (FIRST :L2) OP "TRUE] [OP "FALSE]]
IF (FIRST :L1) = "$ [IF MATCH? (BF :L1) (BF :L2) [OP "TRUE] [OP MATCH? :L1 (BF :L2)]]
IF (FIRST FIRST :L1) = "$ [IF MATCH? (BF :L1) (BF :L2) [MAKE (BF FIRST :L1) (LIST FIRST :L2) OP "TRUE] [IF MATCH? :L1 (BF :L2) [MAKE (BF FIRST :L1) FPUT (FIRST :L2) (THING BF FIRST :L1) OP "TRUE]] [OP "FALSE]] [OP "FALSE]
END

TO EXPLAIN
; The quick and dirty Logo Matcher
; PRINT MATCH? [I LIKE LOGO] [I LIKE LOGO] - > TRUE
; PRINT MATCH? [I @ LOGO] [I LIKE LOGO] - > TRUE
; PRINT MATCH? [I $] [I LIKE LOGO] - > TRUE
; PRINT MATCH? [I @FEELING LOGO] [I LIKE LOGO] - > TRUE with FEELING set to LIKE
; PRINT MATCH? [@FIRST $REST] [I LIKE LOGO] - > TRUE with FIRST set to I and REST set to [LIKE LOGO]
; $ MATCHES ANY NUMBER OF ELEMENTS
; @ MATCHES ANY ONE ELEMENT
; EACH MAY BE FOLLOWED BY A NAME
; WHICH WILL BE INITIALISED TO POINT TO WHATEVER
; PART OF THE REGULAR EXPRESSION IT IS MATCHING
END

