18 #include <hilti/ast/all.h> 19 #include <hilti/base/preprocessor.h> 21 #include <spicy/ast/all.h> 22 #include <spicy/autogen/config.h> 26 spicy::detail::parser::Parser::token_type \ 27 spicy::detail::parser::Scanner::lex(spicy::detail::parser::Parser::semantic_type* yylval, \ 28 spicy::detail::parser::location* yylloc, \ 29 spicy::detail::parser::Driver* driver) 31 #ifndef __FLEX_LEXER_H 32 #define yyFlexLexer SpicyFlexLexer 33 #include <FlexLexer.h> 40 namespace logging::debug {
44 namespace detail::parser {
52 Driver() : _preprocessor(spicy::configuration().preprocessor_constants) {}
57 Scanner* scanner()
const {
return _scanner; }
58 Parser* parser()
const {
return _parser; }
62 std::string* currentFile() {
return &_filename; }
63 int currentLine() {
return _line; }
64 void error(
const std::string& msg,
const Meta& m);
65 void enablePatternMode();
66 void disablePatternMode();
67 void enableExpressionMode();
68 void disableExpressionMode();
69 void enableDottedIDMode();
70 void disableDottedIDMode();
71 void enableHookIDMode();
72 void disableHookIDMode();
73 void setDestinationModule(
Module m) { _module = std::move(m); }
74 void setDestinationExpression(Expression e) { _expression = std::move(e); }
76 void processPreprocessorLine(
const std::string_view& directive,
const std::string_view& expression,
const Meta& m);
80 Expression _expression;
81 std::string _filename;
83 Parser* _parser =
nullptr;
Definition: preprocessor.h:23