From 8a9632c83608902f2e9ad4c8733898dab06525f1 Mon Sep 17 00:00:00 2001 From: Mohammed Anas Date: Tue, 14 Nov 2023 10:13:04 +0000 Subject: [PATCH] hare: convert from Go to XML lexer --- lexers/embedded/hare.xml | 104 +++++++++++++++++++++++++++++++++++++++ lexers/hare.go | 60 ---------------------- 2 files changed, 104 insertions(+), 60 deletions(-) create mode 100644 lexers/embedded/hare.xml delete mode 100644 lexers/hare.go diff --git a/lexers/embedded/hare.xml b/lexers/embedded/hare.xml new file mode 100644 index 000000000..424cf7638 --- /dev/null +++ b/lexers/embedded/hare.xml @@ -0,0 +1,104 @@ + + + Hare + hare + *.ha + text/x-hare + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lexers/hare.go b/lexers/hare.go deleted file mode 100644 index 5c5f3e1e1..000000000 --- a/lexers/hare.go +++ /dev/null @@ -1,60 +0,0 @@ -package lexers - -import ( - . "github.com/alecthomas/chroma/v2" // nolint -) - -// Hare lexer. -var Hare = Register(MustNewLexer( - &Config{ - Name: "Hare", - Aliases: []string{"hare"}, - Filenames: []string{"*.ha"}, - MimeTypes: []string{"text/x-hare"}, - }, - func() Rules { - return Rules{ - "whitespace": { - {`^use\s.+;`, CommentPreproc, nil}, - {`@[a-z]+`, CommentPreproc, nil}, - {`\n`, Text, nil}, - {`\s+`, Text, nil}, - {`//.*\n`, CommentSingle, nil}, - }, - "statements": { - {`"`, LiteralString, Push("string")}, - {"`[^`]*`", LiteralString, nil}, - {`'(\\[\\0abfnrtv"']||\\(x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8})|[^\\'])'`, LiteralStringChar, nil}, - {`(0|[1-9]\d*)\.\d+([eE][+-]?\d+)?(f32|f64)?`, LiteralNumberFloat, nil}, - {`(0|[1-9]\d*)([eE][+-]?\d+)?(f32|f64)`, LiteralNumberFloat, nil}, - {`0x[0-9a-fA-F]+\.[0-9a-fA-F]+([pP][+-]?\d+(f32|f64)?)?`, LiteralNumberFloat, nil}, - {`0x[0-9a-fA-F]+[pP][+-]?\d+(f32|f64)`, LiteralNumberFloat, nil}, - {`0x[0-9a-fA-F]+(z|[iu](8|16|32|64)?)?`, LiteralNumberHex, nil}, - {`0o[0-7]+(z|[iu](8|16|32|64)?)?`, LiteralNumberOct, nil}, - {`0b[01]+(z[iu](8|16|32|64)?)?`, LiteralNumberBin, nil}, - {`(0|[1-9]\d*)([eE][+-]?\d+)?(z|[iu](8|16|32|64)?)?`, LiteralNumberInteger, nil}, - {`[~!%^&*+=|?:<>/-]|[ai]s\b|\.\.\.`, Operator, nil}, - {`[()\[\],.{};]`, Punctuation, nil}, - {Words(``, `\b`, `_`, `align`, `break`, `const`, `continue`, - `else`, `enum`, `export`, `for`, `if`, `return`, `size`, - `static`, `struct`, `offset`, `union`, `fn`, `free`, `assert`, - `abort`, `alloc`, `let`, `len`, `def`, `type`, `match`, - `switch`, `case`, `append`, `delete`, `insert`, `defer`, - `yield`, `vastart`, `vaarg`, `vaend`), Keyword, nil}, - {`(str|rune|bool|int|uint|uintptr|u8|u16|u32|u64|i8|i16|i32|i64|f32|f64|null|void|nullable|valist|opaque|never)\b`, KeywordType, nil}, - {`(true|false)\b`, NameBuiltin, nil}, - {`[a-zA-Z_]\w*`, Name, nil}, - }, - "string": { - {`"`, LiteralString, Pop(1)}, - {`\\([\\0abfnrtv"']|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8})`, LiteralStringEscape, nil}, - {`[^\\"\n]+`, LiteralString, nil}, - {`\\`, LiteralString, nil}, - }, - "root": { - Include("whitespace"), - Include("statements"), - }, - } - }, -))