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