|
| 1 | +<lexer> |
| 2 | + <config> |
| 3 | + <name>Hare</name> |
| 4 | + <alias>hare</alias> |
| 5 | + <filename>*.ha</filename> |
| 6 | + <mime_type>text/x-hare</mime_type> |
| 7 | + </config> |
| 8 | + <rules> |
| 9 | + <state name="string"> |
| 10 | + <rule pattern="""> |
| 11 | + <token type="LiteralString"/> |
| 12 | + <pop depth="1"/> |
| 13 | + </rule> |
| 14 | + <rule pattern="\\([\\0abfnrtv"']|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8})"> |
| 15 | + <token type="LiteralStringEscape"/> |
| 16 | + </rule> |
| 17 | + <rule pattern="[^\\"\n]+"> |
| 18 | + <token type="LiteralString"/> |
| 19 | + </rule> |
| 20 | + <rule pattern="\\"> |
| 21 | + <token type="LiteralString"/> |
| 22 | + </rule> |
| 23 | + </state> |
| 24 | + <state name="root"> |
| 25 | + <rule pattern="[\s\n]+"> |
| 26 | + <token type="TextWhitespace"/> |
| 27 | + </rule> |
| 28 | + <rule pattern="@[a-z]+"> |
| 29 | + <token type="NameDecorator"/> |
| 30 | + </rule> |
| 31 | + <rule pattern="//.*\n"> |
| 32 | + <token type="CommentSingle"/> |
| 33 | + </rule> |
| 34 | + <rule pattern="""> |
| 35 | + <token type="LiteralString"/> |
| 36 | + <push state="string"/> |
| 37 | + </rule> |
| 38 | + <rule pattern="`[^`]*`"> |
| 39 | + <token type="LiteralString"/> |
| 40 | + </rule> |
| 41 | + <rule pattern="'(\\[\\0abfnrtv"']||\\(x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8})|[^\\'])'"> |
| 42 | + <token type="LiteralStringChar"/> |
| 43 | + </rule> |
| 44 | + <rule pattern="(0|[1-9]\d*)\.\d+([eE][+-]?\d+)?(f32|f64)?"> |
| 45 | + <token type="LiteralNumberFloat"/> |
| 46 | + </rule> |
| 47 | + <rule pattern="(0|[1-9]\d*)([eE][+-]?\d+)?(f32|f64)"> |
| 48 | + <token type="LiteralNumberFloat"/> |
| 49 | + </rule> |
| 50 | + <rule pattern="0x[0-9a-fA-F]+\.[0-9a-fA-F]+([pP][+-]?\d+(f32|f64)?)?"> |
| 51 | + <token type="LiteralNumberFloat"/> |
| 52 | + </rule> |
| 53 | + <rule pattern="0x[0-9a-fA-F]+[pP][+-]?\d+(f32|f64)"> |
| 54 | + <token type="LiteralNumberFloat"/> |
| 55 | + </rule> |
| 56 | + <rule pattern="0x[0-9a-fA-F]+(z|[iu](8|16|32|64)?)?"> |
| 57 | + <token type="LiteralNumberHex"/> |
| 58 | + </rule> |
| 59 | + <rule pattern="0o[0-7]+(z|[iu](8|16|32|64)?)?"> |
| 60 | + <token type="LiteralNumberOct"/> |
| 61 | + </rule> |
| 62 | + <rule pattern="0b[01]+(z|[iu](8|16|32|64)?)?"> |
| 63 | + <token type="LiteralNumberBin"/> |
| 64 | + </rule> |
| 65 | + <rule pattern="(0|[1-9]\d*)([eE][+-]?\d+)?(z|[iu](8|16|32|64)?)?"> |
| 66 | + <token type="LiteralNumberInteger"/> |
| 67 | + </rule> |
| 68 | + <rule pattern="[~!%^&*+=|?:<>/-]|[ai]s\b|\.\.\."> |
| 69 | + <token type="Operator"/> |
| 70 | + </rule> |
| 71 | + <rule pattern="[()\[\],.{};]"> |
| 72 | + <token type="Punctuation"/> |
| 73 | + </rule> |
| 74 | + <rule pattern="use\b"> |
| 75 | + <token type="KeywordNamespace"/> |
| 76 | + </rule> |
| 77 | + <rule pattern="(_|align|break|const|continue|else|enum|export|for|if|return|static|struct|offset|union|fn|free|assert|abort|alloc|let|len|def|type|match|switch|case|append|delete|insert|defer|yield|vastart|vaarg|vaend)\b"> |
| 78 | + <token type="Keyword"/> |
| 79 | + </rule> |
| 80 | + <rule pattern="(size)([\s\n]*)(\()"> |
| 81 | + <bygroups> |
| 82 | + <token type="Keyword" /> |
| 83 | + <token type="TextWhitespace" /> |
| 84 | + <token type="Punctuation" /> |
| 85 | + </bygroups> |
| 86 | + </rule> |
| 87 | + <rule pattern="(str|size|rune|bool|int|uint|uintptr|u8|u16|u32|u64|i8|i16|i32|i64|f32|f64|null|void|nullable|valist|opaque|never)\b"> |
| 88 | + <token type="KeywordType"/> |
| 89 | + </rule> |
| 90 | + <rule pattern="(true|false)\b"> |
| 91 | + <token type="NameBuiltin"/> |
| 92 | + </rule> |
| 93 | + <rule pattern="[a-zA-Z_]\w*"> |
| 94 | + <token type="Name"/> |
| 95 | + </rule> |
| 96 | + </state> |
| 97 | + </rules> |
| 98 | +</lexer> |
0 commit comments