llvm/lld/ELF/ScriptLexer.cpp

//===- ScriptLexer.cpp ----------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//
// This file defines a lexer for the linker script.
//
// The linker script's grammar is not complex but ambiguous due to the
// lack of the formal specification of the language. What we are trying to
// do in this and other files in LLD is to make a "reasonable" linker
// script processor.
//
// Among simplicity, compatibility and efficiency, we put the most
// emphasis on simplicity when we wrote this lexer. Compatibility with the
// GNU linkers is important, but we did not try to clone every tiny corner
// case of their lexers, as even ld.bfd and ld.gold are subtly different
// in various corner cases. We do not care much about efficiency because
// the time spent in parsing linker scripts is usually negligible.
//
// Overall, this lexer works fine for most linker scripts. There might
// be room for improving compatibility, but that's probably not at the
// top of our todo list.
//
//===----------------------------------------------------------------------===//

#include "ScriptLexer.h"
#include "Config.h"
#include "lld/Common/ErrorHandler.h"
#include "llvm/ADT/Twine.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/Path.h"
#include <algorithm>

usingnamespacellvm;
usingnamespacelld;
usingnamespacelld::elf;

ScriptLexer::Buffer::Buffer(MemoryBufferRef mb)
    :{}

ScriptLexer::ScriptLexer(MemoryBufferRef mb) :{}

// Returns a whole line containing the current token.
StringRef ScriptLexer::getLine() {}

// Returns 0-based column number of the current token.
size_t ScriptLexer::getColumnNumber() {}

std::string ScriptLexer::getCurrentLocation() {}

// We don't want to record cascading errors. Keep only the first one.
void ScriptLexer::setError(const Twine &msg) {}

void ScriptLexer::lex() {}

// Skip leading whitespace characters or comments.
StringRef ScriptLexer::skipSpace(StringRef s) {}

// Used to determine whether to stop parsing. Treat errors like EOF.
bool ScriptLexer::atEOF() {}

StringRef ScriptLexer::next() {}

StringRef ScriptLexer::peek() {}

bool ScriptLexer::consume(StringRef tok) {}

void ScriptLexer::skip() {}

void ScriptLexer::expect(StringRef expect) {}

ScriptLexer::Token ScriptLexer::till(StringRef tok) {}

// Returns true if S encloses T.
static bool encloses(StringRef s, StringRef t) {}

MemoryBufferRef ScriptLexer::getCurrentMB() {}