{{=@@ @@=}} #pragma once #if !defined(yyFlexLexerOnce) # include #endif #include "@@{argspec}@@ArgGrammarDriver.hpp" #include #include #include namespace @@{argspec}@@ArgGrammar { class Scanner : public yyFlexLexer { public: using Result = Driver::Result; Scanner(int argc, char* argv[], Driver& driver); virtual ~Scanner() = default; using FlexLexer::yylex; virtual int yylex(Parser::semantic_type* const lval); void resetOnWrap(); void setResult(Result result); private: int argc, argi; char** argv; Driver& driver; std::stringstream streamInput; std::optional resetVal; Parser::semantic_type* yyval = nullptr; protected: int yywrap() override; }; } // namespace trueArgGrammar