mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-17 18:56:37 +00:00

This enables syntax highlighting of MLIR using the Pygments package in Python, which is in turn usable from LaTeX via the minted package.
39 lines
1.3 KiB
Python
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),
|
|
]
|
|
}
|