LLVM 22.0.0git
|
Parser class for OpenMP directive names. More...
#include "llvm/Frontend/OpenMP/DirectiveNameParser.h"
Classes | |
struct | State |
Public Member Functions | |
LLVM_ABI | DirectiveNameParser (SourceLanguage L=SourceLanguage::C) |
const State * | initial () const |
LLVM_ABI const State * | consume (const State *Current, StringRef Tok) const |
Static Public Member Functions | |
static LLVM_ABI SmallVector< StringRef > | tokenize (StringRef N) |
Parser class for OpenMP directive names.
It only recognizes names listed in OMP.td, in particular it does not recognize Fortran's end-directives if they are not explicitly listed in OMP.td.
The class itself may be a singleton, once it's constructed it never changes.
Usage: { DirectiveNameParser Parser; // Could be static const.
DirectiveNameParser::State *S = Parser.initial(); for (StringRef Token : Tokens) S = Parser.consume(S, Token); // Passing nullptr is ok.
if (S == nullptr) { // Error: ended up in a state from which there is no possible path // to a successful parse. } else if (S->Value == OMPD_unknown) { // Parsed a sequence of tokens that are not a complete name, but // parsing more tokens could lead to a successful parse. } else { // Success. ParsedId = S->Value; } }
Definition at line 47 of file DirectiveNameParser.h.
llvm::omp::DirectiveNameParser::DirectiveNameParser | ( | SourceLanguage | L = SourceLanguage::C | ) |
Definition at line 19 of file DirectiveNameParser.cpp.
References D, llvm::omp::getOpenMPVersions(), and I.
const DirectiveNameParser::State * llvm::omp::DirectiveNameParser::consume | ( | const State * | Current, |
StringRef | Tok | ||
) | const |
Definition at line 32 of file DirectiveNameParser.cpp.
References assert().
Definition at line 65 of file DirectiveNameParser.h.
|
static |
Definition at line 41 of file DirectiveNameParser.cpp.