#include <OgreCompositorScriptCompiler.h>
Public Member Functions | |
CompositorScriptCompiler (void) | |
~CompositorScriptCompiler (void) | |
virtual const String & | getClientBNFGrammer (void) const |
gets BNF Grammar for Compositor script. | |
virtual const String & | getClientGrammerName (void) const |
get the name of the Compositor script BNF grammar. | |
void | parseScript (DataStreamPtr &stream, const String &groupName) |
Compile a compositor script from a data stream using a specific resource group name. | |
bool | compile (const String &source, const String &sourceName) |
compile the source - performs 2 passes. | |
void * | operator new (size_t sz, const char *file, int line, const char *func) |
operator new, with debug line info | |
void * | operator new (size_t sz) |
void * | operator new (size_t sz, void *ptr) |
placement operator new | |
void * | operator new[] (size_t sz, const char *file, int line, const char *func) |
array operator new, with debug line info | |
void * | operator new[] (size_t sz) |
void | operator delete (void *ptr) |
void | operator delete (void *ptr, void *) |
void | operator delete (void *ptr, const char *, int, const char *) |
void | operator delete[] (void *ptr) |
void | operator delete[] (void *ptr, const char *, int, const char *) |
Protected Types | |
enum | TokenID { ID_UNKOWN = 0, ID_TARGET_WIDTH, ID_TARGET_HEIGHT, ID_TARGET_WIDTH_SCALED, ID_TARGET_HEIGHT_SCALED, ID_PF_A8R8G8B8, ID_PF_R8G8B8A8, ID_PF_R8G8B8, ID_PF_FLOAT16_R, ID_PF_FLOAT16_RGB, ID_PF_FLOAT16_RGBA, ID_PF_FLOAT32_R, ID_PF_FLOAT32_RGB, ID_PF_FLOAT32_RGBA, ID_PF_FLOAT16_GR, ID_PF_FLOAT32_GR, ID_PREVIOUS, ID_NONE, ID_RENDER_QUAD, ID_CLEAR, ID_STENCIL, ID_RENDER_SCENE, ID_CLR_COLOUR, ID_CLR_DEPTH, ID_ST_ALWAYS_FAIL, ID_ST_ALWAYS_PASS, ID_ST_LESS, ID_ST_LESS_EQUAL, ID_ST_EQUAL, ID_ST_NOT_EQUAL, ID_ST_GREATER_EQUAL, ID_ST_GREATER, ID_ST_KEEP, ID_ST_ZERO, ID_ST_REPLACE, ID_ST_INCREMENT, ID_ST_DECREMENT, ID_ST_INCREMENT_WRAP, ID_ST_DECREMENT_WRAP, ID_ST_INVERT, ID_ON, ID_OFF, ID_TRUE, ID_FALSE, ID_AUTOTOKENSTART } |
enum | CompositorScriptSection { CSS_NONE, CSS_COMPOSITOR, CSS_TECHNIQUE, CSS_TARGET, CSS_PASS } |
Enum to identify compositor sections. More... | |
typedef void(CompositorScriptCompiler::* | CSC_Action )(void) |
typedef std::map< size_t, CSC_Action > | TokenActionMap |
typedef TokenActionMap::iterator | TokenActionIterator |
enum | OperationType { otUNKNOWN, otRULE, otAND, otOR, otOPTIONAL, otREPEAT, otDATA, otNOT_TEST, otINSERT_TOKEN, otEND } |
enum | SystemRuleToken { _no_token_ = SystemTokenBase, _character_, _value_, _no_space_skip_ } |
enum | BNF_ID { BNF_UNKOWN = 0, BNF_SYNTAX, BNF_RULE, BNF_IDENTIFIER, BNF_IDENTIFIER_RIGHT, BNF_IDENTIFIER_CHARACTERS, BNF_ID_BEGIN, BNF_ID_END, BNF_CONSTANT_BEGIN, BNF_SET_RULE, BNF_EXPRESSION, BNF_AND_TERM, BNF_OR_TERM, BNF_TERM, BNF_TERM_ID, BNF_CONSTANT, BNF_OR, BNF_TERMINAL_SYMBOL, BNF_TERMINAL_START, BNF_REPEAT_EXPRESSION, BNF_REPEAT_BEGIN, BNF_REPEAT_END, BNF_SET, BNF_SET_BEGIN, BNF_SET_END, BNF_NOT_TEST, BNF_NOT_TEST_BEGIN, BNF_CONDITIONAL_TOKEN_INSERT, BNF_OPTIONAL_EXPRESSION, BNF_NOT_EXPRESSION, BNF_NOT_CHK, BNF_OPTIONAL_BEGIN, BNF_OPTIONAL_END, BNF_NO_TOKEN_START, BNF_SINGLEQUOTE, BNF_SINGLE_QUOTE_EXC, BNF_SET_END_EXC, BNF_ANY_CHARACTER, BNF_SPECIAL_CHARACTERS1, BNF_SPECIAL_CHARACTERS2, BNF_WHITE_SPACE_CHK, BNF_LETTER, BNF_LETTER_DIGIT, BNF_DIGIT, BNF_WHITE_SPACE, BNF_ALPHA_SET, BNF_NUMBER_SET, BNF_SPECIAL_CHARACTER_SET1, BNF_SPECIAL_CHARACTER_SET2, BNF_SPECIAL_CHARACTER_SET3, BNF_NOT_CHARS, BNF_AUTOTOKENSTART } |
typedef std::vector< TokenRule > | TokenRuleContainer |
typedef TokenRuleContainer::iterator | TokenRuleIterator |
typedef std::vector < LexemeTokenDef > | LexemeTokenDefContainer |
typedef LexemeTokenDefContainer::iterator | LexemeTokenDefIterator |
typedef std::map< String, size_t > | LexemeTokenMap |
typedef LexemeTokenMap::iterator | TokenKeyIterator |
typedef std::vector< TokenInst > | TokenInstContainer |
typedef TokenInstContainer::iterator | TokenInstIterator |
typedef std::map< size_t, String > | LabelContainer |
storage container for string labels defined in source container uses Token index as a key associated with a label | |
Protected Member Functions | |
virtual void | executeTokenAction (const size_t tokenID) |
Execute an Action associated with a token. | |
virtual size_t | getAutoTokenIDStart () const |
Get the start position of auto generated token IDs. | |
virtual void | setupTokenDefinitions (void) |
Associate all the lexemes used in a material script with their corresponding tokens and actions. | |
void | addLexemeTokenAction (const String &lexeme, const size_t token, const CSC_Action action=0) |
void | addLexemeAction (const String &lexeme, const CSC_Action action) |
void | logParseError (const String &error) |
void | parseOpenBrace (void) |
void | parseCloseBrace (void) |
void | parseCompositor (void) |
void | parseTechnique (void) |
void | parseTexture (void) |
void | parseTarget (void) |
void | parseInput (void) |
void | parseTargetOutput (void) |
void | parseOnlyInitial (void) |
void | parseVisibilityMask (void) |
void | parseLodBias (void) |
void | parseMaterialScheme (void) |
void | parseShadowsEnabled (void) |
void | parsePass (void) |
void | parseMaterial (void) |
void | parseFirstRenderQueue (void) |
void | parseLastRenderQueue (void) |
void | parseIdentifier (void) |
void | parseClearBuffers (void) |
void | parseClearColourValue (void) |
void | parseClearDepthValue (void) |
void | parseClearStencilValue (void) |
void | parseStencilCheck (void) |
void | parseStencilFunc (void) |
void | parseStencilRefVal (void) |
void | parseStencilMask (void) |
void | parseStencilFailOp (void) |
void | parseStencilDepthFailOp (void) |
void | parseStencilPassOp (void) |
void | parseStencilTwoSided (void) |
StencilOperation | extractStencilOp (void) |
CompareFunction | extractCompareFunc (void) |
bool | doPass1 () |
perform pass 1 of compile process scans source for lexemes that can be tokenized and then performs general semantic and context verification on each lexeme before it is tokenized. | |
bool | doPass2 () |
performs Pass 2 of compile process which is execution of the tokens | |
const TokenInst & | getNextToken (const size_t expectedTokenID=0) const |
Gets the next token from the instruction que. | |
const TokenInst & | getCurrentToken (const size_t expectedTokenID=0) const |
Gets the current token from the instruction que. | |
bool | testNextTokenID (const size_t expectedTokenID) const |
If a next token instruction exist then test if its token ID matches. | |
bool | testCurrentTokenID (const size_t expectedTokenID) const |
If a current token instruction exist then test if its token ID matches. | |
void | skipToken (void) const |
skip to the next token in the pass2 queue. | |
void | replaceToken (void) |
go back to the previous token in the pass2 queue. | |
float | getNextTokenValue (void) const |
Gets the next token's associated floating point value in the instruction que that was parsed from the text source. | |
float | getCurrentTokenValue (void) const |
Gets the current token's associated floating point value in the instruction que that was parsed from the text source. | |
const String & | getNextTokenLabel (void) const |
Gets the next token's associated text label in the instruction que that was parsed from the text source. | |
const String & | getCurrentTokenLabel (void) const |
Gets the next token's associated text label in the instruction que that was parsed from the text source. | |
size_t | getNextTokenID (void) const |
Get the next token's ID value. | |
size_t | getCurrentTokenID (void) const |
Get the current token's ID value. | |
const String & | getNextTokenLexeme (void) const |
Get the next token's lexeme string. | |
const String & | getCurrentTokenLexeme (void) const |
Get the current token's lexeme string. | |
size_t | getPass2TokenQueCount (void) const |
Gets the number of tokens waiting in the instruction que that need to be processed by an token action in pass 2. | |
size_t | getRemainingTokensForAction (void) const |
Get the number of tokens not processed by action token. | |
void | setPass2TokenQuePosition (size_t pos, const bool activateAction=false) |
Manually set the Pass2 Token que position. | |
size_t | getPass2TokenQuePosition (void) const |
Get the current position in the Pass2 Token Que. | |
bool | setNextActionQuePosition (size_t pos, const bool search=false) |
Set the position of the next token action in the Pass2 Token Que. | |
size_t | addLexemeToken (const String &lexeme, const size_t token, const bool hasAction=false, const bool caseSensitive=false) |
Add a lexeme token association. | |
void | setClientBNFGrammer (void) |
Sets up the parser rules for the client based on the BNF Grammar text passed in. | |
void | findEOL () |
find the eol character | |
bool | isFloatValue (float &fvalue, size_t &charsize) const |
check to see if the text at the present position in the source is a numerical constant | |
bool | isCharacterLabel (const size_t rulepathIDX) |
Check if source at current position is supposed to be a user defined character label. | |
bool | isLexemeMatch (const String &lexeme, const bool caseSensitive) const |
check to see if the text is in the lexeme text library | |
bool | isEndOfSource () const |
Check if pass 1 has parsed to the end of the source. | |
bool | positionToNextLexeme () |
position to the next possible valid symbol | |
bool | processRulePath (size_t rulepathIDX) |
process input source text using rulepath to determine allowed tokens | |
void | setActiveContexts (const uint contexts) |
setup ActiveContexts - should be called by subclass to setup initial language contexts | |
void | skipComments () |
comment specifiers are hard coded | |
void | skipEOL () |
find end of line marker and move past it | |
void | skipWhiteSpace () |
skip all the white space which includes spaces and tabs | |
bool | ValidateToken (const size_t rulepathIDX, const size_t activeRuleID) |
check if current position in source has the lexeme text equivalent to the TokenID | |
void | verifyTokenRuleLinks (const String &grammerName) |
scan through all the rules and initialize token definition with index to rules for non-terminal tokens. | |
void | checkTokenActionTrigger (void) |
Checks the last token instruction and if it has an action then it triggers the action of the previously found token having an action. | |
String | getBNFGrammerTextFromRulePath (size_t ruleID, const size_t level=0) |
Get the text representation of the rule path. | |
Protected Attributes | |
CompositorScriptContext | mScriptContext |
TokenState * | mClientTokenState |
TokenState * | mActiveTokenState |
Active token que, definitions, rules currently being used by parser. | |
size_t | mPass2TokenQuePosition |
the location within the token instruction container where pass 2 is | |
size_t | mPreviousActionQuePosition |
the que position of the previous token that had an action. | |
size_t | mNextActionQuePosition |
the que position for the next token that has an action. | |
const String * | mSource |
pointer to the source to be compiled | |
String | mSourceName |
name of the source to be compiled | |
size_t | mEndOfSource |
size_t | mCurrentLine |
size_t | mCharPos |
current line number in source being tokenized | |
size_t | mErrorCharPos |
position in current line in source being tokenized | |
std::map< size_t, float > | mConstants |
character position in source where last error occurred | |
LabelContainer | mLabels |
bool | mLabelIsActive |
flag indicates when a label is being parsed. | |
size_t | mActiveLabelKey |
the key of the active label being built during pass 1. | |
String * | mActiveLabel |
The active label that is receiving characters during pass 1. | |
bool | mNoSpaceSkip |
flag being true indicates that spaces are not to be skipped automatically gets set to false when mLabelIsActive goes to false | |
bool | mNoTerminalToken |
if flag is true then next terminal token is not added to token que if found but does effect rule path flow | |
size_t | mInsertTokenID |
TokenID to insert if next rule finds a terminal token if zero then no token inserted. | |
uint | mActiveContexts |
Active Contexts pattern used in pass 1 to determine which tokens are valid for a certain context. | |
Static Protected Attributes | |
static TokenActionMap | mTokenActionMap |
Map of Token value as key to an Action. | |
static const size_t | SystemTokenBase = 1000 |
Classes | |
struct | CompositorScriptContext |
Struct for holding the script context while parsing. More... |
Definition at line 42 of file OgreCompositorScriptCompiler.h.
typedef void(CompositorScriptCompiler::* Ogre::CompositorScriptCompiler::CSC_Action)(void) [protected] |
typedef std::map<size_t, CSC_Action> Ogre::CompositorScriptCompiler::TokenActionMap [protected] |
Definition at line 129 of file OgreCompositorScriptCompiler.h.
typedef TokenActionMap::iterator Ogre::CompositorScriptCompiler::TokenActionIterator [protected] |
Definition at line 130 of file OgreCompositorScriptCompiler.h.
typedef std::vector<TokenRule> Ogre::Compiler2Pass::TokenRuleContainer [protected, inherited] |
Definition at line 173 of file OgreCompiler2Pass.h.
typedef TokenRuleContainer::iterator Ogre::Compiler2Pass::TokenRuleIterator [protected, inherited] |
Definition at line 174 of file OgreCompiler2Pass.h.
typedef std::vector<LexemeTokenDef> Ogre::Compiler2Pass::LexemeTokenDefContainer [protected, inherited] |
Definition at line 227 of file OgreCompiler2Pass.h.
typedef LexemeTokenDefContainer::iterator Ogre::Compiler2Pass::LexemeTokenDefIterator [protected, inherited] |
Definition at line 228 of file OgreCompiler2Pass.h.
typedef std::map<String, size_t> Ogre::Compiler2Pass::LexemeTokenMap [protected, inherited] |
Definition at line 230 of file OgreCompiler2Pass.h.
typedef LexemeTokenMap::iterator Ogre::Compiler2Pass::TokenKeyIterator [protected, inherited] |
Definition at line 231 of file OgreCompiler2Pass.h.
typedef std::vector<TokenInst> Ogre::Compiler2Pass::TokenInstContainer [protected, inherited] |
Definition at line 245 of file OgreCompiler2Pass.h.
typedef TokenInstContainer::iterator Ogre::Compiler2Pass::TokenInstIterator [protected, inherited] |
Definition at line 246 of file OgreCompiler2Pass.h.
typedef std::map<size_t, String> Ogre::Compiler2Pass::LabelContainer [protected, inherited] |
storage container for string labels defined in source container uses Token index as a key associated with a label
Definition at line 286 of file OgreCompiler2Pass.h.
enum Ogre::CompositorScriptCompiler::TokenID [protected] |
Definition at line 72 of file OgreCompositorScriptCompiler.h.
enum Ogre::CompositorScriptCompiler::CompositorScriptSection [protected] |
Enum to identify compositor sections.
Definition at line 107 of file OgreCompositorScriptCompiler.h.
enum Ogre::Compiler2Pass::OperationType [protected, inherited] |
Definition at line 157 of file OgreCompiler2Pass.h.
enum Ogre::Compiler2Pass::SystemRuleToken [protected, inherited] |
Definition at line 177 of file OgreCompiler2Pass.h.
enum Ogre::Compiler2Pass::BNF_ID [protected, inherited] |
Definition at line 184 of file OgreCompiler2Pass.h.
Ogre::CompositorScriptCompiler::CompositorScriptCompiler | ( | void | ) |
Ogre::CompositorScriptCompiler::~CompositorScriptCompiler | ( | void | ) |
virtual const String& Ogre::CompositorScriptCompiler::getClientBNFGrammer | ( | void | ) | const [virtual] |
virtual const String& Ogre::CompositorScriptCompiler::getClientGrammerName | ( | void | ) | const [virtual] |
void Ogre::CompositorScriptCompiler::parseScript | ( | DataStreamPtr & | stream, | |
const String & | groupName | |||
) |
Compile a compositor script from a data stream using a specific resource group name.
stream | Weak reference to a data stream which is the source of the material script | |
groupName | The name of the resource group that resources which are parsed are to become a member of. If this group is loaded or unloaded, then the resources discovered in this script will be loaded / unloaded with it. |
Definition at line 64 of file OgreCompositorScriptCompiler.h.
References Ogre::Compiler2Pass::compile().
virtual void Ogre::CompositorScriptCompiler::executeTokenAction | ( | const size_t | tokenID | ) | [protected, virtual] |
Execute an Action associated with a token.
Gets called when the compiler finishes tokenizing a section of the source that has been parsed.
Implements Ogre::Compiler2Pass.
virtual size_t Ogre::CompositorScriptCompiler::getAutoTokenIDStart | ( | ) | const [protected, virtual] |
Get the start position of auto generated token IDs.
Implements Ogre::Compiler2Pass.
Definition at line 143 of file OgreCompositorScriptCompiler.h.
virtual void Ogre::CompositorScriptCompiler::setupTokenDefinitions | ( | void | ) | [protected, virtual] |
Associate all the lexemes used in a material script with their corresponding tokens and actions.
Implements Ogre::Compiler2Pass.
void Ogre::CompositorScriptCompiler::addLexemeTokenAction | ( | const String & | lexeme, | |
const size_t | token, | |||
const CSC_Action | action = 0 | |||
) | [protected] |
void Ogre::CompositorScriptCompiler::addLexemeAction | ( | const String & | lexeme, | |
const CSC_Action | action | |||
) | [protected] |
Definition at line 148 of file OgreCompositorScriptCompiler.h.
void Ogre::CompositorScriptCompiler::logParseError | ( | const String & | error | ) | [protected] |
void Ogre::CompositorScriptCompiler::parseOpenBrace | ( | void | ) | [protected] |
void Ogre::CompositorScriptCompiler::parseCloseBrace | ( | void | ) | [protected] |
void Ogre::CompositorScriptCompiler::parseCompositor | ( | void | ) | [protected] |
void Ogre::CompositorScriptCompiler::parseTechnique | ( | void | ) | [protected] |
void Ogre::CompositorScriptCompiler::parseTexture | ( | void | ) | [protected] |
void Ogre::CompositorScriptCompiler::parseTarget | ( | void | ) | [protected] |
void Ogre::CompositorScriptCompiler::parseInput | ( | void | ) | [protected] |
void Ogre::CompositorScriptCompiler::parseTargetOutput | ( | void | ) | [protected] |
void Ogre::CompositorScriptCompiler::parseOnlyInitial | ( | void | ) | [protected] |
void Ogre::CompositorScriptCompiler::parseVisibilityMask | ( | void | ) | [protected] |
void Ogre::CompositorScriptCompiler::parseLodBias | ( | void | ) | [protected] |
void Ogre::CompositorScriptCompiler::parseMaterialScheme | ( | void | ) | [protected] |
void Ogre::CompositorScriptCompiler::parseShadowsEnabled | ( | void | ) | [protected] |
void Ogre::CompositorScriptCompiler::parsePass | ( | void | ) | [protected] |
void Ogre::CompositorScriptCompiler::parseMaterial | ( | void | ) | [protected] |
void Ogre::CompositorScriptCompiler::parseFirstRenderQueue | ( | void | ) | [protected] |
void Ogre::CompositorScriptCompiler::parseLastRenderQueue | ( | void | ) | [protected] |
void Ogre::CompositorScriptCompiler::parseIdentifier | ( | void | ) | [protected] |
void Ogre::CompositorScriptCompiler::parseClearBuffers | ( | void | ) | [protected] |
void Ogre::CompositorScriptCompiler::parseClearColourValue | ( | void | ) | [protected] |
void Ogre::CompositorScriptCompiler::parseClearDepthValue | ( | void | ) | [protected] |
void Ogre::CompositorScriptCompiler::parseClearStencilValue | ( | void | ) | [protected] |
void Ogre::CompositorScriptCompiler::parseStencilCheck | ( | void | ) | [protected] |
void Ogre::CompositorScriptCompiler::parseStencilFunc | ( | void | ) | [protected] |
void Ogre::CompositorScriptCompiler::parseStencilRefVal | ( | void | ) | [protected] |
void Ogre::CompositorScriptCompiler::parseStencilMask | ( | void | ) | [protected] |
void Ogre::CompositorScriptCompiler::parseStencilFailOp | ( | void | ) | [protected] |
void Ogre::CompositorScriptCompiler::parseStencilDepthFailOp | ( | void | ) | [protected] |
void Ogre::CompositorScriptCompiler::parseStencilPassOp | ( | void | ) | [protected] |
void Ogre::CompositorScriptCompiler::parseStencilTwoSided | ( | void | ) | [protected] |
StencilOperation Ogre::CompositorScriptCompiler::extractStencilOp | ( | void | ) | [protected] |
CompareFunction Ogre::CompositorScriptCompiler::extractCompareFunc | ( | void | ) | [protected] |
bool Ogre::Compiler2Pass::doPass1 | ( | ) | [protected, inherited] |
perform pass 1 of compile process scans source for lexemes that can be tokenized and then performs general semantic and context verification on each lexeme before it is tokenized.
A tokenized instruction list is built to be used by Pass 2. A rule path can trigger Pass 2 execution if enough tokens have been generated in Pass 1. Pass 1 will then pass control to pass 2 temporarily until the current tokens have been consumed.
bool Ogre::Compiler2Pass::doPass2 | ( | ) | [protected, inherited] |
const TokenInst& Ogre::Compiler2Pass::getNextToken | ( | const size_t | expectedTokenID = 0 |
) | const [protected, inherited] |
Gets the next token from the instruction que.
expectedTokenID | if greater than 0 then an exception is raised if tokenID does not match. |
Definition at line 355 of file OgreCompiler2Pass.h.
const TokenInst& Ogre::Compiler2Pass::getCurrentToken | ( | const size_t | expectedTokenID = 0 |
) | const [protected, inherited] |
Gets the current token from the instruction que.
expectedTokenID | if greater than 0 then an exception is raised if tokenID does not match. |
bool Ogre::Compiler2Pass::testNextTokenID | ( | const size_t | expectedTokenID | ) | const [protected, inherited] |
If a next token instruction exist then test if its token ID matches.
expectedTokenID | is the ID of the token to match. |
bool Ogre::Compiler2Pass::testCurrentTokenID | ( | const size_t | expectedTokenID | ) | const [protected, inherited] |
If a current token instruction exist then test if its token ID matches.
expectedTokenID | is the ID of the token to match. |
Definition at line 381 of file OgreCompiler2Pass.h.
void Ogre::Compiler2Pass::skipToken | ( | void | ) | const [protected, inherited] |
skip to the next token in the pass2 queue.
void Ogre::Compiler2Pass::replaceToken | ( | void | ) | [protected, inherited] |
go back to the previous token in the pass2 queue.
float Ogre::Compiler2Pass::getNextTokenValue | ( | void | ) | const [protected, inherited] |
Gets the next token's associated floating point value in the instruction que that was parsed from the text source.
If an unknown token is found or no associated value was found then an exception is raised but the instruction pointer is still moved passed the unknown token. The subclass should catch the exception, provide an error message, and attempt recovery.
Definition at line 396 of file OgreCompiler2Pass.h.
float Ogre::Compiler2Pass::getCurrentTokenValue | ( | void | ) | const [protected, inherited] |
Gets the current token's associated floating point value in the instruction que that was parsed from the text source.
const String& Ogre::Compiler2Pass::getNextTokenLabel | ( | void | ) | const [protected, inherited] |
Gets the next token's associated text label in the instruction que that was parsed from the text source.
Definition at line 415 of file OgreCompiler2Pass.h.
const String& Ogre::Compiler2Pass::getCurrentTokenLabel | ( | void | ) | const [protected, inherited] |
Gets the next token's associated text label in the instruction que that was parsed from the text source.
If an unknown token is found or no associated label was found then an exception is raised. The subclass should catch the exception, provide an error message, and attempt recovery.
size_t Ogre::Compiler2Pass::getNextTokenID | ( | void | ) | const [protected, inherited] |
size_t Ogre::Compiler2Pass::getCurrentTokenID | ( | void | ) | const [protected, inherited] |
const String& Ogre::Compiler2Pass::getNextTokenLexeme | ( | void | ) | const [protected, inherited] |
Get the next token's lexeme string.
Handy when you don't want the ID but want the string representation.
Definition at line 434 of file OgreCompiler2Pass.h.
const String& Ogre::Compiler2Pass::getCurrentTokenLexeme | ( | void | ) | const [protected, inherited] |
Get the current token's lexeme string.
Handy when you don't want the ID but want the string representation.
size_t Ogre::Compiler2Pass::getPass2TokenQueCount | ( | void | ) | const [protected, inherited] |
Gets the number of tokens waiting in the instruction que that need to be processed by an token action in pass 2.
size_t Ogre::Compiler2Pass::getRemainingTokensForAction | ( | void | ) | const [protected, inherited] |
Get the number of tokens not processed by action token.
Client Actions should use this method to retrieve the number of parameters(tokens) remaining to be processed in the action.
void Ogre::Compiler2Pass::setPass2TokenQuePosition | ( | size_t | pos, | |
const bool | activateAction = false | |||
) | [protected, inherited] |
Manually set the Pass2 Token que position.
pos | is the new position within the Pass2 que | |
activateAction | if set true and the token at the new position has an action then the action is activated. |
size_t Ogre::Compiler2Pass::getPass2TokenQuePosition | ( | void | ) | const [protected, inherited] |
Get the current position in the Pass2 Token Que.
Definition at line 464 of file OgreCompiler2Pass.h.
bool Ogre::Compiler2Pass::setNextActionQuePosition | ( | size_t | pos, | |
const bool | search = false | |||
) | [protected, inherited] |
Set the position of the next token action in the Pass2 Token Que.
pos | is the position in the Pass2 Token Que where the next action is. | |
search | if true then the que is searched from pos until an action is found. If the end of the que is reached and no action has been found then NextActionQuePosition is set to the end of the que and false is returned. |
size_t Ogre::Compiler2Pass::addLexemeToken | ( | const String & | lexeme, | |
const size_t | token, | |||
const bool | hasAction = false , |
|||
const bool | caseSensitive = false | |||
) | [protected, inherited] |
Add a lexeme token association.
lexeme | is the name of the token and use when parsing the source to determine a match for a token. | |
token | is the ID associated with the lexeme. If token is 0 then the token ID is auto generated and returned. | |
hasAction | must be set true if the client wants an action triggered when this token is generated | |
caseSensitive | should be set true if lexeme match should use case sensitivity |
void Ogre::Compiler2Pass::setClientBNFGrammer | ( | void | ) | [protected, inherited] |
Sets up the parser rules for the client based on the BNF Grammar text passed in.
void Ogre::Compiler2Pass::findEOL | ( | ) | [protected, inherited] |
find the eol character
bool Ogre::Compiler2Pass::isFloatValue | ( | float & | fvalue, | |
size_t & | charsize | |||
) | const [protected, inherited] |
check to see if the text at the present position in the source is a numerical constant
fvalue | is a reference that will receive the float value that is in the source | |
charsize | reference to receive number of characters that make of the value in the source |
bool Ogre::Compiler2Pass::isCharacterLabel | ( | const size_t | rulepathIDX | ) | [protected, inherited] |
Check if source at current position is supposed to be a user defined character label.
A new label is processed when previous operation was not _character_ otherwise the processed character (if match was found) is added to the current label. This allows _character_ operations to be chained together to form a crude regular expression to build a label.
rulepathIDX | index into rule path database of token to validate. |
bool Ogre::Compiler2Pass::isLexemeMatch | ( | const String & | lexeme, | |
const bool | caseSensitive | |||
) | const [protected, inherited] |
check to see if the text is in the lexeme text library
lexeme | points to beginning of text where a lexer token might exist | |
caseSensitive | set to true if match should be case sensitive |
bool Ogre::Compiler2Pass::isEndOfSource | ( | ) | const [protected, inherited] |
Check if pass 1 has parsed to the end of the source.
Definition at line 532 of file OgreCompiler2Pass.h.
bool Ogre::Compiler2Pass::positionToNextLexeme | ( | ) | [protected, inherited] |
position to the next possible valid symbol
bool Ogre::Compiler2Pass::processRulePath | ( | size_t | rulepathIDX | ) | [protected, inherited] |
process input source text using rulepath to determine allowed tokens
rulepathIDX | index into an array of Token Rules that define a rule path to be processed |
void Ogre::Compiler2Pass::setActiveContexts | ( | const uint | contexts | ) | [protected, inherited] |
setup ActiveContexts - should be called by subclass to setup initial language contexts
Definition at line 560 of file OgreCompiler2Pass.h.
void Ogre::Compiler2Pass::skipComments | ( | ) | [protected, inherited] |
comment specifiers are hard coded
void Ogre::Compiler2Pass::skipEOL | ( | ) | [protected, inherited] |
find end of line marker and move past it
void Ogre::Compiler2Pass::skipWhiteSpace | ( | ) | [protected, inherited] |
skip all the white space which includes spaces and tabs
bool Ogre::Compiler2Pass::ValidateToken | ( | const size_t | rulepathIDX, | |
const size_t | activeRuleID | |||
) | [protected, inherited] |
check if current position in source has the lexeme text equivalent to the TokenID
rulepathIDX | index into rule path database of token to validate | |
activeRuleID | index of non-terminal rule that generated the token |
void Ogre::Compiler2Pass::verifyTokenRuleLinks | ( | const String & | grammerName | ) | [protected, inherited] |
scan through all the rules and initialize token definition with index to rules for non-terminal tokens.
Gets called when internal grammar is being verified or after client grammar has been parsed.
grammerName | is the name of the grammar the token rules are for |
void Ogre::Compiler2Pass::checkTokenActionTrigger | ( | void | ) | [protected, inherited] |
Checks the last token instruction and if it has an action then it triggers the action of the previously found token having an action.
String Ogre::Compiler2Pass::getBNFGrammerTextFromRulePath | ( | size_t | ruleID, | |
const size_t | level = 0 | |||
) | [protected, inherited] |
Get the text representation of the rule path.
This is a good way to way to visually verify that the BNF grammar did compile correctly.
ruleID | is the index into the rule path. | |
level | is the number of levels a non-terminal will expand to. Defaults to 0 if not set which will cause non-terminals to not expand. |
compile the source - performs 2 passes.
First pass is to tokenize, check semantics and context. The second pass is performed by using tokens to look up function implementors and executing them which convert tokens to application specific instructions.
source | a pointer to the source text to be compiled |
Referenced by parseScript().
void* Ogre::AllocatedObject< Alloc >::operator new | ( | size_t | sz, | |
const char * | file, | |||
int | line, | |||
const char * | func | |||
) | [inherited] |
void* Ogre::AllocatedObject< Alloc >::operator new | ( | size_t | sz | ) | [inherited] |
Definition at line 67 of file OgreMemoryAllocatedObject.h.
void* Ogre::AllocatedObject< Alloc >::operator new | ( | size_t | sz, | |
void * | ptr | |||
) | [inherited] |
void* Ogre::AllocatedObject< Alloc >::operator new[] | ( | size_t | sz, | |
const char * | file, | |||
int | line, | |||
const char * | func | |||
) | [inherited] |
void* Ogre::AllocatedObject< Alloc >::operator new[] | ( | size_t | sz | ) | [inherited] |
Definition at line 84 of file OgreMemoryAllocatedObject.h.
void Ogre::AllocatedObject< Alloc >::operator delete | ( | void * | ptr | ) | [inherited] |
Definition at line 89 of file OgreMemoryAllocatedObject.h.
void Ogre::AllocatedObject< Alloc >::operator delete | ( | void * | ptr, | |
void * | ||||
) | [inherited] |
Definition at line 95 of file OgreMemoryAllocatedObject.h.
void Ogre::AllocatedObject< Alloc >::operator delete | ( | void * | ptr, | |
const char * | , | |||
int | , | |||
const char * | ||||
) | [inherited] |
Definition at line 101 of file OgreMemoryAllocatedObject.h.
void Ogre::AllocatedObject< Alloc >::operator delete[] | ( | void * | ptr | ) | [inherited] |
Definition at line 106 of file OgreMemoryAllocatedObject.h.
void Ogre::AllocatedObject< Alloc >::operator delete[] | ( | void * | ptr, | |
const char * | , | |||
int | , | |||
const char * | ||||
) | [inherited] |
Definition at line 112 of file OgreMemoryAllocatedObject.h.
Definition at line 126 of file OgreCompositorScriptCompiler.h.
TokenActionMap Ogre::CompositorScriptCompiler::mTokenActionMap [static, protected] |
Map of Token value as key to an Action.
An Action converts tokens into the final format. All instances use the same Token Action Map.
Definition at line 135 of file OgreCompositorScriptCompiler.h.
const size_t Ogre::Compiler2Pass::SystemTokenBase = 1000 [static, protected, inherited] |
Definition at line 176 of file OgreCompiler2Pass.h.
TokenState* Ogre::Compiler2Pass::mClientTokenState [protected, inherited] |
Definition at line 257 of file OgreCompiler2Pass.h.
TokenState* Ogre::Compiler2Pass::mActiveTokenState [protected, inherited] |
Active token que, definitions, rules currently being used by parser.
Definition at line 260 of file OgreCompiler2Pass.h.
size_t Ogre::Compiler2Pass::mPass2TokenQuePosition [mutable, protected, inherited] |
the location within the token instruction container where pass 2 is
Definition at line 262 of file OgreCompiler2Pass.h.
size_t Ogre::Compiler2Pass::mPreviousActionQuePosition [protected, inherited] |
the que position of the previous token that had an action.
A token's action is fired on the next token having an action.
Definition at line 266 of file OgreCompiler2Pass.h.
size_t Ogre::Compiler2Pass::mNextActionQuePosition [protected, inherited] |
the que position for the next token that has an action.
Definition at line 269 of file OgreCompiler2Pass.h.
const String* Ogre::Compiler2Pass::mSource [protected, inherited] |
String Ogre::Compiler2Pass::mSourceName [protected, inherited] |
size_t Ogre::Compiler2Pass::mEndOfSource [protected, inherited] |
Definition at line 275 of file OgreCompiler2Pass.h.
size_t Ogre::Compiler2Pass::mCurrentLine [protected, inherited] |
Definition at line 277 of file OgreCompiler2Pass.h.
size_t Ogre::Compiler2Pass::mCharPos [protected, inherited] |
size_t Ogre::Compiler2Pass::mErrorCharPos [protected, inherited] |
position in current line in source being tokenized
Definition at line 279 of file OgreCompiler2Pass.h.
std::map<size_t, float> Ogre::Compiler2Pass::mConstants [protected, inherited] |
character position in source where last error occurred
storage container for constants defined in source container uses Token index as a key associated with a float constant
Definition at line 283 of file OgreCompiler2Pass.h.
LabelContainer Ogre::Compiler2Pass::mLabels [protected, inherited] |
Definition at line 287 of file OgreCompiler2Pass.h.
bool Ogre::Compiler2Pass::mLabelIsActive [protected, inherited] |
flag indicates when a label is being parsed.
It gets set false when a terminal token not of _character_ is encountered
Definition at line 290 of file OgreCompiler2Pass.h.
size_t Ogre::Compiler2Pass::mActiveLabelKey [protected, inherited] |
the key of the active label being built during pass 1.
a new key is calculated when mLabelIsActive switches from false to true
Definition at line 293 of file OgreCompiler2Pass.h.
String* Ogre::Compiler2Pass::mActiveLabel [protected, inherited] |
The active label that is receiving characters during pass 1.
Definition at line 295 of file OgreCompiler2Pass.h.
bool Ogre::Compiler2Pass::mNoSpaceSkip [protected, inherited] |
flag being true indicates that spaces are not to be skipped automatically gets set to false when mLabelIsActive goes to false
Definition at line 298 of file OgreCompiler2Pass.h.
bool Ogre::Compiler2Pass::mNoTerminalToken [protected, inherited] |
if flag is true then next terminal token is not added to token que if found but does effect rule path flow
Definition at line 301 of file OgreCompiler2Pass.h.
size_t Ogre::Compiler2Pass::mInsertTokenID [protected, inherited] |
TokenID to insert if next rule finds a terminal token if zero then no token inserted.
Definition at line 304 of file OgreCompiler2Pass.h.
uint Ogre::Compiler2Pass::mActiveContexts [protected, inherited] |
Active Contexts pattern used in pass 1 to determine which tokens are valid for a certain context.
Definition at line 307 of file OgreCompiler2Pass.h.
Copyright © 2008 Torus Knot Software Ltd
This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.
Last modified Sun Sep 27 22:03:08 2009