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