WSF
WsfParseRule Class Referenceabstract

#include <WsfParseRule.hpp>

Inheritance diagram for WsfParseRule:
Collaboration diagram for WsfParseRule:

Public Types

enum  RuleType {
  cNAMED_RULE , cVALUE , cSTRUCT , cSEQUENCE ,
  cALTERNATE , cRECURRENCE , cRULE_REFERENCE , cREAL ,
  cINT , cSTRING , cLINE_STRING , cQUOTED_STRING ,
  cLITERAL , cDELIMITED , cTYPE_LOAD , cTYPE_COMMAND ,
  cPASSTHROUGH , cSCRIPT_BLOCK
}
enum  ReaderFlags {
  cCAN_RESOLVE = 1 , cCAN_UNDO = 2 , cIS_SINGLE_TOKEN = 4 , cIS_PASSTHROUGH = 8 ,
  cIS_VALUE_RULE = 0x10
}

Public Member Functions

 WsfParseRule (WsfParseRuleMemory &aMem, RuleType aType)
virtual ~WsfParseRule ()=default
 WsfParseRule (const WsfParseRule &)=default
void Swap (WsfParseRule &aRhs)
RuleType Type () const
 Returns an enumeration specifying the derived type of the reader.
virtual bool Read (WsfParser &aParser, WsfParseNode *&aNode)=0
virtual bool ReadRange (WsfParser &aParser, UtTextDocumentRange &aRange, WsfParseNode *&aNode, bool aCreateNode)
virtual void Undo (WsfParser &aParser)
virtual void Resolve (WsfParser &aParser, WsfParseNode *aNodePtr)
virtual void Initialize (int aSequence)
virtual std::vector< WsfParseRule * > GetSequence ()
virtual std::vector< WsfParseRule * > GetAlternates ()
virtual WsfParseRuleDictionaryGetNestedRules ()
virtual WsfParseNamedRuleGetContext () const
virtual WsfParseRuleGetPassthrough ()
virtual std::string GetRuleDescription ()
virtual WsfParseValueTypeGetType ()
 If the rule is also a type, return the type.
WsfParseStructGetContainingStruct () const
WsfParseStructGetStruct ()
WsfParseNamedRuleGetEntryType ()
WsfParseNamedRuleGetInputType ()
WsfParseNamedRuleGetOutputType ()
WsfParseNamedRuleGetBestContext ()
WsfParseNamedRuleGetVarContext ()
bool IsNamedRule () const
int GetReaderFlags () const
WsfParseRuleGetSubordinateRule () const
void SetSubordinateRule (WsfParseRule *aRulePtr)

Public Attributes

RuleType mRuleType
int mReaderFlags
int mUserId
WsfParseRulemParentRulePtr
 Pointer to the parent rule. This should be valid for unnamed rules.

Protected Attributes

WsfParseRulemSubordinateRulePtr

Detailed Description

The base class for all parse rules. A parse rule defines rules for matching a piece of wsf core text. Parse rules are created while processing the wsf core grammar files.

Member Enumeration Documentation

◆ ReaderFlags

Enumerator
cCAN_RESOLVE 
cCAN_UNDO 
cIS_SINGLE_TOKEN 
cIS_PASSTHROUGH 
cIS_VALUE_RULE 

◆ RuleType

Enumerator
cNAMED_RULE 
cVALUE 
cSTRUCT 
cSEQUENCE 
cALTERNATE 
cRECURRENCE 
cRULE_REFERENCE 
cREAL 
cINT 
cSTRING 
cLINE_STRING 
cQUOTED_STRING 
cLITERAL 
cDELIMITED 
cTYPE_LOAD 
cTYPE_COMMAND 
cPASSTHROUGH 
cSCRIPT_BLOCK 

Constructor & Destructor Documentation

◆ WsfParseRule() [1/2]

WsfParseRule::WsfParseRule ( WsfParseRuleMemory & aMem,
RuleType aType )

