--langdef=FOO
--map-FOO=+.foo

--kinddef-FOO=n,namespace,namespaces
--kinddef-FOO=c,class,classes
--kinddef-FOO=v,variable,variables

--regex-FOO=/namespace ([a-zA-Z]+) /\1/N,another_namespace/{warning="found namespace '\1'"}{exclusive}
--regex-FOO=/namespace ([a-zA-Z]+) /\1/x,bad/{fatal="should not get this"}
--regex-FOO=/bad regex ([a-zA-Z-]+)/\1/x,bad/{fatal="bad='\1'"}


--mline-regex-FOO=/namespace ([a-zA-Z]+) /\1/m,mline_namespace/{mgroup=1}{warning="got namespace"}
--mline-regex-FOO=/var ([a-zA-Z]+) ([a-zA-Z]+);/\2/V,mline_variable/{warning="got variable '\2' of type \1"}{mgroup=2}
--mline-regex-FOO=/bad multi-line ([a-zA-Z-]+)/\1/x,bad/{fatal="bad='\1'"}


--_tabledef-FOO=main
--_tabledef-FOO=block
--_tabledef-FOO=blockEnd
--_tabledef-FOO=skipWhitespace

--_mtable-regex-FOO=skipWhitespace/[ \t\n]+//

--_mtable-regex-FOO=main/namespace ([a-zA-Z]+) \{/\1/n/{tenter=block,blockEnd}{warning="found namespace"}{scope=push}
--_mtable-extend-FOO=main+skipWhitespace
--_mtable-regex-FOO=main///

--_mtable-regex-FOO=blockEnd/\};?//{scope=pop}{warning="end of block"}
--_mtable-extend-FOO=blockEnd+skipWhitespace
--_mtable-regex-FOO=blockEnd/bad multi-table ([a-zA-Z-]+)//{fatal="bad='\1'"}
--_mtable-regex-FOO=blockEnd/bad [^\n]+\n//

--_mtable-regex-FOO=block/class ([a-zA-Z]+) \{/\1/c/{tenter=block,blockEnd}{warning="got class"}{scope=ref}{scope=push}
--_mtable-regex-FOO=block/var ([a-zA-Z]+) ([a-zA-Z]+);/\2/v/{scope=ref}{warning="got variable '\2' of type \1"}
--_mtable-extend-FOO=block+skipWhitespace
