github.com/johnnyeven/libtools@v0.0.0-20191126065708-61829c1adf46/third_party/mlir/lib/Parser/TokenKinds.def (about) 1 //===- TokenKinds.def - MLIR Token Description ------------------*- C++ -*-===// 2 // 3 // Copyright 2019 The MLIR Authors. 4 // 5 // Licensed under the Apache License, Version 2.0 (the "License"); 6 // you may not use this file except in compliance with the License. 7 // You may obtain a copy of the License at 8 // 9 // http://www.apache.org/licenses/LICENSE-2.0 10 // 11 // Unless required by applicable law or agreed to in writing, software 12 // distributed under the License is distributed on an "AS IS" BASIS, 13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 // See the License for the specific language governing permissions and 15 // limitations under the License. 16 // ============================================================================= 17 // 18 // This file is intended to be #include'd multiple times to extract information 19 // about tokens for various clients in the lexer. 20 // 21 //===----------------------------------------------------------------------===// 22 23 #if !defined(TOK_MARKER) && !defined(TOK_IDENTIFIER) && !defined(TOK_LITERAL)&&\ 24 !defined(TOK_PUNCTUATION) && !defined(TOK_OPERATOR) && !defined(TOK_KEYWORD) 25 # error Must define one of the TOK_ macros. 26 #endif 27 28 #ifndef TOK_MARKER 29 #define TOK_MARKER(X) 30 #endif 31 #ifndef TOK_IDENTIFIER 32 #define TOK_IDENTIFIER(NAME) 33 #endif 34 #ifndef TOK_LITERAL 35 #define TOK_LITERAL(NAME) 36 #endif 37 #ifndef TOK_PUNCTUATION 38 #define TOK_PUNCTUATION(NAME, SPELLING) 39 #endif 40 #ifndef TOK_OPERATOR 41 #define TOK_OPERATOR(NAME, SPELLING) 42 #endif 43 #ifndef TOK_KEYWORD 44 #define TOK_KEYWORD(SPELLING) 45 #endif 46 47 48 // Markers 49 TOK_MARKER(eof) 50 TOK_MARKER(error) 51 52 // Identifiers. 53 TOK_IDENTIFIER(bare_identifier) // foo 54 TOK_IDENTIFIER(at_identifier) // @foo 55 TOK_IDENTIFIER(hash_identifier) // #foo 56 TOK_IDENTIFIER(percent_identifier) // %foo 57 TOK_IDENTIFIER(caret_identifier) // ^foo 58 TOK_IDENTIFIER(exclamation_identifier) // !foo 59 60 // Literals 61 TOK_LITERAL(floatliteral) // 2.0 62 TOK_LITERAL(integer) // 42 63 TOK_LITERAL(string) // "foo" 64 TOK_LITERAL(inttype) // i421 65 66 // Punctuation. 67 TOK_PUNCTUATION(arrow, "->") 68 TOK_PUNCTUATION(at, "@") 69 TOK_PUNCTUATION(colon, ":") 70 TOK_PUNCTUATION(comma, ",") 71 TOK_PUNCTUATION(question, "?") 72 TOK_PUNCTUATION(l_paren, "(") 73 TOK_PUNCTUATION(r_paren, ")") 74 TOK_PUNCTUATION(l_brace, "{") 75 TOK_PUNCTUATION(r_brace, "}") 76 TOK_PUNCTUATION(l_square, "[") 77 TOK_PUNCTUATION(r_square, "]") 78 TOK_PUNCTUATION(less, "<") 79 TOK_PUNCTUATION(greater, ">") 80 TOK_PUNCTUATION(equal, "=") 81 TOK_PUNCTUATION(ellipsis, "...") 82 // TODO: More punctuation. 83 84 // Operators. 85 TOK_OPERATOR(plus, "+") 86 TOK_OPERATOR(minus, "-") 87 TOK_OPERATOR(star, "*") 88 // TODO: More operator tokens 89 90 // Keywords. These turn "foo" into Token::kw_foo enums. 91 92 // NOTE: Please key these alphabetized to make it easier to find something in 93 // this list and to cater to OCD. 94 TOK_KEYWORD(attributes) 95 TOK_KEYWORD(bf16) 96 TOK_KEYWORD(ceildiv) 97 TOK_KEYWORD(complex) 98 TOK_KEYWORD(dense) 99 TOK_KEYWORD(f16) 100 TOK_KEYWORD(f32) 101 TOK_KEYWORD(f64) 102 TOK_KEYWORD(false) 103 TOK_KEYWORD(floordiv) 104 TOK_KEYWORD(for) 105 TOK_KEYWORD(func) 106 TOK_KEYWORD(index) 107 TOK_KEYWORD(loc) 108 TOK_KEYWORD(max) 109 TOK_KEYWORD(memref) 110 TOK_KEYWORD(min) 111 TOK_KEYWORD(mod) 112 TOK_KEYWORD(none) 113 TOK_KEYWORD(opaque) 114 TOK_KEYWORD(size) 115 TOK_KEYWORD(sparse) 116 TOK_KEYWORD(step) 117 TOK_KEYWORD(symbol) 118 TOK_KEYWORD(tensor) 119 TOK_KEYWORD(to) 120 TOK_KEYWORD(true) 121 TOK_KEYWORD(tuple) 122 TOK_KEYWORD(type) 123 TOK_KEYWORD(unit) 124 TOK_KEYWORD(vector) 125 126 #undef TOK_MARKER 127 #undef TOK_IDENTIFIER 128 #undef TOK_LITERAL 129 #undef TOK_PUNCTUATION 130 #undef TOK_OPERATOR 131 #undef TOK_KEYWORD