// Part of the Carbon Language project, under the Apache License v2.0 with LLVM // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception #ifndef EXECUTABLE_SEMANTICS_AST_AST_H_ #define EXECUTABLE_SEMANTICS_AST_AST_H_ #include #include "executable_semantics/ast/declaration.h" #include "executable_semantics/ast/library_name.h" #include "executable_semantics/common/nonnull.h" namespace Carbon { // A Carbon file's AST. struct AST { // The package directive's library. LibraryName package; // The package directive's API or impl state. bool is_api; // Import directives. std::vector imports; // The file's ordered declarations. std::vector> declarations; // Synthesized call to `Main`. Injected after parsing. std::optional> main_call; }; } // namespace Carbon #endif // EXECUTABLE_SEMANTICS_AST_AST_H_