unit module IUtils::Regexes;

my token type {
    'test' | 'bench'
}
my token output-type {
    '()' | 'Bool' | 'Either'
}

my token comment-start { \- \- }
my token flag { \@ \@ <type> }
my token name { <[\w \-]>+ }
my token test-name { \V+ }

my token comment-line { \h* <&comment-start> \V* \v }

my regex flagged-expression is export {
    \h* <&comment-start> \h* <flag> \h* <test-name> \V* \v
    <comment-line>*
    \h* <expression-name=&name> \h+ \: \h+ 'IO' \h+ <output-type> \V* \v
}

my regex module-name is export {
   'module' \h* $<name>=(\S+)
}