#include "libstd"

proc main()
{
    const str1 = "String sep by space";
    const lstr1 = L"Lstring sep by space";
    const tok1 = " ";
    const ltok1 = L" ";
    const pat1 = "sep";
    const lpat1 = L"sep";
    var strs1 = {str1, lstr1};
    var toks1 = {tok1, ltok1};
    var pats1 = {pat1, lpat1};
    const str2 = "String, sep by space, or comma";
    const lstr2 = L"LString, sep by space, or comma";
    const tok2 = ", ";
    const ltok2 = L", ";
    var strs2 = {str2, lstr2};
    var toks2 = {tok2, ltok2};

    forall (strs1[i]) forall (toks1[j]) {
        var str = strs1[i];
        var tok = toks1[j];
        print("V,X,*,V,:,'|'", tok.parent, str.strtok(tok));
    }
    forall (strs2[i]) forall (toks2[j]) {
        var str = strs2[i];
        var tok = toks2[j];
        print("V,X,*,V,:,'|'", tok.parent, str.strtok(tok));
    }
    forall (strs1[i]) forall (pats1[j]) {
        var str = strs1[i];
        var pat = pats1[j];
        print("V,:,X", str.parent, pat.parent, str.strstr(pat));
    }
}