#include <OgreMaterialScriptCompiler.h>
Inheritance diagram for Ogre::MaterialScriptCompiler:

Public Member Functions | |
| MaterialScriptCompiler (void) | |
| ~MaterialScriptCompiler (void) | |
| virtual const String & | getClientBNFGrammer (void) const |
| gets BNF Grammer for Compositor script. | |
| virtual const String & | getClientGrammerName (void) const |
| get the name of the BNF grammer. | |
| void | parseScript (DataStreamPtr &stream, const String &groupName, const bool allowOverride=false) |
| Compile a material 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. | |
Protected Types | |
| typedef void(MaterialScriptCompiler::* | MSC_Action )(void) |
| typedef std::map< size_t, MSC_Action > | TokenActionMap |
| typedef TokenActionMap::iterator | TokenActionIterator |
| enum | TokenID { ID_UNKOWN = 0, ID_VERTEX_PROGRAM, ID_FRAGMENT_PROGRAM, ID_CLONE, ID_VERTEXCOLOUR, ID_COLOUR_BLEND, ID_DEST_COLOUR, ID_SRC_COLOUR, ID_ONE_MINUS_DEST_COLOUR, ID_ONE_MINUS_SRC_COLOUR, ID_DEST_ALPHA, ID_SRC_ALPHA, ID_ONE_MINUS_DEST_ALPHA, ID_ONE_MINUS_SRC_ALPHA, ID_ALWAYS_FAIL, ID_ALWAYS_PASS, ID_LESS_EQUAL, ID_LESS, ID_EQUAL, ID_NOT_EQUAL, ID_GREATER_EQUAL, ID_GREATER, ID_CLOCKWISE, ID_ANTICLOCKWISE, ID_CULL_BACK, ID_CULL_FRONT, ID_FLAT, ID_GOURAUD, ID_PHONG, ID_SOLID, ID_WIREFRAME, ID_POINTS, ID_EXP, ID_EXP2, ID_ONCE, ID_ONCE_PER_LIGHT, ID_PER_LIGHT, ID_PER_N_LIGHTS, ID_DIRECTIONAL, ID_SPOT, ID_1D, ID_2D, ID_3D, ID_CUBIC, ID_UNLIMITED, ID_ALPHA, ID_SEPARATE_UV, ID_COMBINED_UVW, ID_WRAP, ID_CLAMP, ID_MIRROR, ID_BORDER, ID_BILINEAR, ID_TRILINEAR, ID_ANISOTROPIC, ID_REPLACE, ID_SOURCE1, ID_SOURCE2, ID_MODULATE_X2, ID_MODULATE_X4, ID_ADD_SIGNED, ID_ADD_SMOOTH, ID_SUBTRACT, ID_BLEND_DIFFUSE_COLOUR, ID_BLEND_DIFFUSE_ALPHA, ID_BLEND_TEXTURE_ALPHA, ID_BLEND_CURRENT_ALPHA, ID_BLEND_MANUAL, ID_DOTPRODUCT, ID_SRC_CURRENT, ID_SRC_TEXTURE, ID_SRC_DIFFUSE, ID_SRC_SPECULAR, ID_SRC_MANUAL, ID_SPHERICAL, ID_PLANAR, ID_CUBIC_REFLECTION, ID_CUBIC_NORMAL, ID_SCROLL_X, ID_SCROLL_Y, ID_SCALE_X, ID_SCALE_Y, ID_SINE, ID_TRIANGLE, ID_SQUARE, ID_SAWTOOTH, ID_INVERSE_SAWTOOTH, ID_ROTATE, ID_NAMED, ID_SHADOW, ID_ON, ID_OFF, ID_TRUE, ID_FALSE, ID_NONE, ID_POINT, ID_LINEAR, ID_ADD, ID_MODULATE, ID_ALPHA_BLEND, ID_ONE, ID_ZERO, ID_VERTEX, ID_FRAGMENT, ID_AUTOTOKENSTART } |
| enum | MaterialScriptSection { MSS_NONE, MSS_MATERIAL, MSS_TECHNIQUE, MSS_PASS, MSS_TEXTUREUNIT, MSS_PROGRAM_REF, MSS_PROGRAM, MSS_DEFAULT_PARAMETERS, MSS_TEXTURESOURCE } |
| Enum to identify material sections. More... | |
| typedef std::vector< TokenRule > | TokenRuleContainer |
| typedef TokenRuleContainer::iterator | TokenRuleIterator |
| typedef std::vector< LexemeTokenDef > | LexemeTokenDefContainer |
| typedef LexemeTokenDefContainer::iterator | LexemeTokenDefIterator |
| typedef std::map< std::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 | |
| 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 } |
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 MSC_Action action=0) |
| void | addLexemeAction (const String &lexeme, const MSC_Action action) |
| Associate all the lexemes used in a material script with their corresponding actions and have token IDs auto-generated. | |
| void | logParseError (const String &error) |
| ColourValue | _parseColourValue (void) |
| CompareFunction | convertCompareFunction (void) |
| void | parseOpenBrace (void) |
| void | parseCloseBrace (void) |
| void | parseMaterial (void) |
| void | parseLodDistances (void) |
| void | parseReceiveShadows (void) |
| void | parseTransparencyCastsShadows (void) |
| void | parseSetTextureAlias (void) |
| void | parseTechnique (void) |
| void | parseScheme (void) |
| void | parseLodIndex (void) |
| void | parsePass (void) |
| void | parseAmbient (void) |
| void | parseDiffuse (void) |
| void | parseSpecular (void) |
| void | parseEmissive (void) |
| void | parseSceneBlend (void) |
| SceneBlendFactor | convertBlendFactor (void) |
| void | parseDepthCheck (void) |
| void | parseDepthWrite (void) |
| void | parseDepthFunc (void) |
| void | parseDepthBias (void) |
| void | parseAlphaRejection (void) |
| void | parseCullHardware (void) |
| void | parseCullSoftware (void) |
| void | parseLighting (void) |
| void | parseShading (void) |
| void | parsePolygonMode (void) |
| void | parseFogOverride (void) |
| void | parseMaxLights (void) |
| void | parseStartLight (void) |
| void | parseIteration (void) |
| void | parseIterationLightTypes (void) |
| void | parseColourWrite (void) |
| void | parsePointSize (void) |
| void | parsePointSprites (void) |
| void | parsePointSizeMin (void) |
| void | parsePointSizeMax (void) |
| void | parsePointSizeAttenuation (void) |
| void | parseTextureUnit (void) |
| void | parseTextureAlias (void) |
| void | parseTexture (void) |
| void | parseAnimTexture (void) |
| void | parseCubicTexture (void) |
| void | parseTexCoord (void) |
| TextureUnitState::TextureAddressingMode | convTexAddressMode (void) |
| void | parseTexAddressMode (void) |
| void | parseTexBorderColour (void) |
| void | parseFiltering (void) |
| FilterOptions | convertFiltering () |
| void | parseMaxAnisotropy (void) |
| void | parseMipMapBias (void) |
| void | parseColourOp (void) |
| void | parseColourOpEx (void) |
| LayerBlendOperationEx | convertBlendOpEx (void) |
| LayerBlendSource | convertBlendSource (void) |
| void | parseColourOpMultipassFallback (void) |
| void | parseAlphaOpEx (void) |
| void | parseEnvMap (void) |
| void | parseScroll (void) |
| void | parseScrollAnim (void) |
| void | parseRotate (void) |
| void | parseRotateAnim (void) |
| void | parseScale (void) |
| void | parseWaveXform (void) |
| void | parseTransform (void) |
| void | parseTextureCustomParameter (void) |
| void | parseBindingType (void) |
| void | parseContentType (void) |
| void | parseGPUProgram (void) |
| void | parseProgramSource (void) |
| void | parseProgramSyntax (void) |
| void | parseProgramCustomParameter (void) |
| void | parseDefaultParams (void) |
| void | parseProgramSkeletalAnimation (void) |
| void | parseProgramMorphAnimation (void) |
| void | parseProgramPoseAnimation (void) |
| void | parseProgramVertexTextureFetch (void) |
| void | parseVertexProgramRef (void) |
| void | parseFragmentProgramRef (void) |
| void | parseShadowCasterVertexProgramRef (void) |
| void | parseShadowReceiverVertexProgramRef (void) |
| void | parseShadowReceiverFragmentProgramRef (void) |
| void | parseParamIndexed (void) |
| void | parseParamIndexedAuto (void) |
| void | parseParamNamed (void) |
| void | parseParamNamedAuto (void) |
| void | processManualProgramParam (bool isNamed, const String commandName, size_t index=0, const String ¶mName=StringUtil::BLANK) |
| void | processAutoProgramParam (bool isNamed, const String commandName, size_t index, const String ¶mName=StringUtil::BLANK) |
| void | finishProgramDefinition (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) |
| Manualy 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 Grammer text passed in. | |
| void | findEOL () |
| find the eol charater | |
| 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 sysmbol | |
| 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 | |
| MaterialScriptContext | mScriptContext |
| TokenState * | mClientTokenState |
| TokenState * | mActiveTokenState |
| Active token que, definitions, rules currntly 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 |
| storage container for constants defined in source container uses Token index as a key associated with a float constant | |
| 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 | MaterialScriptContext |
| Struct for holding the script context while parsing. More... | |
| struct | MaterialScriptProgramDefinition |
| Struct for holding a program definition which is in progress. More... | |
|
|
storage container for string labels defined in source container uses Token index as a key associated with a label
Definition at line 287 of file OgreCompiler2Pass.h. |
|
|
Definition at line 228 of file OgreCompiler2Pass.h. |
|
|
Definition at line 229 of file OgreCompiler2Pass.h. |
|
|
Definition at line 231 of file OgreCompiler2Pass.h. |
|
|
Definition at line 194 of file OgreMaterialScriptCompiler.h. |
|
|
Definition at line 196 of file OgreMaterialScriptCompiler.h. |
|
|
Definition at line 195 of file OgreMaterialScriptCompiler.h. |
|
|
Definition at line 246 of file OgreCompiler2Pass.h. |
|
|
Definition at line 247 of file OgreCompiler2Pass.h. |
|
|
Definition at line 232 of file OgreCompiler2Pass.h. |
|
|
Definition at line 174 of file OgreCompiler2Pass.h. |
|
|
Definition at line 175 of file OgreCompiler2Pass.h. |
|
|
Definition at line 185 of file OgreCompiler2Pass.h. |
|
|
Enum to identify material sections.
Definition at line 139 of file OgreMaterialScriptCompiler.h. |
|
|
Definition at line 158 of file OgreCompiler2Pass.h. |
|
|
Definition at line 178 of file OgreCompiler2Pass.h. |
|