flatloop.h (ragel-7.0.0.10) | : | flatloop.h (ragel-7.0.0.11) | ||
---|---|---|---|---|
/* | /* | |||
* Copyright 2004-2014 Adrian Thurston <thurston@colm.net> | * Copyright 2018-2018 Adrian Thurston <thurston@colm.net> | |||
* | * | |||
* Permission is hereby granted, free of charge, to any person obtaining a copy | * Permission is hereby granted, free of charge, to any person obtaining a copy | |||
* of this software and associated documentation files (the "Software"), to | * of this software and associated documentation files (the "Software"), to | |||
* deal in the Software without restriction, including without limitation the | * deal in the Software without restriction, including without limitation the | |||
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or | * 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 | * sell copies of the Software, and to permit persons to whom the Software is | |||
* furnished to do so, subject to the following conditions: | * furnished to do so, subject to the following conditions: | |||
* | * | |||
* The above copyright notice and this permission notice shall be included in al l | * The above copyright notice and this permission notice shall be included in al l | |||
* copies or substantial portions of the Software. | * copies or substantial portions of the Software. | |||
* | * | |||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | * 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 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |||
* SOFTWARE. | * SOFTWARE. | |||
*/ | */ | |||
#ifndef _FLATLOOP_H | #ifndef RAGEL_FLATGOTO_H | |||
#define _FLATLOOP_H | #define RAGEL_FLATGOTO_H | |||
#include <iostream> | ||||
#include "flat.h" | #include "flat.h" | |||
#include "actloop.h" | ||||
#include "actexp.h" | ||||
/* Forwards. */ | struct FlatGoto | |||
struct CodeGenData; | : | |||
struct NameInst; | public Flat, public TabGoto | |||
struct RedTransAp; | ||||
struct RedStateAp; | ||||
class FlatLoopGoto | ||||
: public Flat | ||||
{ | { | |||
public: | FlatGoto( const CodeGenArgs &args, Flat::Type type ) | |||
FlatLoopGoto( const CodeGenArgs &args ) | : | |||
: Flat(args) {} | Tables( args ), | |||
Flat( args, type ), | ||||
void tableDataPass(); | TabGoto( args ) | |||
{} | ||||
virtual void genAnalysis(); | ||||
virtual void writeData(); | ||||
virtual void writeExec(); | ||||
protected: | ||||
std::ostream &TO_STATE_ACTION_SWITCH(); | ||||
std::ostream &FROM_STATE_ACTION_SWITCH(); | ||||
std::ostream &EOF_ACTION_SWITCH(); | ||||
std::ostream &ACTION_SWITCH(); | ||||
virtual void TO_STATE_ACTION( RedStateAp *state ); | ||||
virtual void FROM_STATE_ACTION( RedStateAp *state ); | ||||
virtual void EOF_ACTION( RedStateAp *state ); | ||||
virtual void COND_ACTION( RedCondPair *cond ); | ||||
virtual void NFA_PUSH_ACTION( RedNfaTarg *targ ); | void COND_BIN_SEARCH( Variable &var, TableArray &keys, std::string ok, st | |||
virtual void NFA_POP_TEST( RedNfaTarg *targ ); | d::string error ); | |||
void LOCATE_TRANS(); | ||||
}; | ||||
virtual void NFA_FROM_STATE_ACTION_EXEC(); | class FlatGotoLoop | |||
: public FlatGoto, public ActLoop | ||||
{ | ||||
public: | ||||
FlatGotoLoop( const CodeGenArgs &args ) | ||||
: | ||||
Tables( args ), | ||||
FlatGoto( args, Flat::Loop ), | ||||
ActLoop( args ) | ||||
{} | ||||
}; | }; | |||
namespace C | /* | |||
* FlatGotoExp | ||||
*/ | ||||
class FlatGotoExp | ||||
: public FlatGoto, public ActExp | ||||
{ | { | |||
class FlatLoopGoto | public: | |||
FlatGotoExp( const CodeGenArgs &args ) | ||||
: | : | |||
public ::FlatLoopGoto | Tables( args ), | |||
{ | FlatGoto( args, Flat::Exp ), | |||
public: | ActExp( args ) | |||
FlatLoopGoto( const CodeGenArgs &args ) | {} | |||
: ::FlatLoopGoto( args ) | }; | |||
{} | ||||
}; | ||||
} | ||||
#endif | #endif | |||
End of changes. 11 change blocks. | ||||
45 lines changed or deleted | 40 lines changed or added |