// Copyright 2017 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// No header inclusion guards _sic_ as this may be re-included with
// different X macro arguments.

#if !defined(TOKEN)
#define TOKEN(Name)
#endif

#if !defined(TOKEN_SUBKIND)
#define TOKEN_SUBKIND(Name, Spelling)
#endif

// Control and whitespace
TOKEN(NotAToken)
TOKEN(EndOfFile)
TOKEN(Comment)
TOKEN(DocComment)

// Identifiers and constants
TOKEN(Identifier)
TOKEN(NumericLiteral)
TOKEN(StringLiteral)

// Punctuation.
TOKEN(LeftParen)
TOKEN(RightParen)
TOKEN(LeftSquare)
TOKEN(RightSquare)
TOKEN(LeftCurly)
TOKEN(RightCurly)
TOKEN(LeftAngle)
TOKEN(RightAngle)

TOKEN(Dot)
TOKEN(Comma)
TOKEN(Semicolon)
TOKEN(Colon)
TOKEN(Question)
TOKEN(Equal)
TOKEN(Ampersand)
TOKEN(Arrow)
TOKEN(Pipe)

// Token subkinds
TOKEN_SUBKIND(As, "as")
TOKEN_SUBKIND(Alias, "alias")
TOKEN_SUBKIND(Library, "library")
TOKEN_SUBKIND(Using, "using")

TOKEN_SUBKIND(Array, "array")
TOKEN_SUBKIND(Request, "request")
TOKEN_SUBKIND(String, "string")
TOKEN_SUBKIND(Vector, "vector")

// TOKEN_SUBKIND(Max, "MAX")
// MAX is not a real keyword, but it effectively works like one. It can be used
// as vector<T>:MAX or string:MAX. See Library::ResolveSizeBound in flat_ast.cc.

TOKEN_SUBKIND(Bits, "bits")
TOKEN_SUBKIND(Const, "const")
TOKEN_SUBKIND(Enum, "enum")
TOKEN_SUBKIND(Protocol, "protocol")
TOKEN_SUBKIND(Resource, "resource")
TOKEN_SUBKIND(ResourceDefinition, "resource_definition")
TOKEN_SUBKIND(Service, "service")
TOKEN_SUBKIND(Strict, "strict")
TOKEN_SUBKIND(Struct, "struct")
TOKEN_SUBKIND(Table, "table")
TOKEN_SUBKIND(Flexible, "flexible")
TOKEN_SUBKIND(DeprecatedSyntax, "deprecated_syntax")
TOKEN_SUBKIND(Type, "type")
TOKEN_SUBKIND(Union, "union")
TOKEN_SUBKIND(XUnion, "xunion")

TOKEN_SUBKIND(Error, "error")

TOKEN_SUBKIND(True, "true")
TOKEN_SUBKIND(False, "false")

TOKEN_SUBKIND(Reserved, "reserved")
TOKEN_SUBKIND(Properties, "properties")

#undef TOKEN_SUBKIND
#undef TOKEN