The parse rule constructor requires a 'WsfParseRuleMemory' object to keep track of parse rules in memory and a rule type.

References mParentRulePtr, mReaderFlags, mRuleType, mSubordinateRulePtr, mUserId, and WsfParseRuleMemory::RuleAdded().

Referenced by WsfParseAlternate::AddAlternate(), WsfParseSequence::AddRule(), WsfParseSequence::CompleteDelayLoad(), WsfParseSequence::FindChildIndex(), WsfParseNamedRule::FindValue(), WsfParseNamedRule::GetDefinition(), WsfParseNamedRule::GetDefinition(), WsfParseNamedRule::GetPassthrough(), WsfParsePassthrough::GetPassthrough(), GetPassthrough(), WsfParseRuleReference::GetPassthrough(), GetSubordinateRule(), WsfParseRecurrence::Initialize(), Initialize(), WsfParseSequence::Initialize(), WsfParseAlternate::Read(), WsfParseSequence::Read(), WsfParseTypeCommandRule::Read(), WsfParseAlternate::ReaderStartsWithChar(), WsfParseSequence::ResolveChildren(), WsfParseNamedRule::SetDefinition(), WsfParsePassthrough::SetPassthroughRule(), WsfParseRecurrence::SetRecurringRule(), WsfParseRuleReference::SetReferencedRule(), SetSubordinateRule(), WsfParseNamedRule::Swap(), Swap(), WsfParseSequence::UndoChildren(), WsfParseAlternate::WsfParseAlternate(), WsfParseDelimited::WsfParseDelimited(), WsfParseIntRule::WsfParseIntRule(), WsfParseLineStringRule::WsfParseLineStringRule(), WsfParseLiteral::WsfParseLiteral(), WsfParseNamedRule::WsfParseNamedRule(), WsfParseNamedRule::WsfParseNamedRule(), WsfParsePassthrough::WsfParsePassthrough(), WsfParseQuotedStringRule::WsfParseQuotedStringRule(), WsfParseRealRule::WsfParseRealRule(), WsfParseRecurrence::WsfParseRecurrence(), WsfParseRule(), WsfParseRuleReference::WsfParseRuleReference(), WsfParseScriptRule::WsfParseScriptRule(), WsfParseSequence::WsfParseSequence(), WsfParseStringRule::WsfParseStringRule(), WsfParseTypeCommandRule::WsfParseTypeCommandRule(), and WsfParseTypeLoadRule::WsfParseTypeLoadRule().

◆ ~WsfParseRule()

virtual WsfParseRule::~WsfParseRule ( )
virtualdefault

◆ WsfParseRule() [2/2]

WsfParseRule::WsfParseRule ( const WsfParseRule & )
default

References WsfParseRule().

Member Function Documentation

◆ GetAlternates()

virtual std::vector< WsfParseRule * > WsfParseRule::GetAlternates ( )
inlinevirtual

Reimplemented in WsfParseAlternate.

Referenced by GetAllAlternates().

◆ GetBestContext()

WsfParseNamedRule * WsfParseRule::GetBestContext ( )

◆ GetContainingStruct()

WsfParseStruct * WsfParseRule::GetContainingStruct ( ) const

◆ GetContext()

virtual WsfParseNamedRule * WsfParseRule::GetContext ( ) const
inlinevirtual

Reimplemented in WsfParseNamedRule.

Referenced by GetContainingStruct().

◆ GetEntryType()

WsfParseNamedRule * WsfParseRule::GetEntryType ( )

References GetInputType(), and GetOutputType().

◆ GetInputType()

WsfParseNamedRule * WsfParseRule::GetInputType ( )

References IsNamedRule().

Referenced by GetEntryType().

◆ GetNestedRules()

virtual WsfParseRuleDictionary * WsfParseRule::GetNestedRules ( )
inlinevirtual

Reimplemented in WsfParseNamedRule.

