mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
115 lines
2.8 KiB
C++
115 lines
2.8 KiB
C++
//===--- Tokens.def - Swift Tokenizer Metaprogramming -----------*- C++ -*-===//
|
|
//
|
|
// This source file is part of the Swift.org open source project
|
|
//
|
|
// Copyright (c) 2014 - 2015 Apple Inc. and the Swift project authors
|
|
// Licensed under Apache License v2.0 with Runtime Library Exception
|
|
//
|
|
// See http://swift.org/LICENSE.txt for license information
|
|
// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file defines macros used for macro-metaprogramming lexer tokens.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
/// KEYWORD(kw)
|
|
/// Expands for every Swift keyword, such as 'if', 'else', etc.
|
|
#ifndef KEYWORD
|
|
#define KEYWORD(kw)
|
|
#endif
|
|
|
|
/// PUNCTUATOR(name, str)
|
|
/// Expands for every Swift punctuator.
|
|
/// \param name The symbolic name of the punctuator, such as
|
|
/// 'l_paren' or 'arrow'.
|
|
/// \param str A string literal containing the spelling of the punctuator,
|
|
/// such as '"("' or '"->"'.
|
|
#ifndef PUNCTUATOR
|
|
#define PUNCTUATOR(name, str)
|
|
#endif
|
|
|
|
// Keywords that start decls.
|
|
KEYWORD(class)
|
|
KEYWORD(constructor)
|
|
KEYWORD(destructor)
|
|
KEYWORD(enum)
|
|
KEYWORD(extension)
|
|
KEYWORD(func)
|
|
KEYWORD(import)
|
|
KEYWORD(init)
|
|
KEYWORD(protocol)
|
|
KEYWORD(static)
|
|
KEYWORD(struct)
|
|
KEYWORD(subscript)
|
|
KEYWORD(typealias)
|
|
KEYWORD(var)
|
|
|
|
KEYWORD(sil) // This is only enabled when parsing .sil files.
|
|
KEYWORD(sil_stage) // This is only enabled when parsing .sil files.
|
|
|
|
// Statement keywords.
|
|
KEYWORD(if)
|
|
KEYWORD(do)
|
|
KEYWORD(else)
|
|
KEYWORD(for)
|
|
KEYWORD(in)
|
|
KEYWORD(while)
|
|
KEYWORD(return)
|
|
KEYWORD(break)
|
|
KEYWORD(continue)
|
|
KEYWORD(fallthrough)
|
|
KEYWORD(switch)
|
|
KEYWORD(case)
|
|
KEYWORD(default)
|
|
KEYWORD(where)
|
|
|
|
// Expression and type keywords.
|
|
KEYWORD(new)
|
|
KEYWORD(as)
|
|
KEYWORD(is)
|
|
KEYWORD(super)
|
|
KEYWORD(self)
|
|
KEYWORD(Self)
|
|
KEYWORD(weak)
|
|
KEYWORD(unowned)
|
|
KEYWORD(metatype)
|
|
KEYWORD(__FILE__)
|
|
KEYWORD(__LINE__)
|
|
KEYWORD(__COLUMN__)
|
|
|
|
// Pattern keywords.
|
|
KEYWORD(_)
|
|
|
|
// Punctuators.
|
|
PUNCTUATOR(l_paren, "(")
|
|
PUNCTUATOR(r_paren, ")")
|
|
PUNCTUATOR(l_brace, "{")
|
|
PUNCTUATOR(r_brace, "}")
|
|
PUNCTUATOR(l_square, "[")
|
|
PUNCTUATOR(r_square, "]")
|
|
|
|
PUNCTUATOR(period, ".")
|
|
PUNCTUATOR(period_prefix, ".")
|
|
PUNCTUATOR(comma, ",")
|
|
PUNCTUATOR(colon, ":")
|
|
PUNCTUATOR(semi, ";")
|
|
PUNCTUATOR(equal, "=")
|
|
PUNCTUATOR(ellipsis, "...")
|
|
|
|
PUNCTUATOR(amp_prefix, "&")
|
|
PUNCTUATOR(arrow, "->")
|
|
|
|
PUNCTUATOR(question, "?")
|
|
|
|
PUNCTUATOR(sil_at_sign, "@") // Only in SIL mode.
|
|
PUNCTUATOR(sil_dollar, "$") // Only in SIL mode.
|
|
PUNCTUATOR(sil_pound, "#") // Only in SIL mode.
|
|
PUNCTUATOR(sil_exclamation, "!") // Only in SIL mode.
|
|
|
|
|
|
#undef KEYWORD
|
|
#undef IDENTIFIER_KEYWORD
|
|
#undef PUNCTUATOR
|