[pseudo] Move pseudoparser from clang to clang-tools-extra

This should make clearer that:
 - it's not part of clang proper
 - there's no expectation to update it along with clang (beyond green tests)
 - clang should not depend on it

This is intended to be expose a library, so unlike other tools has a split
between include/ and lib/.

The main renames are:
  clang/lib/Tooling/Syntax/Pseudo/*           => clang-tools-extra/pseudo/lib/*
  clang/include/clang/Tooling/Syntax/Pseudo/* => clang-tools-extra/pseudo/include/clang-pseudo/*
  clang/tools/clang/pseudo/*                  => clang-tools-extra/pseudo/tool/*
  clang/test/Syntax/*                         => clang-tools-extra/pseudo/test/*
  clang/unittests/Tooling/Syntax/Pseudo/*     => clang-tools-extra/pseudo/unittests/*
  #include "clang/Tooling/Syntax/Pseudo/*"    => #include "clang-pseudo/*"
  namespace clang::syntax::pseudo             => namespace clang::pseudo
  check-clang                                 => check-clang-pseudo
  clangToolingSyntaxPseudo                    => clangPseudo
The clang-pseudo and ClangPseudoTests binaries are not renamed.

See discussion around:
https://discourse.llvm.org/t/rfc-a-c-pseudo-parser-for-tooling/59217/50

Differential Revision: https://reviews.llvm.org/D121233
This commit is contained in:
Sam McCall 2022-03-08 19:31:32 +01:00
parent 78d29203ad
commit b97856c4cf
39 changed files with 180 additions and 117 deletions

View File

@ -15,6 +15,7 @@ add_subdirectory(clang-include-fixer)
add_subdirectory(clang-move)
add_subdirectory(clang-query)
add_subdirectory(pp-trace)
add_subdirectory(pseudo)
add_subdirectory(tool-template)
# Add the common testsuite after all the tools.

View File

@ -0,0 +1,6 @@
include_directories(include)
include_directories(${CMAKE_CURRENT_BINARY_DIR}/include)
add_subdirectory(lib)
add_subdirectory(tool)
add_subdirectory(unittests)
add_subdirectory(test)

View File

@ -25,16 +25,15 @@
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_TOOLING_SYNTAX_PREPROCESS_H
#define LLVM_CLANG_TOOLING_SYNTAX_PREPROCESS_H
#ifndef CLANG_PSEUDO_DIRECTIVEMAP_H
#define CLANG_PSEUDO_DIRECTIVEMAP_H
#include "clang-pseudo/Token.h"
#include "clang/Basic/TokenKinds.h"
#include "clang/Tooling/Syntax/Pseudo/Token.h"
#include <vector>
namespace clang {
class LangOptions;
namespace syntax {
namespace pseudo {
/// Describes the structure of a source file, as seen by the preprocessor.
@ -142,7 +141,6 @@ private:
};
} // namespace pseudo
} // namespace syntax
} // namespace clang
#endif

View File

@ -33,8 +33,8 @@
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_TOOLING_SYNTAX_GRAMMAR_H
#define LLVM_CLANG_TOOLING_SYNTAX_GRAMMAR_H
#ifndef CLANG_PSEUDO_GRAMMAR_H
#define CLANG_PSEUDO_GRAMMAR_H
#include "clang/Basic/TokenKinds.h"
#include "llvm/ADT/ArrayRef.h"
@ -44,7 +44,6 @@
#include <vector>
namespace clang {
namespace syntax {
namespace pseudo {
// A SymbolID uniquely identifies a terminal/non-terminal symbol in a grammar.
// Non-terminal IDs are indexes into a table of non-terminal symbols.
@ -178,7 +177,6 @@ struct GrammarTable {
};
} // namespace pseudo
} // namespace syntax
} // namespace clang
#endif // LLVM_CLANG_TOOLING_SYNTAX_GRAMMAR_H

View File

@ -28,15 +28,14 @@
// in making decisions.
//===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_TOOLING_SYNTAX_PSEUDO_LRGRAPH_H
#define LLVM_CLANG_TOOLING_SYNTAX_PSEUDO_LRGRAPH_H
#ifndef CLANG_PSEUDO_LRGRAPH_H
#define CLANG_PSEUDO_LRGRAPH_H
#include "clang/Tooling/Syntax/Pseudo/Grammar.h"
#include "clang-pseudo/Grammar.h"
#include "llvm/ADT/Hashing.h"
#include <vector>
namespace clang {
namespace syntax {
namespace pseudo {
// An LR item -- a grammar rule with a dot at some position of the body.
@ -152,23 +151,22 @@ private:
};
} // namespace pseudo
} // namespace syntax
} // namespace clang
namespace llvm {
// Support clang::syntax::pseudo::Item as DenseMap keys.
template <> struct DenseMapInfo<clang::syntax::pseudo::Item> {
static inline clang::syntax::pseudo::Item getEmptyKey() {
return clang::syntax::pseudo::Item::sentinel(-1);
// Support clang::pseudo::Item as DenseMap keys.
template <> struct DenseMapInfo<clang::pseudo::Item> {
static inline clang::pseudo::Item getEmptyKey() {
return clang::pseudo::Item::sentinel(-1);
}
static inline clang::syntax::pseudo::Item getTombstoneKey() {
return clang::syntax::pseudo::Item::sentinel(-2);
static inline clang::pseudo::Item getTombstoneKey() {
return clang::pseudo::Item::sentinel(-2);
}
static unsigned getHashValue(const clang::syntax::pseudo::Item &I) {
static unsigned getHashValue(const clang::pseudo::Item &I) {
return hash_value(I);
}
static bool isEqual(const clang::syntax::pseudo::Item &LHS,
const clang::syntax::pseudo::Item &RHS) {
static bool isEqual(const clang::pseudo::Item &LHS,
const clang::pseudo::Item &RHS) {
return LHS == RHS;
}
};

View File

@ -34,16 +34,15 @@
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_TOOLING_SYNTAX_PSEUDO_LRTABLE_H
#define LLVM_CLANG_TOOLING_SYNTAX_PSEUDO_LRTABLE_H
#ifndef CLANG_PSEUDO_LRTABLE_H
#define CLANG_PSEUDO_LRTABLE_H
#include "clang/Tooling/Syntax/Pseudo/Grammar.h"
#include "clang-pseudo/Grammar.h"
#include "llvm/ADT/ArrayRef.h"
#include <cstdint>
#include <vector>
namespace clang {
namespace syntax {
namespace pseudo {
// Represents the LR parsing table, which can efficiently the question "what is
@ -176,7 +175,6 @@ private:
llvm::raw_ostream &operator<<(llvm::raw_ostream &, const LRTable::Action &);
} // namespace pseudo
} // namespace syntax
} // namespace clang
#endif // LLVM_CLANG_TOOLING_SYNTAX_PSEUDO_LRTABLE_H

View File

@ -25,8 +25,8 @@
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_TOOLING_SYNTAX_TOKEN_H
#define LLVM_CLANG_TOOLING_SYNTAX_TOKEN_H
#ifndef CLANG_PSEUDO_TOKEN_H
#define CLANG_PSEUDO_TOKEN_H
#include "clang/Basic/LLVM.h"
#include "clang/Basic/TokenKinds.h"
@ -39,7 +39,6 @@
namespace clang {
class LangOptions;
namespace syntax {
namespace pseudo {
/// A single C++ or preprocessor token.
@ -199,7 +198,6 @@ TokenStream cook(const TokenStream &, const clang::LangOptions &);
TokenStream stripComments(const TokenStream &);
} // namespace pseudo
} // namespace syntax
} // namespace clang
#endif

View File

@ -1,6 +1,6 @@
set(LLVM_LINK_COMPONENTS Support)
add_clang_library(clangToolingSyntaxPseudo
add_clang_library(clangPseudo
DirectiveMap.cpp
Grammar.cpp
GrammarBNF.cpp

View File

@ -6,13 +6,12 @@
//
//===----------------------------------------------------------------------===//
#include "clang/Tooling/Syntax/Pseudo/DirectiveMap.h"
#include "clang-pseudo/DirectiveMap.h"
#include "clang/Basic/IdentifierTable.h"
#include "clang/Basic/TokenKinds.h"
#include "llvm/Support/FormatVariadic.h"
namespace clang {
namespace syntax {
namespace pseudo {
namespace {
@ -151,8 +150,8 @@ DirectiveMap DirectiveMap::parse(const TokenStream &Code) {
}
static void dump(llvm::raw_ostream &OS, const DirectiveMap &, unsigned Indent);
static void dump(llvm::raw_ostream &OS, const DirectiveMap::Directive &Directive,
unsigned Indent) {
static void dump(llvm::raw_ostream &OS,
const DirectiveMap::Directive &Directive, unsigned Indent) {
OS.indent(Indent) << llvm::formatv("#{0} ({1} tokens)\n",
tok::getPPKeywordSpelling(Directive.Kind),
Directive.Tokens.size());
@ -205,5 +204,4 @@ OSTREAM_DUMP(DirectiveMap::Code)
#undef OSTREAM_DUMP
} // namespace pseudo
} // namespace syntax
} // namespace clang

View File

@ -6,7 +6,7 @@
//
//===----------------------------------------------------------------------===//
#include "clang/Tooling/Syntax/Pseudo/Grammar.h"
#include "clang-pseudo/Grammar.h"
#include "clang/Basic/TokenKinds.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/STLExtras.h"
@ -15,7 +15,6 @@
#include "llvm/Support/raw_ostream.h"
namespace clang {
namespace syntax {
namespace pseudo {
Rule::Rule(SymbolID Target, llvm::ArrayRef<SymbolID> Sequence)
@ -181,5 +180,4 @@ static llvm::ArrayRef<std::string> getTerminalNames() {
GrammarTable::GrammarTable() : Terminals(getTerminalNames()) {}
} // namespace pseudo
} // namespace syntax
} // namespace clang

View File

@ -6,15 +6,14 @@
//
//===----------------------------------------------------------------------===//
#include "clang-pseudo/Grammar.h"
#include "clang/Basic/TokenKinds.h"
#include "clang/Tooling/Syntax/Pseudo/Grammar.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/Support/FormatVariadic.h"
#include <memory>
namespace clang {
namespace syntax {
namespace pseudo {
namespace {
@ -244,5 +243,4 @@ Grammar::parseBNF(llvm::StringRef BNF, std::vector<std::string> &Diagnostics) {
}
} // namespace pseudo
} // namespace syntax
} // namespace clang

View File

@ -6,8 +6,8 @@
//
//===----------------------------------------------------------------------===//
#include "clang/Tooling/Syntax/Pseudo/LRGraph.h"
#include "clang/Tooling/Syntax/Pseudo/Grammar.h"
#include "clang-pseudo/LRGraph.h"
#include "clang-pseudo/Grammar.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/Hashing.h"
#include "llvm/ADT/STLExtras.h"
@ -15,16 +15,16 @@
#include "llvm/Support/FormatVariadic.h"
#include "llvm/Support/raw_ostream.h"
using ItemSet = std::vector<clang::syntax::pseudo::Item>;
using ItemSet = std::vector<clang::pseudo::Item>;
namespace llvm {
// Support clang::syntax::pseudo::Item as DenseMap keys.
// Support clang::pseudo::Item as DenseMap keys.
template <> struct DenseMapInfo<ItemSet> {
static inline ItemSet getEmptyKey() {
return {DenseMapInfo<clang::syntax::pseudo::Item>::getEmptyKey()};
return {DenseMapInfo<clang::pseudo::Item>::getEmptyKey()};
}
static inline ItemSet getTombstoneKey() {
return {DenseMapInfo<clang::syntax::pseudo::Item>::getTombstoneKey()};
return {DenseMapInfo<clang::pseudo::Item>::getTombstoneKey()};
}
static unsigned getHashValue(const ItemSet &I) {
return llvm::hash_combine_range(I.begin(), I.end());
@ -36,7 +36,6 @@ template <> struct DenseMapInfo<ItemSet> {
} // namespace llvm
namespace clang {
namespace syntax {
namespace pseudo {
namespace {
@ -227,5 +226,4 @@ LRGraph LRGraph::buildLR0(const Grammar &G) {
}
} // namespace pseudo
} // namespace syntax
} // namespace clang

View File

@ -6,8 +6,8 @@
//
//===----------------------------------------------------------------------===//
#include "clang/Tooling/Syntax/Pseudo/LRTable.h"
#include "clang/Tooling/Syntax/Pseudo/Grammar.h"
#include "clang-pseudo/LRTable.h"
#include "clang-pseudo/Grammar.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/Support/ErrorHandling.h"
@ -15,7 +15,6 @@
#include "llvm/Support/raw_ostream.h"
namespace clang {
namespace syntax {
namespace pseudo {
llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, const LRTable::Action &A) {
@ -122,5 +121,4 @@ llvm::ArrayRef<LRTable::Action> LRTable::find(StateID Src, SymbolID ID) const {
}
} // namespace pseudo
} // namespace syntax
} // namespace clang

View File

@ -6,23 +6,23 @@
//
//===----------------------------------------------------------------------===//
#include "clang-pseudo/Grammar.h"
#include "clang-pseudo/LRGraph.h"
#include "clang-pseudo/LRTable.h"
#include "clang/Basic/TokenKinds.h"
#include "clang/Tooling/Syntax/Pseudo/Grammar.h"
#include "clang/Tooling/Syntax/Pseudo/LRGraph.h"
#include "clang/Tooling/Syntax/Pseudo/LRTable.h"
#include <cstdint>
namespace llvm {
template <> struct DenseMapInfo<clang::syntax::pseudo::LRTable::Entry> {
using Entry = clang::syntax::pseudo::LRTable::Entry;
template <> struct DenseMapInfo<clang::pseudo::LRTable::Entry> {
using Entry = clang::pseudo::LRTable::Entry;
static inline Entry getEmptyKey() {
static Entry E{static_cast<clang::syntax::pseudo::SymbolID>(-1), 0,
clang::syntax::pseudo::LRTable::Action::sentinel()};
static Entry E{static_cast<clang::pseudo::SymbolID>(-1), 0,
clang::pseudo::LRTable::Action::sentinel()};
return E;
}
static inline Entry getTombstoneKey() {
static Entry E{static_cast<clang::syntax::pseudo::SymbolID>(-2), 0,
clang::syntax::pseudo::LRTable::Action::sentinel()};
static Entry E{static_cast<clang::pseudo::SymbolID>(-2), 0,
clang::pseudo::LRTable::Action::sentinel()};
return E;
}
static unsigned getHashValue(const Entry &I) {
@ -36,7 +36,6 @@ template <> struct DenseMapInfo<clang::syntax::pseudo::LRTable::Entry> {
} // namespace llvm
namespace clang {
namespace syntax {
namespace pseudo {
class LRTable::Builder {
@ -139,5 +138,4 @@ LRTable LRTable::buildSLR(const Grammar &G) {
}
} // namespace pseudo
} // namespace syntax
} // namespace clang

View File

@ -6,14 +6,13 @@
//
//===----------------------------------------------------------------------===//
#include "clang-pseudo/Token.h"
#include "clang/Basic/SourceLocation.h"
#include "clang/Basic/TokenKinds.h"
#include "clang/Lex/Lexer.h"
#include "clang/Lex/LiteralSupport.h"
#include "clang/Tooling/Syntax/Pseudo/Token.h"
namespace clang {
namespace syntax {
namespace pseudo {
TokenStream lex(const std::string &Code, const clang::LangOptions &LangOpts) {
@ -110,5 +109,4 @@ TokenStream cook(const TokenStream &Code, const LangOptions &LangOpts) {
}
} // namespace pseudo
} // namespace syntax
} // namespace clang

View File

@ -6,13 +6,12 @@
//
//===----------------------------------------------------------------------===//
#include "clang/Tooling/Syntax/Pseudo/Token.h"
#include "clang-pseudo/Token.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/Support/Format.h"
#include "llvm/Support/FormatVariadic.h"
namespace clang {
namespace syntax {
namespace pseudo {
llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, const Token &T) {
@ -105,5 +104,4 @@ TokenStream stripComments(const TokenStream &Input) {
}
} // namespace pseudo
} // namespace syntax
} // namespace clang

View File

@ -0,0 +1,38 @@
# Set CLANG_TOOLS_DIR to buildtree/bin, or buildtree/%(build_mode)s/bin if the
# location is dynamic. The latter must be interpolated by lit configs.
# FIXME: this is duplicated in many places.
if (CMAKE_CFG_INTDIR STREQUAL ".")
set(LLVM_BUILD_MODE ".")
else ()
set(LLVM_BUILD_MODE "%(build_mode)s")
endif ()
string(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} CLANG_TOOLS_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
set(CLANG_PSEUDO_TEST_DEPS
clang-pseudo
ClangPseudoTests
)
foreach(dep FileCheck not)
if(TARGET ${dep})
list(APPEND CLANG_PSEUDO_TEST_DEPS ${dep})
endif()
endforeach()
configure_lit_site_cfg(
${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in
${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py
MAIN_CONFIG
${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py
)
configure_lit_site_cfg(
${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.py.in
${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg.py
MAIN_CONFIG
${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.cfg.py
)
add_lit_testsuite(check-clang-pseudo "Running the clang-pseudo regression tests"
${CMAKE_CURRENT_BINARY_DIR}
DEPENDS ${CLANG_PSEUDO_TEST_DEPS})

View File

@ -0,0 +1,19 @@
import lit.formats
config.name = "clangPseudo Unit Tests"
config.test_format = lit.formats.GoogleTest('.', 'Tests')
config.test_source_root = config.clang_pseudo_binary_dir + "/unittests"
config.test_exec_root = config.clang_pseudo_binary_dir + "/unittests"
# Point the dynamic loader at dynamic libraries in 'lib'.
# FIXME: it seems every project has a copy of this logic. Move it somewhere.
import platform
if platform.system() == 'Darwin':
shlibpath_var = 'DYLD_LIBRARY_PATH'
elif platform.system() == 'Windows':
shlibpath_var = 'PATH'
else:
shlibpath_var = 'LD_LIBRARY_PATH'
config.environment[shlibpath_var] = os.path.pathsep.join((
"@SHLIBDIR@", "@LLVM_LIBS_DIR@",
config.environment.get(shlibpath_var,'')))

View File

@ -0,0 +1,11 @@
@LIT_SITE_CFG_IN_HEADER@
# This is a shim to run the gtest unittests in ../unittests using lit.
config.llvm_libs_dir = "@LLVM_LIBS_DIR@"
config.shlibdir = "@SHLIBDIR@"
config.clang_pseudo_source_dir = "@CMAKE_CURRENT_SOURCE_DIR@/.."
config.clang_pseudo_binary_dir = "@CMAKE_CURRENT_BINARY_DIR@/.."
# Delegate logic to lit.cfg.py.
lit_config.load_config(config, "@CMAKE_CURRENT_SOURCE_DIR@/Unit/lit.cfg.py")

View File

@ -0,0 +1,16 @@
import lit.llvm
lit.llvm.initialize(lit_config, config)
lit.llvm.llvm_config.use_default_substitutions()
config.name = 'ClangPseudo'
config.suffixes = ['.test', '.c', '.cpp']
config.excludes = ['Inputs']
config.test_format = lit.formats.ShTest(not lit.llvm.llvm_config.use_lit_shell)
config.test_source_root = config.clang_pseudo_source_dir + "/test"
config.test_exec_root = config.clang_pseudo_binary_dir + "/test"
config.environment['PATH'] = os.path.pathsep.join((
config.clang_tools_dir,
config.llvm_tools_dir,
config.environment['PATH']))

View File

@ -0,0 +1,2 @@
cxx_bnf_file = os.path.join(config.clang_pseudo_source_dir, 'lib', 'cxx.bnf')
config.substitutions.append(('%cxx-bnf-file', cxx_bnf_file))

View File

@ -0,0 +1,14 @@
@LIT_SITE_CFG_IN_HEADER@
# Variables needed for common llvm config.
config.clang_tools_dir = "@CLANG_TOOLS_DIR@"
config.lit_tools_dir = "@LLVM_LIT_TOOLS_DIR@"
config.llvm_tools_dir = lit_config.substitute("@LLVM_TOOLS_DIR@")
config.llvm_libs_dir = lit_config.substitute("@LLVM_LIBS_DIR@")
config.target_triple = "@TARGET_TRIPLE@"
config.python_executable = "@Python3_EXECUTABLE@"
config.clang_pseudo_source_dir = "@CMAKE_CURRENT_SOURCE_DIR@/.."
config.clang_pseudo_binary_dir = "@CMAKE_CURRENT_BINARY_DIR@/.."
# Delegate logic to lit.cfg.py.
lit_config.load_config(config, "@CMAKE_CURRENT_SOURCE_DIR@/lit.cfg.py")

View File

@ -4,12 +4,13 @@ add_clang_tool(clang-pseudo
ClangPseudo.cpp
)
set(CLANG_PSEUDO_LIB_DEPS
clangBasic
clangToolingSyntaxPseudo
)
clang_target_link_libraries(clang-pseudo
PRIVATE
${CLANG_PSEUDO_LIB_DEPS}
clangBasic
)
target_link_libraries(clang-pseudo
PRIVATE
clangPseudo
)

View File

@ -6,18 +6,18 @@
//
//===----------------------------------------------------------------------===//
#include "clang-pseudo/DirectiveMap.h"
#include "clang-pseudo/Grammar.h"
#include "clang-pseudo/LRGraph.h"
#include "clang-pseudo/LRTable.h"
#include "clang-pseudo/Token.h"
#include "clang/Basic/LangOptions.h"
#include "clang/Tooling/Syntax/Pseudo/DirectiveMap.h"
#include "clang/Tooling/Syntax/Pseudo/Grammar.h"
#include "clang/Tooling/Syntax/Pseudo/LRGraph.h"
#include "clang/Tooling/Syntax/Pseudo/LRTable.h"
#include "clang/Tooling/Syntax/Pseudo/Token.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/FormatVariadic.h"
#include "llvm/Support/MemoryBuffer.h"
using clang::syntax::pseudo::Grammar;
using clang::pseudo::Grammar;
using llvm::cl::desc;
using llvm::cl::init;
using llvm::cl::opt;
@ -64,19 +64,17 @@ int main(int argc, char *argv[]) {
if (PrintGrammar)
llvm::outs() << G->dump();
if (PrintGraph)
llvm::outs() << clang::syntax::pseudo::LRGraph::buildLR0(*G).dumpForTests(
*G);
llvm::outs() << clang::pseudo::LRGraph::buildLR0(*G).dumpForTests(*G);
if (PrintTable)
llvm::outs() << clang::syntax::pseudo::LRTable::buildSLR(*G).dumpForTests(
*G);
llvm::outs() << clang::pseudo::LRTable::buildSLR(*G).dumpForTests(*G);
return 0;
}
if (Source.getNumOccurrences()) {
std::string Text = readOrDie(Source);
clang::LangOptions LangOpts; // FIXME: use real options.
auto Stream = clang::syntax::pseudo::lex(Text, LangOpts);
auto Structure = clang::syntax::pseudo::DirectiveMap::parse(Stream);
auto Stream = clang::pseudo::lex(Text, LangOpts);
auto Structure = clang::pseudo::DirectiveMap::parse(Stream);
if (PrintDirectiveMap)
llvm::outs() << Structure;

View File

@ -2,7 +2,8 @@ set(LLVM_LINK_COMPONENTS
Support
)
add_clang_unittest(ClangPseudoTests
add_custom_target(ClangPseudoUnitTests)
add_unittest(ClangPseudoUnitTests ClangPseudoTests
DirectiveMapTest.cpp
GrammarTest.cpp
LRTableTest.cpp
@ -13,11 +14,10 @@ clang_target_link_libraries(ClangPseudoTests
PRIVATE
clangBasic
clangLex
clangToolingSyntaxPseudo
clangTesting
)
target_link_libraries(ClangPseudoTests
PRIVATE
LLVMTestingSupport
clangPseudo
)

View File

@ -6,18 +6,17 @@
//
//===----------------------------------------------------------------------===//
#include "clang/Tooling/Syntax/Pseudo/DirectiveMap.h"
#include "clang-pseudo/DirectiveMap.h"
#include "clang-pseudo/Token.h"
#include "clang/Basic/LangOptions.h"
#include "clang/Basic/TokenKinds.h"
#include "clang/Tooling/Syntax/Pseudo/Token.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringRef.h"
#include "gmock/gmock.h"
#include "gtest/gtest.h"
namespace clang {
namespace syntax {
namespace pseudo {
namespace {
@ -148,5 +147,4 @@ TEST(DirectiveMap, ParseBroken) {
} // namespace
} // namespace pseudo
} // namespace syntax
} // namespace clang

View File

@ -6,13 +6,12 @@
//
//===----------------------------------------------------------------------===//
#include "clang/Tooling/Syntax/Pseudo/Grammar.h"
#include "clang-pseudo/Grammar.h"
#include "gmock/gmock.h"
#include "gtest/gtest.h"
#include <memory>
namespace clang {
namespace syntax {
namespace pseudo {
namespace {
@ -157,5 +156,4 @@ simple-type-specifier := INT
} // namespace
} // namespace pseudo
} // namespace syntax
} // namespace clang

View File

@ -6,15 +6,14 @@
//
//===----------------------------------------------------------------------===//
#include "clang/Tooling/Syntax/Pseudo/LRTable.h"
#include "clang-pseudo/LRTable.h"
#include "clang-pseudo/Grammar.h"
#include "clang/Basic/TokenKinds.h"
#include "clang/Tooling/Syntax/Pseudo/Grammar.h"
#include "gmock/gmock.h"
#include "gtest/gtest.h"
#include <vector>
namespace clang {
namespace syntax {
namespace pseudo {
namespace {
@ -52,5 +51,4 @@ TEST(LRTable, Builder) {
} // namespace
} // namespace pseudo
} // namespace syntax
} // namespace clang

View File

@ -6,14 +6,13 @@
//
//===----------------------------------------------------------------------===//
#include "clang/Tooling/Syntax/Pseudo/Token.h"
#include "clang-pseudo/Token.h"
#include "clang/Basic/LangOptions.h"
#include "clang/Basic/TokenKinds.h"
#include "gmock/gmock.h"
#include "gtest/gtest.h"
namespace clang {
namespace syntax {
namespace pseudo {
namespace {
@ -191,5 +190,4 @@ TEST(TokenTest, DropComments) {
} // namespace
} // namespace pseudo
} // namespace syntax
} // namespace clang

View File

@ -19,5 +19,3 @@ add_clang_library(clangToolingSyntax
DEPENDS
omp_gen
)
add_subdirectory(Pseudo)

View File

@ -1,4 +0,0 @@
cxx_bnf_file = os.path.join(config.clang_src_dir, 'lib', 'Tooling', 'Syntax',
'Pseudo', 'cxx.bnf')
config.substitutions.append(('%cxx-bnf-file',
'%s' % (cxx_bnf_file)))

View File

@ -14,7 +14,6 @@ add_clang_subdirectory(clang-offload-bundler)
add_clang_subdirectory(clang-offload-wrapper)
add_clang_subdirectory(clang-scan-deps)
add_clang_subdirectory(clang-repl)
add_clang_subdirectory(clang-pseudo)
add_clang_subdirectory(c-index-test)

View File

@ -28,5 +28,3 @@ target_link_libraries(SyntaxTests
PRIVATE
LLVMTestingSupport
)
add_subdirectory(Pseudo)