#ifndef CONFIGUREPARSER_H #define CONFIGUREPARSER_H ///////////////////////////////////////////////////////////////////// // ConfigureParser.h - builds and configures parsers // // ver 2.1 // // // // Lanaguage: Visual C++ 2005 // // Platform: Dell Dimension 9150, Windows XP SP2 // // Application: Prototype for CSE687 Pr1, Sp06 // // Author: Jim Fawcett, CST 2-187, Syracuse University // // (315) 443-3948, jfawcett@twcny.rr.com // ///////////////////////////////////////////////////////////////////// /* Module Operations: ================== This module builds and configures parsers. It builds the parser parts and configures them with application specific rules and actions. Public Interface: ================= ConfigParseToConsole conConfig; conConfig.Build(); conConfig.Attach(someFileName); Build Process: ============== Required files - ConfigureParser.h, ConfigureParser.cpp, Parser.h, Parser.cpp, ActionsAndRules.h, ActionsAndRules.cpp, SemiExpression.h, SemiExpression.cpp, tokenizer.h, tokenizer.cpp Build commands (either one) - devenv Project1HelpS06.sln - cl /EHsc /DTEST_PARSER ConfigureParser.cpp parser.cpp \ ActionsAndRules.cpp \ semiexpression.cpp tokenizer.cpp /link setargv.obj Maintenance History: ==================== ver 2.1 : 12 Jun 13 - Added ConfigToQueue class to support Forms and WPF apps - added code to most actions to optionally write to queue ver 2.0 : 01 Jun 11 - Major revisions to begin building a strong code analyzer ver 1.1 : 01 Feb 06 - cosmetic changes to ConfigureParser.cpp ver 1.0 : 12 Jan 06 - first release */ // #include "Parser.h" #include "SemiExpression.h" #include "Tokenizer.h" #include "ActionsAndRules.h" #include "FoldingRules.h" /////////////////////////////////////////////////////////////// // build parser that writes its output to console class ConfigParseToConsole : IBuilder { public: ConfigParseToConsole() {}; ~ConfigParseToConsole(); bool Attach(const std::string& name, bool isFile=true); Parser* Build(); private: // Builder must hold onto all the pieces Toker* pToker; SemiExp* pSemi; Parser* pParser; Repository* pRepo; // add folding rules FoldingRules* pFR; // add Rules and Actions BeginningOfScope* pBeginningOfScope; HandlePush* pHandlePush; EndOfScope* pEndOfScope; HandlePop* pHandlePop; FunctionDefinition* pFunctionDefinition; PushFunction* pPushFunction; // prohibit copies and assignments ConfigParseToConsole(const ConfigParseToConsole&); ConfigParseToConsole& operator=(const ConfigParseToConsole&); }; /////////////////////////////////////////////////////////////// // build parser that writes its output to queue class ConfigParseToQueue : IBuilder { public: ConfigParseToQueue(); ~ConfigParseToQueue(); bool Attach(const std::string& name, bool isFile=true); Parser* Build(); std::queue* GetQueue(); private: // Builder must hold onto all the pieces Toker* pToker; SemiExp* pSemi; Parser* pParser; Repository* pRepo; std::queue* pQueue; // add folding rules FoldingRules* pFR; // add Rules and Actions BeginningOfScope* pBeginningOfScope; HandlePush* pHandlePush; EndOfScope* pEndOfScope; HandlePop* pHandlePop; FunctionDefinition* pFunctionDefinition; PushFunction* pPushFunction; // prohibit copies and assignments ConfigParseToQueue(const ConfigParseToQueue&); ConfigParseToQueue& operator=(const ConfigParseToQueue&); }; #endif