17#ifndef FRONTENDS_PARSERS_PARSERDRIVER_H_ 
   18#define FRONTENDS_PARSERS_PARSERDRIVER_H_ 
   25#include "frontends/p4/symbol_table.h" 
   26#include "frontends/parsers/p4/abstractP4Lexer.hpp" 
   27#include "frontends/parsers/p4/p4AnnotationLexer.hpp" 
   29#include "lib/cstring.h" 
   30#include "lib/source_file.h" 
   88    int lineDirectiveLine = 0;
 
 
  113    static const IR::P4Program *
parse(std::istream &in, std::string_view sourceFile,
 
  114                                      unsigned sourceLine = 1);
 
  115    static const IR::P4Program *
parse(FILE *in, std::string_view sourceFile,
 
  116                                      unsigned sourceLine = 1);
 
  141    static const IR::Expression *parseExpression(
const Util::SourceInfo &srcInfo,
 
  147    static const IR::Expression *parseConstantOrStringLiteral(
 
  150    static const IR::StringLiteral *parseStringLiteral(
const Util::SourceInfo &srcInfo,
 
  178    friend class P4::P4Lexer;
 
  179    friend class P4::P4Parser;
 
  201    bool template_args = 
false;
 
  207    bool parse(AbstractP4Lexer &lexer, std::string_view sourceFile, 
unsigned sourceLine = 1);
 
  210    template <
typename T>
 
  217    IR::Type_Error *allErrors = 
nullptr;
 
 
  243    static const IR::V1Program *
parse(std::istream &in, std::string_view sourceFile,
 
  244                                      unsigned sourceLine = 1);
 
  245    static const IR::V1Program *
parse(FILE *in, std::string_view sourceFile,
 
  246                                      unsigned sourceLine = 1);
 
  249    friend class V1::V1Lexer;
 
  250    friend class V1::V1Parser;
 
 
Definition parserDriver.h:39
 
void onParseError(const Util::SourceInfo &location, const std::string &message)
Definition parserDriver.cpp:101
 
Util::SourceInfo yylloc
The location of the most recent token.
Definition parserDriver.h:81
 
void onReadToken(const char *text)
Notify that the lexer read a token. @text is the matched source text.
Definition parserDriver.cpp:72
 
void onReadComment(const char *text, bool lineComment)
Definition parserDriver.cpp:90
 
void onReadFileName(const char *text)
Notify that the lexer read a filename from a #line directive.
Definition parserDriver.cpp:94
 
void onReadLineNumber(const char *text)
Notify that the lexer read a line number from a #line directive.
Definition parserDriver.cpp:79
 
int saveState
Scratch storage for the lexer to remember its previous state.
Definition parserDriver.h:84
 
Util::InputSources * sources
The input sources that comprise the P4 program we're parsing.
Definition parserDriver.h:78
 
void onReadIdentifier(cstring id)
Notify that the lexer read an identifier, @id.
Definition parserDriver.cpp:99
 
A ParserDriver that can parse P4-16 programs.
Definition parserDriver.h:98
 
Util::ProgramStructure * structure
Semantic information about the program being parsed.
Definition parserDriver.h:189
 
void onReadErrorDeclaration(IR::Type_Error *error)
Notify that the parser parsed a P4 error declaration.
Definition parserDriver.cpp:272
 
static const IR::Vector< IR::Expression > * parseExpressionList(const Util::SourceInfo &srcInfo, const IR::Vector< IR::AnnotationToken > &body)
Definition parserDriver.cpp:165
 
IR::Vector< IR::Node > * nodes
Definition parserDriver.h:193
 
std::string stringLiteral
Definition parserDriver.h:197
 
static const IR::P4Program * parse(std::istream &in, std::string_view sourceFile, unsigned sourceLine=1)
Definition parserDriver.cpp:135
 
Definition symbol_table.h:39
 
Definition source_file.h:123
 
A ParserDriver that can parse P4-14 programs.
Definition parserDriver.h:228
 
IR::Vector< IR::Expression > makeExpressionList(const IR::NameList *list)
Definition parserDriver.cpp:321
 
void clearPragmas()
Clear the list of active pragmas.
Definition parserDriver.cpp:327
 
const IR::Annotations * takePragmasAsAnnotations()
Definition parserDriver.cpp:339
 
IR::V1Program * global
The root of the IR tree we're constructing.
Definition parserDriver.h:284
 
IR::Vector< IR::Annotation > takePragmasAsVector()
Definition parserDriver.cpp:333
 
void addPragma(IR::Annotation *pragma)
Add @pragma to the list of active pragmas.
Definition parserDriver.cpp:329
 
IR::Constant * constantFold(IR::Expression *expr)
Definition parserDriver.cpp:315
 
static const IR::V1Program * parse(std::istream &in, std::string_view sourceFile, unsigned sourceLine=1)
Definition parserDriver.cpp:287
 
Definition applyOptionsPragmas.cpp:24