| //===- TokenKinds.def - MLIR Token Description ------------------*- C++ -*-===// |
| // |
| // 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 |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // This file is intended to be #include'd multiple times to extract information |
| // about tokens for various clients in the lexer. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #if !defined(TOK_MARKER) && !defined(TOK_IDENTIFIER) && \ |
| !defined(TOK_LITERAL) && !defined(TOK_PUNCTUATION) && \ |
| !defined(TOK_KEYWORD) |
| #error Must define one of the TOK_ macros. |
| #endif |
| |
| #ifndef TOK_MARKER |
| #define TOK_MARKER(X) |
| #endif |
| #ifndef TOK_IDENTIFIER |
| #define TOK_IDENTIFIER(NAME) |
| #endif |
| #ifndef TOK_LITERAL |
| #define TOK_LITERAL(NAME) |
| #endif |
| #ifndef TOK_PUNCTUATION |
| #define TOK_PUNCTUATION(NAME, SPELLING) |
| #endif |
| #ifndef TOK_KEYWORD |
| #define TOK_KEYWORD(SPELLING) |
| #endif |
| |
| // Markers |
| TOK_MARKER(eof) |
| TOK_MARKER(error) |
| |
| // Identifiers. |
| TOK_IDENTIFIER(bare_identifier) // foo |
| TOK_IDENTIFIER(at_identifier) // @foo |
| TOK_IDENTIFIER(hash_identifier) // #foo |
| TOK_IDENTIFIER(percent_identifier) // %foo |
| TOK_IDENTIFIER(caret_identifier) // ^foo |
| TOK_IDENTIFIER(exclamation_identifier) // !foo |
| |
| // Literals |
| TOK_LITERAL(floatliteral) // 2.0 |
| TOK_LITERAL(integer) // 42 |
| TOK_LITERAL(string) // "foo" |
| TOK_LITERAL(inttype) // i4, si8, ui16 |
| |
| // Punctuation. |
| TOK_PUNCTUATION(arrow, "->") |
| TOK_PUNCTUATION(at, "@") |
| TOK_PUNCTUATION(colon, ":") |
| TOK_PUNCTUATION(comma, ",") |
| TOK_PUNCTUATION(ellipsis, "...") |
| TOK_PUNCTUATION(equal, "=") |
| TOK_PUNCTUATION(greater, ">") |
| TOK_PUNCTUATION(l_brace, "{") |
| TOK_PUNCTUATION(l_paren, "(") |
| TOK_PUNCTUATION(l_square, "[") |
| TOK_PUNCTUATION(less, "<") |
| TOK_PUNCTUATION(minus, "-") |
| TOK_PUNCTUATION(plus, "+") |
| TOK_PUNCTUATION(question, "?") |
| TOK_PUNCTUATION(r_brace, "}") |
| TOK_PUNCTUATION(r_paren, ")") |
| TOK_PUNCTUATION(r_square, "]") |
| TOK_PUNCTUATION(star, "*") |
| |
| // Keywords. These turn "foo" into Token::kw_foo enums. |
| |
| // NOTE: Please key these alphabetized to make it easier to find something in |
| // this list and to cater to OCD. |
| TOK_KEYWORD(affine_map) |
| TOK_KEYWORD(affine_set) |
| TOK_KEYWORD(attributes) |
| TOK_KEYWORD(bf16) |
| TOK_KEYWORD(ceildiv) |
| TOK_KEYWORD(complex) |
| TOK_KEYWORD(dense) |
| TOK_KEYWORD(f16) |
| TOK_KEYWORD(f32) |
| TOK_KEYWORD(f64) |
| TOK_KEYWORD(f80) |
| TOK_KEYWORD(f128) |
| TOK_KEYWORD(false) |
| TOK_KEYWORD(floordiv) |
| TOK_KEYWORD(for) |
| TOK_KEYWORD(func) |
| TOK_KEYWORD(index) |
| TOK_KEYWORD(loc) |
| TOK_KEYWORD(max) |
| TOK_KEYWORD(memref) |
| TOK_KEYWORD(min) |
| TOK_KEYWORD(mod) |
| TOK_KEYWORD(none) |
| TOK_KEYWORD(offset) |
| TOK_KEYWORD(opaque) |
| TOK_KEYWORD(size) |
| TOK_KEYWORD(sparse) |
| TOK_KEYWORD(step) |
| TOK_KEYWORD(strides) |
| TOK_KEYWORD(symbol) |
| TOK_KEYWORD(tensor) |
| TOK_KEYWORD(to) |
| TOK_KEYWORD(true) |
| TOK_KEYWORD(tuple) |
| TOK_KEYWORD(type) |
| TOK_KEYWORD(unit) |
| TOK_KEYWORD(vector) |
| |
| #undef TOK_MARKER |
| #undef TOK_IDENTIFIER |
| #undef TOK_LITERAL |
| #undef TOK_PUNCTUATION |
| #undef TOK_KEYWORD |