aboutsummaryrefslogtreecommitdiff
path: root/mlir/utils/pygments/mlir_lexer.py
diff options
context:
space:
mode:
Diffstat (limited to 'mlir/utils/pygments/mlir_lexer.py')
-rw-r--r--mlir/utils/pygments/mlir_lexer.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/mlir/utils/pygments/mlir_lexer.py b/mlir/utils/pygments/mlir_lexer.py
new file mode 100644
index 0000000..179a058
--- /dev/null
+++ b/mlir/utils/pygments/mlir_lexer.py
@@ -0,0 +1,38 @@
+# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+# See https://llvm.org/LICENSE.txt for license information.
+# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+from pygments.lexer import RegexLexer
+from pygments.token import *
+
+
+class MlirLexer(RegexLexer):
+ name = "MLIR"
+ aliases = ["mlir"]
+ filenames = ["*.mlir"]
+
+ tokens = {
+ "root": [
+ (r"%[a-zA-Z0-9_]+", Name.Variable),
+ (r"@[a-zA-Z_][a-zA-Z0-9_]+", Name.Function),
+ (r"\^[a-zA-Z0-9_]+", Name.Label),
+ (r"#[a-zA-Z0-9_]+", Name.Constant),
+ (r"![a-zA-Z0-9_]+", Keyword.Type),
+ (r"[a-zA-Z_][a-zA-Z0-9_]*\.", Name.Entity),
+ (r"memref[^.]", Keyword.Type),
+ (r"index", Keyword.Type),
+ (r"i[0-9]+", Keyword.Type),
+ (r"f[0-9]+", Keyword.Type),
+ (r"[0-9]+", Number.Integer),
+ (r"[0-9]*\.[0-9]*", Number.Float),
+ (r'"[^"]*"', String.Double),
+ (r"affine_map", Keyword.Reserved),
+ # TODO: this should be within affine maps only
+ (r"\+-\*\/", Operator),
+ (r"floordiv", Operator.Word),
+ (r"ceildiv", Operator.Word),
+ (r"mod", Operator.Word),
+ (r"()\[\]<>,{}", Punctuation),
+ (r"\/\/.*\n", Comment.Single),
+ ]
+ }