From 801f39d2fa3a6af3e9fbd90190c006214aac15e8 Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Sun, 20 Dec 2015 16:20:15 -0500 Subject: [PATCH] timew: Instantiates Grammar --- src/Grammar.cpp | 20 ++++++++++++++++++++ src/Grammar.h | 5 +++++ src/timew.cpp | 6 ++++++ 3 files changed, 31 insertions(+) diff --git a/src/Grammar.cpp b/src/Grammar.cpp index 9e72d7ef..87c300c8 100644 --- a/src/Grammar.cpp +++ b/src/Grammar.cpp @@ -26,6 +26,7 @@ #include #include +#include //////////////////////////////////////////////////////////////////////////////// Grammar::Grammar () @@ -33,3 +34,22 @@ Grammar::Grammar () } //////////////////////////////////////////////////////////////////////////////// +void Grammar::loadFromFile (File& file) +{ + if (file.exists ()) + { + std::string contents; + file.read (contents); + loadFromString (contents); + } + else + throw format ("Grammar file '{0}'not found.", static_cast (file)); +} + +//////////////////////////////////////////////////////////////////////////////// +void Grammar::loadFromString (const std::string& input) +{ + // TODO Load and parse BNF. +} + +//////////////////////////////////////////////////////////////////////////////// diff --git a/src/Grammar.h b/src/Grammar.h index c673cb68..ab8cb6dd 100644 --- a/src/Grammar.h +++ b/src/Grammar.h @@ -27,10 +27,15 @@ #ifndef INCLUDED_GRAMMAR #define INCLUDED_GRAMMAR +#include +#include + class Grammar { public: Grammar (); + void loadFromFile (File&); + void loadFromString (const std::string&); }; #endif diff --git a/src/timew.cpp b/src/timew.cpp index e3c57434..c8a89450 100644 --- a/src/timew.cpp +++ b/src/timew.cpp @@ -25,6 +25,7 @@ //////////////////////////////////////////////////////////////////////////////// #include +#include #include #include #include @@ -45,6 +46,11 @@ int main (int argc, const char** argv) { // TODO Initialize configuration. // TODO Load grammar. + // TODO Load from string, else file on config override. + File file ("./grammar.cfg"); + Grammar grammar; + grammar.loadFromFile (file); + // TODO Load rules. // TODO Parse CLI. // TODO Dispatch to commands.