
Description="Miranda"

Identifiers=[[ [a-z][a-zA-Z0-9_']* ]]

Keywords={
  { Id=1,
    List={"abstype", "div", "if", "mod", "otherwise", "readvals", "show", 
        "type", "where", "with", "sys_message", "False", "True", "Appendfile", 
        "Closefile", "Exit", "Stderr", "Stdout", "System", "Tofile", "abs", "and", 
        "arctan", "cjustify", "code", "concat", "const", "converse", "cos", "decode", 
        "digit", "drop", "dropwhile", "entier", "error", "exp", "filemode", "filter", 
        "foldl", "foldl1", "foldr", "foldr1", "force", "fst", "getenv", "hd", "hugenum", 
        "id", "index", "init", "integer", "iterate", "last", "lay", "layn", "letter", 
        "limit", "lines", "ljustify", "log", "log10", "map", "map2", "max", "max2", 
        "member", "merge", "min", "min2", "mkset", "neg", "numval", "or", "pi", 
        "postfix", "product", "read", "rep", "repeat", "reverse", "rjustify", "scan", 
        "seq", "showfloat", "shownum", "showscaled", "sin", "snd", "sort", "spaces", 
        "sqrt", "subtract", "sum", "system", "take", "takewhile", "tinynum", "tl", 
        "transpose", "undef", "until", "zip2", "zip3", "zip4", "zip5", "zip6", "zip"},
  },
  { Id=2,
    List={"num", "char", "bool"},
  },
  { Id=4, -- Regex which renders type declarations on one line using `::', `==' and `::='
    Regex=[[(\s*[a-zA-Z][a-zA-Z0-9_']*\s*.*\s*::\s+.*|\s*[a-zA-Z][a-zA-Z0-9_']*\s*[\* ]*\s*==\s+.*|\s*[a-zA-Z][a-zA-Z0-9_']*\s*[\* ]*\s*::=\s+.*)]],
  },
}

Strings={
  Delimiter=[["]],
}

IgnoreCase=false

Comments={
  { Block=false,
    Delimiter= { [[\|\|]] },
  },
}

PreProcessor={
  Prefix=[[%]],
}

Operators=[[\(|\)|\[|\]|\.|\,|\;|\:|\&|<|>|\!|\=|\/|\*|\%|\+|\-|\~|\^]]
