Oleksandr "Alex" Zinenko c7d237085b
[mlir] add a simple pygments lexer (#120942)
This enables syntax highlighting of MLIR using the Pygments package in
Python, which is in turn usable from LaTeX via the minted package.
2024-12-30 17:27:53 +01:00

39 lines
1.3 KiB
Python

# 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),
]
}