diff options
-rw-r--r-- | libfsm/Makefile.am | 2 | ||||
-rw-r--r-- | libfsm/allocgen.cc | 1 | ||||
-rw-r--r-- | libfsm/asm.cc | 1 | ||||
-rw-r--r-- | libfsm/binvar.cc | 2 | ||||
-rw-r--r-- | libfsm/codegen.cc | 1 | ||||
-rw-r--r-- | libfsm/codegen.h | 3 | ||||
-rw-r--r-- | libfsm/dot.cc | 7 | ||||
-rw-r--r-- | libfsm/flatvar.cc | 2 | ||||
-rw-r--r-- | libfsm/gendata.cc | 1 | ||||
-rw-r--r-- | libfsm/gotoexp.cc | 1 | ||||
-rw-r--r-- | libfsm/gotoloop.cc | 1 | ||||
-rw-r--r-- | libfsm/idbase.h | 7 | ||||
-rw-r--r-- | libfsm/inputdata.h | 365 | ||||
-rw-r--r-- | libfsm/ipgoto.cc | 1 | ||||
-rw-r--r-- | libfsm/switchvar.cc | 1 |
15 files changed, 10 insertions, 386 deletions
diff --git a/libfsm/Makefile.am b/libfsm/Makefile.am index 5e870bdb..33fd6ed6 100644 --- a/libfsm/Makefile.am +++ b/libfsm/Makefile.am @@ -16,7 +16,7 @@ libfsminclude_HEADERS = \ libfsm_la_CPPFLAGS = -I$(top_srcdir)/aapl dist_libfsm_la_SOURCES = \ - parsedata.h parsetree.h inputdata.h codegen.h \ + parsedata.h parsetree.h codegen.h \ actloop.h actexp.h \ tables.h \ binary.h bingoto.h binbreak.h binvar.h \ diff --git a/libfsm/allocgen.cc b/libfsm/allocgen.cc index 9f3fbe51..02278bfa 100644 --- a/libfsm/allocgen.cc +++ b/libfsm/allocgen.cc @@ -24,7 +24,6 @@ #include "parsedata.h" #include "fsmgraph.h" #include "gendata.h" -#include "inputdata.h" /* * Code generators. diff --git a/libfsm/asm.cc b/libfsm/asm.cc index ca9f5d65..ecfe1c0f 100644 --- a/libfsm/asm.cc +++ b/libfsm/asm.cc @@ -30,7 +30,6 @@ #include "bstmap.h" #include "gendata.h" #include "parsedata.h" -#include "inputdata.h" #include <sstream> using std::ostream; diff --git a/libfsm/binvar.cc b/libfsm/binvar.cc index addec681..27e40c03 100644 --- a/libfsm/binvar.cc +++ b/libfsm/binvar.cc @@ -22,8 +22,6 @@ #include "binvar.h" #include "parsedata.h" -#include "inputdata.h" - void BinVar::LOCATE_TRANS() { diff --git a/libfsm/codegen.cc b/libfsm/codegen.cc index ae6ceb06..db8cc60a 100644 --- a/libfsm/codegen.cc +++ b/libfsm/codegen.cc @@ -24,7 +24,6 @@ #include "ragel.h" #include "redfsm.h" #include "gendata.h" -#include "inputdata.h" #include "parsedata.h" #include <sstream> #include <string> diff --git a/libfsm/codegen.h b/libfsm/codegen.h index 904c839f..e1a7877b 100644 --- a/libfsm/codegen.h +++ b/libfsm/codegen.h @@ -29,6 +29,7 @@ #include "common.h" #include "gendata.h" #include "vector.h" +#include "idbase.h" using std::string; using std::ostream; @@ -165,7 +166,7 @@ public: virtual void statsSummary(); protected: - friend TableArray; + friend struct TableArray; typedef Vector<TableArray*> ArrayVector; ArrayVector arrayVector; diff --git a/libfsm/dot.cc b/libfsm/dot.cc index edd4225b..f41ebc27 100644 --- a/libfsm/dot.cc +++ b/libfsm/dot.cc @@ -23,7 +23,6 @@ #include "ragel.h" #include "dot.h" #include "gendata.h" -#include "inputdata.h" #include "parsedata.h" using std::istream; @@ -391,9 +390,3 @@ void GraphvizDotGen::write( ) "}\n"; } -void InputData::writeDot( ostream &out ) -{ - ParseData *pd = dotGenPd; - GraphvizDotGen dotGen( this, pd->fsmCtx, pd->sectionGraph, pd->sectionName, pd->machineId, out ); - dotGen.write(); -} diff --git a/libfsm/flatvar.cc b/libfsm/flatvar.cc index b747afcd..40902940 100644 --- a/libfsm/flatvar.cc +++ b/libfsm/flatvar.cc @@ -21,9 +21,7 @@ */ #include "flatvar.h" - #include "parsedata.h" -#include "inputdata.h" void FlatVar::LOCATE_TRANS() { diff --git a/libfsm/gendata.cc b/libfsm/gendata.cc index a11f3ce7..2a518e7a 100644 --- a/libfsm/gendata.cc +++ b/libfsm/gendata.cc @@ -24,7 +24,6 @@ #include "ragel.h" #include "parsedata.h" #include "fsmgraph.h" -#include "inputdata.h" #include <string.h> #include <iostream> diff --git a/libfsm/gotoexp.cc b/libfsm/gotoexp.cc index dea9029c..fe695401 100644 --- a/libfsm/gotoexp.cc +++ b/libfsm/gotoexp.cc @@ -26,7 +26,6 @@ #include "gendata.h" #include "bstmap.h" #include "parsedata.h" -#include "inputdata.h" std::ostream &GotoExp::EXEC_FUNCS() { diff --git a/libfsm/gotoloop.cc b/libfsm/gotoloop.cc index 41a8cd8a..1db3f2cd 100644 --- a/libfsm/gotoloop.cc +++ b/libfsm/gotoloop.cc @@ -26,7 +26,6 @@ #include "bstmap.h" #include "gendata.h" #include "parsedata.h" -#include "inputdata.h" std::ostream &GotoLoop::ACTION_SWITCH() { diff --git a/libfsm/idbase.h b/libfsm/idbase.h new file mode 100644 index 00000000..a34837a8 --- /dev/null +++ b/libfsm/idbase.h @@ -0,0 +1,7 @@ +#ifndef _IDBASE_H +#define _IDBASE_H + +void translatedHostData( ostream &out, const std::string &data ); + +#endif + diff --git a/libfsm/inputdata.h b/libfsm/inputdata.h deleted file mode 100644 index 689f9078..00000000 --- a/libfsm/inputdata.h +++ /dev/null @@ -1,365 +0,0 @@ -/* - * Copyright 2008-2018 Adrian Thurston <thurston@colm.net> - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#ifndef _INPUT_DATA -#define _INPUT_DATA - -#include "gendata.h" -#include <iostream> -#include <sstream> -#include <vector> - -struct ParseData; -struct Parser6; -struct CondSpace; -struct CondAp; -struct ActionTable; -struct Section; -struct LangFuncs; - -void translatedHostData( ostream &out, const string &data ); - -struct InputItem -{ - InputItem() - : - section(0), - pd(0), - parser(0), - processed(false) - {} - - enum Type { - HostData, - EndSection, - Write, - }; - - Type type; - std::ostringstream data; - std::string name; - Section *section; - ParseData *pd; - Parser6 *parser; - std::vector<std::string> writeArgs; - - InputLoc loc; - bool processed; - - InputItem *prev, *next; -}; - -struct IncItem -{ - IncItem() - : - section(0) - {} - - Section *section; - InputLoc loc; - long start, end; - size_t length; - IncItem *prev, *next; -}; - - -typedef AvlMap<std::string, ParseData*, CmpString> ParseDataDict; -typedef AvlMapEl<std::string, ParseData*> ParseDataDictEl; -typedef DList<ParseData> ParseDataList; - -/* This exists for ragel-6 parsing. */ -typedef AvlMap<const char*, Parser6*, CmpStr> ParserDict; -typedef AvlMapEl<const char*, Parser6*> ParserDictEl; -typedef DList<Parser6> ParserList; - -typedef DList<InputItem> InputItemList; -typedef DList<IncItem> IncItemList; -typedef Vector<const char *> ArgsVector; - -struct Section -{ - Section( std::string sectionName ) - : - sectionName(sectionName), - lastReference(0) - {} - - std::string sectionName; - - /* Pointer to the last input item to reference this parse data struct. Once - * we pass over this item we are free to clear away the parse tree. */ - InputItem *lastReference; - - Section *prev, *next; -}; - -typedef AvlMap<std::string, Section*, CmpString> SectionDict; -typedef AvlMapEl<std::string, Section*> SectionDictEl; -typedef DList<Section> SectionList; - -struct FnMachine -{ - FnMachine( const string &fileName, const string &machine ) - : fileName( fileName ), machine( machine ) {} - - string fileName; - string machine; -}; - -struct CmpFnMachine -{ - static inline int compare( const FnMachine &k1, const FnMachine &k2 ) - { - int r = strcmp( k1.fileName.c_str(), k2.fileName.c_str() ); - if ( r != 0 ) - return r; - else { - r = strcmp( k1.machine.c_str(), k2.machine.c_str() ); - if ( r != 0 ) - return r; - } - return 0; - } -}; - -struct IncludeRec - : public AvlTreeEl<IncludeRec> -{ - IncludeRec( const string &fileName, const string &machine ) - : key( fileName, machine ), data(0) {} - - ~IncludeRec() - { - if ( data != 0 ) - delete[] data; - } - - FnMachine key; - - const FnMachine &getKey() - { return key; } - - std::string foundFileName; - - char *data; - int len; - -}; - -struct InputData -: - public FsmGbl -{ - InputData( const HostLang *hostLang, - struct colm_sections *frontendSections, struct colm_sections *rlhcSections ) - : - FsmGbl(hostLang), - frontendSections(frontendSections), - rlhcSections(rlhcSections), - inputFileName(0), - outputFileName(0), - nextMachineId(0), - inStream(0), - outStream(0), - outFilter(0), - curItem(0), - lastFlush(0), - codeStyle(GenBinaryLoop), - dotGenPd(0), - machineSpec(0), - machineName(0), - generateDot(false), - noLineDirectives(false), - maxTransitions(LONG_MAX), - numSplitPartitions(0), - rlhc(false), - rlhcShowCmd(false), - noIntermediate(false), - frontendSpecified(false), - backendSpecified(false), - featureSpecified(false), - saveTemps(false), - condsCheckDepth(-1), - transSpanDepth(6), - stateLimit(0), - checkBreadth(0), - varBackend(false), - histogramFn(0), - histogram(0), - input(0), - forceVar(false), - noFork(false), - utf8BomPresent(false) - {} - - ~InputData(); - - void usage(); - void version(); - void showFrontends(); - void showBackends(); - - struct colm_sections *frontendSections; - struct colm_sections *rlhcSections; - std::string dirName; - - /* The name of the root section, this does not change during an include. */ - const char *inputFileName; - const char *outputFileName; - - string comm; - - int nextMachineId; - - std::string origOutputFileName; - std::string genOutputFileName; - - /* Io globals. */ - std::istream *inStream; - std::ostream *outStream; - output_filter *outFilter; - - ParseDataDict parseDataDict; - ParseDataList parseDataList; - InputItemList inputItems; - InputItem *curItem; - InputItem *lastFlush; - - /* Ragel-6 frontend. */ - ParserDict parserDict; - ParserList parserList; - - SectionDict sectionDict; - SectionList sectionList; - - ArgsVector includePaths; - - bool isBreadthLabel( const string &label ); - ArgsVector breadthLabels; - - /* Target language and output style. */ - CodeStyle codeStyle; - - ParseData *dotGenPd; - - const char *machineSpec; - const char *machineName; - - bool generateDot; - - bool noLineDirectives; - - long maxTransitions; - int numSplitPartitions; - - bool rlhc; - bool rlhcShowCmd; - bool noIntermediate; - - bool frontendSpecified; - RagelFrontend frontend; - - bool backendSpecified; - - bool featureSpecified; - - bool saveTemps; - long condsCheckDepth; - long transSpanDepth; - long stateLimit; - bool checkBreadth; - - bool varBackend; - - const char *histogramFn; - double *histogram; - - const char *input; - - Vector<const char**> streamFileNames; - - bool forceVar; - bool noFork; - - /* Did the input file have a byte order mark? */ - bool utf8BomPresent; - - void verifyWriteHasData( InputItem *ii ); - void verifyWritesHaveData(); - - void makeTranslateOutputFileName(); - void flushRemaining(); - void makeFirstInputItem(); - void writeOutput(); - void makeDefaultFileName(); - void createOutputStream(); - void openOutput(); - void closeOutput(); - void generateReduced(); - void prepareSingleMachine(); - void prepareAllMachines(); - - void writeOutput( InputItem *ii ); - void writeLanguage( std::ostream &out ); - - bool checkLastRef( InputItem *ii ); - - void parseKelbt(); - void processDot(); - void processCodeEarly(); - - void writeDot( std::ostream &out ); - - void loadHistogram(); - void defaultHistogram(); - - void parseArgs( int argc, const char **argv ); - void checkArgs(); - void terminateParser( Parser6 *parser ); - void terminateAllParsers(); - - void processKelbt(); - void processColm(); - bool processReduce(); - bool process(); - bool parseReduce(); - - char *readInput( const char *inputFileName ); - - const char **makeIncludePathChecks( const char *curFileName, const char *fileName ); - std::ifstream *tryOpenInclude( const char **pathChecks, long &found ); - int main( int argc, const char **argv ); - - int runFrontend( int argc, const char **argv ); - int runRlhc( int argc, const char **argv ); - - typedef int (InputData::*IdProcess)( int argc, const char **argv ); - - int runJob( const char *what, IdProcess idProcess, - int argc, const char **argv ); - - int rlhcMain( int argc, const char **argv ); -}; - - -#endif diff --git a/libfsm/ipgoto.cc b/libfsm/ipgoto.cc index 4b8af3d6..3718ea91 100644 --- a/libfsm/ipgoto.cc +++ b/libfsm/ipgoto.cc @@ -26,7 +26,6 @@ #include "gendata.h" #include "bstmap.h" #include "parsedata.h" -#include "inputdata.h" #include <sstream> diff --git a/libfsm/switchvar.cc b/libfsm/switchvar.cc index b19f28db..5382bc04 100644 --- a/libfsm/switchvar.cc +++ b/libfsm/switchvar.cc @@ -22,7 +22,6 @@ #include "switchvar.h" #include "parsedata.h" -#include "inputdata.h" void SwitchVar::LOCATE_COND() { |