diff options
-rw-r--r-- | project2/files/configFlexLexer.cpp | 8 | ||||
-rw-r--r-- | project2/files/configFlexLexer.h | 1 | ||||
-rw-r--r-- | project2/files/configuration.ll | 12 | ||||
-rw-r--r-- | project2/files/optionsSource.cpp | 1 | ||||
-rw-r--r-- | project2/sql/sql.ll | 10 | ||||
-rw-r--r-- | project2/sql/sqlFlexLexer.cpp | 4 | ||||
-rw-r--r-- | project2/sql/sqlFlexLexer.h | 4 |
7 files changed, 29 insertions, 11 deletions
diff --git a/project2/files/configFlexLexer.cpp b/project2/files/configFlexLexer.cpp index fe44b0c..6d6f700 100644 --- a/project2/files/configFlexLexer.cpp +++ b/project2/files/configFlexLexer.cpp @@ -1,4 +1,5 @@ -#include "FlexLexer.h" +#define yyFlexLexer configBaseFlexLexer +#include <FlexLexer.h> #include "configFlexLexer.h" #include <stdexcept> @@ -16,11 +17,6 @@ configFlexLexer::process() const } void -configFlexLexer::LexerOutput(const char *, int) -{ -} - -void configFlexLexer::LexerError(const char * msg) { throw std::runtime_error(msg); diff --git a/project2/files/configFlexLexer.h b/project2/files/configFlexLexer.h index 177f11c..180c1fa 100644 --- a/project2/files/configFlexLexer.h +++ b/project2/files/configFlexLexer.h @@ -9,7 +9,6 @@ class configFlexLexer : public yyFlexLexer { configFlexLexer(std::istream & in, const ConfigConsumer & consume, const Options::CurrentPlatform &); int yylex(); - void LexerOutput(const char *, int) override; void LexerError(const char * msg) override; private: diff --git a/project2/files/configuration.ll b/project2/files/configuration.ll index b3c8de7..aa04456 100644 --- a/project2/files/configuration.ll +++ b/project2/files/configuration.ll @@ -1,10 +1,15 @@ %option batch %option c++ %option noyywrap +%option 8bit +%option stack +%option yylineno %option yyclass="configFlexLexer" +%option prefix="configBase" %{ #include "configFlexLexer.h" +#pragma GCC diagnostic ignored "-Wsign-compare" %} element [a-zA-Z][a-zA-Z0-9_-]* @@ -62,3 +67,10 @@ value [^ ][^\r\n]* BEGIN(INITIAL); } +<*>[ \t\r\n\f] { +} + +<*>. { + throw std::runtime_error("Unexpected input"); +} + diff --git a/project2/files/optionsSource.cpp b/project2/files/optionsSource.cpp index 2ebebdb..8e98df0 100644 --- a/project2/files/optionsSource.cpp +++ b/project2/files/optionsSource.cpp @@ -1,6 +1,7 @@ #include <pch.hpp> #include <boost/filesystem/convenience.hpp> #include "optionsSource.h" +#define yyFlexLexer configBaseFlexLexer #include <FlexLexer.h> #include "configFlexLexer.h" #include <boost/shared_ptr.hpp> diff --git a/project2/sql/sql.ll b/project2/sql/sql.ll index 604a53d..ab40642 100644 --- a/project2/sql/sql.ll +++ b/project2/sql/sql.ll @@ -1,13 +1,16 @@ %option batch %option c++ %option noyywrap +%option 8bit +%option stack +%option yylineno %option yyclass="sqlFlexLexer" +%option prefix="sqlBase" %{ #include <stdexcept> #include "sqlFlexLexer.h" -std::string comment; -std::string statement; +#pragma GCC diagnostic ignored "-Wsign-compare" %} space [ \t\n\r\f] @@ -115,3 +118,6 @@ p2mockscriptdir "$P2MOCKSCRIPTDIR" statement += YYText(); } +<*>[ \t\r\n\f] { +} + diff --git a/project2/sql/sqlFlexLexer.cpp b/project2/sql/sqlFlexLexer.cpp index cbf2416..eaacd50 100644 --- a/project2/sql/sqlFlexLexer.cpp +++ b/project2/sql/sqlFlexLexer.cpp @@ -1,3 +1,4 @@ +#define yyFlexLexer sqlBaseFlexLexer #include <FlexLexer.h> #include "sqlFlexLexer.h" #include <logger.h> @@ -10,8 +11,9 @@ sqlFlexLexer::sqlFlexLexer(const boost::filesystem::path & s, std::istream & f, } void -sqlFlexLexer::LexerOutput(const char *, int) +sqlFlexLexer::LexerError(const char * msg) { + throw std::runtime_error(msg); } void diff --git a/project2/sql/sqlFlexLexer.h b/project2/sql/sqlFlexLexer.h index fbaf799..55019e5 100644 --- a/project2/sql/sqlFlexLexer.h +++ b/project2/sql/sqlFlexLexer.h @@ -13,10 +13,12 @@ class sqlFlexLexer : public yyFlexLexer { std::string MockScriptDir() const; protected: - void LexerOutput(const char *, int) override; + void LexerError(const char *) override; private: DB::Connection * conn; const boost::filesystem::path script; + std::string comment; + std::string statement; }; |