<lexer> <config> <name>Gleam</name> <alias>gleam</alias> <filename>*.gleam</filename> <mime_type>text/x-gleam</mime_type> </config> <rules> <state name="root"> <rule pattern="\s+"> <token type="TextWhitespace"/> </rule> <rule pattern="///(.*?)\n"> <token type="LiteralStringDoc"/> </rule> <rule pattern="//(.*?)\n"> <token type="CommentSingle"/> </rule> <rule pattern="(as|assert|case|opaque|panic|pub|todo)\b"> <token type="Keyword"/> </rule> <rule pattern="(import|use)\b"> <token type="KeywordNamespace"/> </rule> <rule pattern="(auto|const|delegate|derive|echo|else|if|implement|macro|test)\b"> <token type="KeywordReserved"/> </rule> <rule pattern="(let)\b"> <token type="KeywordDeclaration"/> </rule> <rule pattern="(fn)\b"> <token type="Keyword"/> </rule> <rule pattern="(type)\b"> <token type="Keyword"/> <push state="typename"/> </rule> <rule pattern="(True|False)\b"> <token type="KeywordConstant"/> </rule> <rule pattern="0[bB][01](_?[01])*"> <token type="LiteralNumberBin"/> </rule> <rule pattern="0[oO][0-7](_?[0-7])*"> <token type="LiteralNumberOct"/> </rule> <rule pattern="0[xX][\da-fA-F](_?[\dA-Fa-f])*"> <token type="LiteralNumberHex"/> </rule> <rule pattern="\d(_?\d)*\.\d(_?\d)*([eE][-+]?\d(_?\d)*)?"> <token type="LiteralNumberFloat"/> </rule> <rule pattern="\d(_?\d)*"> <token type="LiteralNumberInteger"/> </rule> <rule pattern="""> <token type="LiteralString"/> <push state="string"/> </rule> <rule pattern="@([a-z_]\w*[!?]?)"> <token type="NameAttribute"/> </rule> <rule pattern="[{}()\[\],]|[#(]|\.\.|<>|<<|>>"> <token type="Punctuation"/> </rule> <rule pattern="[+\-*/%!=<>&|.]|<-"> <token type="Operator"/> </rule> <rule pattern=":|->"> <token type="Operator"/> <push state="typename"/> </rule> <rule pattern="([a-z_][A-Za-z0-9_]*)(\()"> <bygroups> <token type="NameFunction"/> <token type="Punctuation"/> </bygroups> </rule> <rule pattern="([A-Z][A-Za-z0-9_]*)(\()"> <bygroups> <token type="NameClass"/> <token type="Punctuation"/> </bygroups> </rule> <rule pattern="([a-z_]\w*[!?]?)"> <token type="Name"/> </rule> </state> <state name="typename"> <rule pattern="\s+"> <token type="TextWhitespace"/> </rule> <rule pattern="[A-Z][A-Za-z0-9_]*"> <token type="NameClass"/> <pop depth="1"/> </rule> <rule> <pop depth="1"/> </rule> </state> <state name="string"> <rule pattern="""> <token type="LiteralString"/> <pop depth="1"/> </rule> <rule pattern="\\["\\fnrt]|\\u\{[\da-fA-F]{1,6}\}"> <token type="LiteralStringEscape"/> </rule> <rule pattern="[^\\"]+"> <token type="LiteralString"/> </rule> <rule pattern="\\"> <token type="LiteralString"/> </rule> </state> </rules> </lexer>