Referenced by GetAllAlternates().

◆ GetOutputType()

WsfParseNamedRule * WsfParseRule::GetOutputType ( )

References IsNamedRule().

Referenced by GetEntryType().

◆ GetPassthrough()

virtual WsfParseRule * WsfParseRule::GetPassthrough ( )
inlinevirtual

◆ GetReaderFlags()

◆ GetRuleDescription()

virtual std::string WsfParseRule::GetRuleDescription ( )
inlinevirtual

◆ GetSequence()

virtual std::vector< WsfParseRule * > WsfParseRule::GetSequence ( )
inlinevirtual

◆ GetStruct()

WsfParseStruct * WsfParseRule::GetStruct ( )

◆ GetSubordinateRule()

◆ GetType()

virtual WsfParseValueType * WsfParseRule::GetType ( )
inlinevirtual

If the rule is also a type, return the type.

Reimplemented in WsfParseStruct, and WsfParseValue.

◆ GetVarContext()

◆ Initialize()

◆ IsNamedRule()

bool WsfParseRule::IsNamedRule ( ) const
inline

◆ Read()

virtual bool WsfParseRule::Read ( WsfParser & aParser,
WsfParseNode *& aNode )
pure virtual

Override to parse and generate a parse node. Parse nodes should be generated even on error conditions if possible.

Parameters
aParserThe parser.
aNodeSet to the resulting parse node.
Returns
'true' if a parse node was generated.

Implemented in WsfParseAlternate, WsfParseDelimited, WsfParseIntRule, WsfParseLineStringRule, WsfParseLiteral, WsfParseNamedRule, WsfParsePassthrough, WsfParseQuotedStringRule, WsfParseRealRule, WsfParseRecurrence, WsfParseRuleReference, WsfParseScriptRule, WsfParseSequence, WsfParseStringRule, WsfParseStringWithExceptionsRule, WsfParseTypeCommandRule, and WsfParseTypeLoadRule.

Referenced by WsfParser::ParseFiles(), WsfParseAlternate::Read(), WsfParseSequence::Read(), and WsfParseTypeCommandRule::Read().

◆ ReadRange()

virtual bool WsfParseRule::ReadRange ( WsfParser & aParser,
UtTextDocumentRange & aRange,
WsfParseNode *& aNode,
bool aCreateNode )
inlinevirtual

Override to parse and generate a parse node given a single block of text. This method must be implemented to take part in delimited expressions.

Reimplemented in WsfParseAlternate, WsfParseDelimited, WsfParseIntRule, WsfParseLiteral, WsfParseNamedRule, WsfParsePassthrough, WsfParseRealRule, WsfParseRuleReference, WsfParseSequence, WsfParseStringRule, and WsfParseStringWithExceptionsRule.

◆ Resolve()

virtual void WsfParseRule::Resolve ( WsfParser & aParser,
WsfParseNode * aNodePtr )
inlinevirtual

Called by a command reader if the full command is successfully read. You must set cCAN_RESOLVE in the reader flags to receive this call.

Reimplemented in WsfParseTypeLoadRule.

Referenced by WsfParseSequence::ResolveChildren().

◆ SetSubordinateRule()

◆ Swap()

void WsfParseRule::Swap ( WsfParseRule & aRhs)
inline

◆ Type()

◆ Undo()

virtual void WsfParseRule::Undo ( WsfParser & aParser)
inlinevirtual

Called by a command reader if the reader just read in a value that has now been rejected due to a later failure. You must set cCAN_UNDO in the reader flags to receive this call.

Reimplemented in WsfParseTypeLoadRule.

Referenced by WsfParseSequence::UndoChildren().

Member Data Documentation

◆ mParentRulePtr

◆ mReaderFlags

◆ mRuleType

◆ mSubordinateRulePtr

◆ mUserId


The documentation for this class was generated from the following files:
Copyrights Multiple, All Rights Reserved