forked from OSchip/llvm-project
Reapply [pseudo] Move pseudoparser from clang to clang-tools-extra"
This reverts commit 049f4e4eab
.
The problem was a stray dependency in CLANG_TEST_DEPS which caused cmake
to fail if clang-pseudo wasn't built. This is now removed.
This commit is contained in:
parent
049f4e4eab
commit
89cd86bbc5
|
@ -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.
|
||||
|
|
|
@ -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)
|
|
@ -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
|
|
@ -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
|
|
@ -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;
|
||||
}
|
||||
};
|
|
@ -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
|
|
@ -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
|
|
@ -1,6 +1,6 @@
|
|||
set(LLVM_LINK_COMPONENTS Support)
|
||||
|
||||
add_clang_library(clangToolingSyntaxPseudo
|
||||
add_clang_library(clangPseudo
|
||||
DirectiveMap.cpp
|
||||
Grammar.cpp
|
||||
GrammarBNF.cpp
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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})
|
|
@ -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,'')))
|
||||
|
|
@ -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")
|
|
@ -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']))
|
|
@ -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))
|
|
@ -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")
|
|
@ -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
|
||||
)
|
||||
|
|
@ -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;
|
|
@ -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
|
||||
)
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -19,5 +19,3 @@ add_clang_library(clangToolingSyntax
|
|||
DEPENDS
|
||||
omp_gen
|
||||
)
|
||||
|
||||
add_subdirectory(Pseudo)
|
||||
|
|
|
@ -76,7 +76,6 @@ list(APPEND CLANG_TEST_DEPS
|
|||
clang-repl
|
||||
clang-diff
|
||||
clang-scan-deps
|
||||
clang-pseudo
|
||||
diagtool
|
||||
hmaptool
|
||||
)
|
||||
|
|
|
@ -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)))
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -28,5 +28,3 @@ target_link_libraries(SyntaxTests
|
|||
PRIVATE
|
||||
LLVMTestingSupport
|
||||
)
|
||||
|
||||
add_subdirectory(Pseudo)
|
||||
|
|
Loading…
Reference in New Issue