source: OGRE/trunk/ogrenew/Docs/api/html/OgreCompiler2Pass_8h-source.html @ 692

Revision 692, 27.1 KB checked in by mattausch, 18 years ago (diff)

adding ogre 1.2 and dependencies

Line 
1<html>
2<head>
3<title>OgreCompiler2Pass.h Source File - OGRE Documentation</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
4<link type="text/css" rel="stylesheet" href="style.css">
5</head>
6
7<body>
8<!-- Generated by Doxygen 1.3.6 -->
9<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
10<h1>OgreCompiler2Pass.h</h1><a href="OgreCompiler2Pass_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/*</span>
1100002 <span class="comment">-----------------------------------------------------------------------------</span>
1200003 <span class="comment">This source file is part of OGRE</span>
1300004 <span class="comment">    (Object-oriented Graphics Rendering Engine)</span>
1400005 <span class="comment">For the latest info, see http://www.stevestreeting.com/ogre/</span>
1500006 <span class="comment"></span>
1600007 <span class="comment">Copyright (c) 2000-2005 The OGRE Team</span>
1700008 <span class="comment">Also see acknowledgements in Readme.html</span>
1800009 <span class="comment"></span>
1900010 <span class="comment">This program is free software; you can redistribute it and/or modify it under</span>
2000011 <span class="comment">the terms of the GNU General Public License as published by the Free Software</span>
2100012 <span class="comment">Foundation; either version 2 of the License, or (at your option) any later</span>
2200013 <span class="comment">version.</span>
2300014 <span class="comment"></span>
2400015 <span class="comment">This program is distributed in the hope that it will be useful, but WITHOUT</span>
2500016 <span class="comment">ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS</span>
2600017 <span class="comment">FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.</span>
2700018 <span class="comment"></span>
2800019 <span class="comment">You should have received a copy of the GNU General Public License along with</span>
2900020 <span class="comment">this program; if not, write to the Free Software Foundation, Inc., 59 Temple</span>
3000021 <span class="comment">Place - Suite 330, Boston, MA 02111-1307, USA, or go to</span>
3100022 <span class="comment">http://www.gnu.org/copyleft/gpl.html.</span>
3200023 <span class="comment">-----------------------------------------------------------------------------</span>
3300024 <span class="comment">*/</span>
3400025
3500026
3600027 <span class="preprocessor">#ifndef __Compiler2Pass_H__</span>
3700028 <span class="preprocessor"></span><span class="preprocessor">#define __Compiler2Pass_H__</span>
3800029 <span class="preprocessor"></span>
3900030 <span class="preprocessor">#include &lt;vector&gt;</span>
4000031 <span class="preprocessor">#include "<a class="code" href="OgrePrerequisites_8h.html">OgrePrerequisites.h</a>"</span>
4100032
4200033 <span class="keyword">namespace </span>Ogre {
4300034
44<a name="l00114"></a><a class="code" href="classOgre_1_1Compiler2Pass.html">00114</a>     <span class="keyword">class </span><a class="code" href="OgrePlatform_8h.html#a16">_OgreExport</a> Compiler2Pass
4500115     {
4600116
4700117     <span class="keyword">protected</span>:
4800118
4900119         <span class="comment">// BNF operation types</span>
50<a name="l00120"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerx156">00120</a>         <span class="keyword">enum</span> OperationType {otUNKNOWN, otRULE, otAND, otOR, otOPTIONAL, otREPEAT, otDATA, otNOT_TEST, otEND};
5100121
52<a name="l00125"></a><a class="code" href="structOgre_1_1Compiler2Pass_1_1TokenRule.html">00125</a>         <span class="keyword">struct </span><a class="code" href="structOgre_1_1Compiler2Pass_1_1TokenRule.html">TokenRule</a>
5300126         {
54<a name="l00127"></a><a class="code" href="structOgre_1_1Compiler2Pass_1_1TokenRule.html#Ogre_1_1Compiler2Pass_1_1TokenRuleo0">00127</a>             OperationType operation;
55<a name="l00128"></a><a class="code" href="structOgre_1_1Compiler2Pass_1_1TokenRule.html#Ogre_1_1Compiler2Pass_1_1TokenRuleo1">00128</a>             size_t tokenID;
5600129
57<a name="l00130"></a><a class="code" href="structOgre_1_1Compiler2Pass_1_1TokenRule.html#Ogre_1_1Compiler2Pass_1_1TokenRulea0">00130</a>             <a class="code" href="structOgre_1_1Compiler2Pass_1_1TokenRule.html">TokenRule</a>(<span class="keywordtype">void</span>) : operation(otUNKNOWN), tokenID(0) {}
58<a name="l00131"></a><a class="code" href="structOgre_1_1Compiler2Pass_1_1TokenRule.html#Ogre_1_1Compiler2Pass_1_1TokenRulea1">00131</a>             <a class="code" href="structOgre_1_1Compiler2Pass_1_1TokenRule.html">TokenRule</a>(<span class="keyword">const</span> OperationType ot, <span class="keyword">const</span> size_t token)
5900132                 : operation(ot), tokenID(token) {}
6000133         };
6100134
62<a name="l00135"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerx85">00135</a>         <span class="keyword">typedef</span> std::vector&lt;TokenRule&gt; <a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerx85">TokenRuleContainer</a>;
63<a name="l00136"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerx86">00136</a>         <span class="keyword">typedef</span> TokenRuleContainer::iterator <a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerx86">TokenRuleIterator</a>;
6400137
65<a name="l00138"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilert3">00138</a>         <span class="keyword">static</span> <span class="keyword">const</span> size_t SystemTokenBase = 1000;
66<a name="l00139"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerx157">00139</a>         <span class="keyword">enum</span> SystemRuleToken {
6700140             _no_token_ = SystemTokenBase,
6800141             _character_,
6900142             _value_,
7000143             _no_space_skip_
7100144         };
7200145
73<a name="l00146"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerx158">00146</a>         <span class="keyword">enum</span> BNF_ID {BNF_UNKOWN = 0,
7400147             BNF_SYNTAX, BNF_RULE, BNF_IDENTIFIER, BNF_IDENTIFIER_RIGHT, BNF_IDENTIFIER_CHARACTERS, BNF_ID_BEGIN, BNF_ID_END,
7500148             BNF_CONSTANT_BEGIN, BNF_SET_RULE, BNF_EXPRESSION,
7600149             BNF_AND_TERM, BNF_OR_TERM, BNF_TERM, BNF_TERM_ID, BNF_CONSTANT, BNF_OR, BNF_TERMINAL_SYMBOL, BNF_TERMINAL_START,
7700150             BNF_REPEAT_EXPRESSION, BNF_REPEAT_BEGIN, BNF_REPEAT_END, BNF_SET, BNF_SET_BEGIN, BNF_SET_END,
7800151             BNF_NOT_TEST, BNF_NOT_TEST_BEGIN, BNF_OPTIONAL_EXPRESSION, BNF_NOT_EXPRESSION, BNF_NOT_CHK,
7900152             BNF_OPTIONAL_BEGIN, BNF_OPTIONAL_END, BNF_NO_TOKEN_START, BNF_SINGLEQUOTE, BNF_SINGLE_QUOTE_EXC, BNF_SET_END_EXC,
8000153             BNF_ANY_CHARACTER, BNF_SPECIAL_CHARACTERS1,
8100154             BNF_SPECIAL_CHARACTERS2, BNF_WHITE_SPACE_CHK,
8200155
8300156             BNF_LETTER, BNF_LETTER_DIGIT, BNF_DIGIT, BNF_WHITE_SPACE,
8400157             BNF_ALPHA_SET, BNF_NUMBER_SET, BNF_SPECIAL_CHARACTER_SET1,
8500158             BNF_SPECIAL_CHARACTER_SET2, BNF_SPECIAL_CHARACTER_SET3, BNF_NOT_CHARS
8600159         };
8700160
8800161
89<a name="l00163"></a><a class="code" href="structOgre_1_1Compiler2Pass_1_1LexemeTokenDef.html">00163</a>         <span class="keyword">struct </span><a class="code" href="structOgre_1_1Compiler2Pass_1_1LexemeTokenDef.html">LexemeTokenDef</a>
9000164         {
91<a name="l00165"></a><a class="code" href="structOgre_1_1Compiler2Pass_1_1LexemeTokenDef.html#Ogre_1_1Compiler2Pass_1_1LexemeTokenDefo0">00165</a>             size_t ID;                 
92<a name="l00166"></a><a class="code" href="structOgre_1_1Compiler2Pass_1_1LexemeTokenDef.html#Ogre_1_1Compiler2Pass_1_1LexemeTokenDefo1">00166</a>             <span class="keywordtype">bool</span> hasAction;           
93<a name="l00167"></a><a class="code" href="structOgre_1_1Compiler2Pass_1_1LexemeTokenDef.html#Ogre_1_1Compiler2Pass_1_1LexemeTokenDefo2">00167</a>             <span class="keywordtype">bool</span> isNonTerminal;       
94<a name="l00168"></a><a class="code" href="structOgre_1_1Compiler2Pass_1_1LexemeTokenDef.html#Ogre_1_1Compiler2Pass_1_1LexemeTokenDefo3">00168</a>             size_t ruleID;             
95<a name="l00169"></a><a class="code" href="structOgre_1_1Compiler2Pass_1_1LexemeTokenDef.html#Ogre_1_1Compiler2Pass_1_1LexemeTokenDefo4">00169</a>             <span class="keywordtype">bool</span> isCaseSensitive;       
96<a name="l00170"></a><a class="code" href="structOgre_1_1Compiler2Pass_1_1LexemeTokenDef.html#Ogre_1_1Compiler2Pass_1_1LexemeTokenDefo5">00170</a>             <a class="code" href="namespaceOgre.html#a471">String</a> lexeme;             
9700171
98<a name="l00172"></a><a class="code" href="structOgre_1_1Compiler2Pass_1_1LexemeTokenDef.html#Ogre_1_1Compiler2Pass_1_1LexemeTokenDefa0">00172</a>             <a class="code" href="structOgre_1_1Compiler2Pass_1_1LexemeTokenDef.html">LexemeTokenDef</a>(<span class="keywordtype">void</span>) : ID(0), hasAction(false), isNonTerminal(false), ruleID(0), isCaseSensitive(false) {}
99<a name="l00173"></a><a class="code" href="structOgre_1_1Compiler2Pass_1_1LexemeTokenDef.html#Ogre_1_1Compiler2Pass_1_1LexemeTokenDefa1">00173</a>             <a class="code" href="structOgre_1_1Compiler2Pass_1_1LexemeTokenDef.html">LexemeTokenDef</a>( <span class="keyword">const</span> size_t ID, <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a471">String</a>&amp; lexeme, <span class="keyword">const</span> <span class="keywordtype">bool</span> hasAction = <span class="keyword">false</span>, <span class="keyword">const</span> <span class="keywordtype">bool</span> caseSensitive = <span class="keyword">false</span> )
10000174                 : ID(ID)
10100175                 , hasAction(hasAction)
10200176                 , isNonTerminal(false)
10300177                 , ruleID(0)
10400178                 , isCaseSensitive(caseSensitive)
10500179                 , lexeme(lexeme)
10600180             {
10700181             }
10800182
10900183         };
11000184
111<a name="l00185"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerx87">00185</a>         <span class="keyword">typedef</span> std::vector&lt;LexemeTokenDef&gt; <a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerx87">LexemeTokenDefContainer</a>;
112<a name="l00186"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerx88">00186</a>         <span class="keyword">typedef</span> LexemeTokenDefContainer::iterator <a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerx88">LexemeTokenDefIterator</a>;
11300187
114<a name="l00188"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerx89">00188</a>         <span class="keyword">typedef</span> std::map&lt;std::string, size_t&gt; <a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerx89">LexemeTokenMap</a>;
115<a name="l00189"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerx90">00189</a>         <span class="keyword">typedef</span> LexemeTokenMap::iterator <a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerx90">TokenKeyIterator</a>;
11600191
11700192
118<a name="l00194"></a><a class="code" href="structOgre_1_1Compiler2Pass_1_1TokenInst.html">00194</a>         <span class="keyword">struct </span><a class="code" href="structOgre_1_1Compiler2Pass_1_1TokenInst.html">TokenInst</a>
11900195         {
120<a name="l00196"></a><a class="code" href="structOgre_1_1Compiler2Pass_1_1TokenInst.html#Ogre_1_1Compiler2Pass_1_1TokenInsto0">00196</a>         size_t NTTRuleID;           
121<a name="l00197"></a><a class="code" href="structOgre_1_1Compiler2Pass_1_1TokenInst.html#Ogre_1_1Compiler2Pass_1_1TokenInsto1">00197</a>         size_t tokenID;                 
122<a name="l00198"></a><a class="code" href="structOgre_1_1Compiler2Pass_1_1TokenInst.html#Ogre_1_1Compiler2Pass_1_1TokenInsto2">00198</a>         size_t line;               
123<a name="l00199"></a><a class="code" href="structOgre_1_1Compiler2Pass_1_1TokenInst.html#Ogre_1_1Compiler2Pass_1_1TokenInsto3">00199</a>         size_t pos;             
124<a name="l00200"></a><a class="code" href="structOgre_1_1Compiler2Pass_1_1TokenInst.html#Ogre_1_1Compiler2Pass_1_1TokenInsto4">00200</a>         <span class="keywordtype">bool</span> found;               
12500201         };
12600202
127<a name="l00203"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerx91">00203</a>         <span class="keyword">typedef</span> std::vector&lt;TokenInst&gt; <a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerx91">TokenInstContainer</a>;
128<a name="l00204"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerx92">00204</a>         <span class="keyword">typedef</span> TokenInstContainer::iterator <a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerx92">TokenInstIterator</a>;
12900205
13000206         <span class="comment">// token que, definitions, rules</span>
131<a name="l00207"></a><a class="code" href="structOgre_1_1Compiler2Pass_1_1TokenState.html">00207</a>         <span class="keyword">struct </span><a class="code" href="structOgre_1_1Compiler2Pass_1_1TokenState.html">TokenState</a>
13200208         {
133<a name="l00209"></a><a class="code" href="structOgre_1_1Compiler2Pass_1_1TokenState.html#Ogre_1_1Compiler2Pass_1_1TokenStateo0">00209</a>             <a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerx91">TokenInstContainer</a>       tokenQue;
134<a name="l00210"></a><a class="code" href="structOgre_1_1Compiler2Pass_1_1TokenState.html#Ogre_1_1Compiler2Pass_1_1TokenStateo1">00210</a>             <a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerx87">LexemeTokenDefContainer</a>  lexemeTokenDefinitions;
135<a name="l00211"></a><a class="code" href="structOgre_1_1Compiler2Pass_1_1TokenState.html#Ogre_1_1Compiler2Pass_1_1TokenStateo2">00211</a>             <a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerx85">TokenRuleContainer</a>       rootRulePath;
136<a name="l00212"></a><a class="code" href="structOgre_1_1Compiler2Pass_1_1TokenState.html#Ogre_1_1Compiler2Pass_1_1TokenStateo3">00212</a>             <a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerx89">LexemeTokenMap</a>           lexemeTokenMap;
13700213         };
13800214
139<a name="l00215"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerp1">00215</a>         <a class="code" href="structOgre_1_1Compiler2Pass_1_1TokenState.html">TokenState</a>* mClientTokenState;
14000216
141<a name="l00218"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerp2">00218</a>         <a class="code" href="structOgre_1_1Compiler2Pass_1_1TokenState.html">TokenState</a>* mActiveTokenState;
142<a name="l00220"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerp3">00220</a>         size_t mPass2TokenQuePosition;
143<a name="l00224"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerp4">00224</a>         size_t mPreviousActionQuePosition;
14400225
145<a name="l00227"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerp5">00227</a>         <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a471">String</a>* mSource;
146<a name="l00229"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerp6">00229</a>         <a class="code" href="namespaceOgre.html#a471">String</a> mSourceName;
147<a name="l00230"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerp7">00230</a>         size_t mEndOfSource;
14800231
149<a name="l00232"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerp8">00232</a>         size_t mCurrentLine;
150<a name="l00233"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerp9">00233</a>         size_t mCharPos;     
15100234
152<a name="l00237"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerp10">00237</a>         std::map&lt;size_t, float&gt; mConstants;
153<a name="l00240"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerp11">00240</a>         std::map&lt;size_t, String&gt; mLabels;
154<a name="l00243"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerp12">00243</a>         <span class="keywordtype">bool</span> mLabelIsActive;
155<a name="l00246"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerp13">00246</a>         size_t mActiveLabelKey;
156<a name="l00249"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerp14">00249</a>         <span class="keywordtype">bool</span> mNoSpaceSkip;
157<a name="l00252"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerp15">00252</a>         <span class="keywordtype">bool</span> mNoTerminalToken;
15800253
159<a name="l00255"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerp16">00255</a>         <a class="code" href="namespaceOgre.html#a468">uint</a> mActiveContexts;
16000256
16100265         <span class="keywordtype">bool</span> doPass1();
16200266
16300276         <span class="keywordtype">bool</span> doPass2();
16400277
16500283         <span class="keyword">virtual</span> <span class="keywordtype">void</span> executeTokenAction(<span class="keyword">const</span> size_t tokenID) = 0;
16600286         <span class="keyword">virtual</span> <span class="keywordtype">void</span> setupTokenDefinitions(<span class="keywordtype">void</span>) = 0;
16700293         <span class="keyword">const</span> <a class="code" href="structOgre_1_1Compiler2Pass_1_1TokenInst.html">TokenInst</a>&amp; getNextToken(<span class="keyword">const</span> size_t expectedTokenID = 0);
16800296         <span class="keyword">const</span> <a class="code" href="structOgre_1_1Compiler2Pass_1_1TokenInst.html">TokenInst</a>&amp; getCurrentToken(<span class="keywordtype">void</span>);
16900302         <span class="keywordtype">bool</span> testNextTokenID(<span class="keyword">const</span> size_t expectedTokenID);
17000305         <span class="keywordtype">void</span> replaceToken(<span class="keywordtype">void</span>);
17100311         <span class="keywordtype">float</span> getNextTokenValue(<span class="keywordtype">void</span>);
17200317         <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a471">String</a>&amp; getNextTokenLabel(<span class="keywordtype">void</span>);
17300320         size_t getPass2TokenQueCount(<span class="keywordtype">void</span>) <span class="keyword">const</span>;
17400325         size_t getRemainingTokensForAction(<span class="keywordtype">void</span>) <span class="keyword">const</span>;
17500326
17600335         <span class="keywordtype">void</span> addLexemeToken(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a471">String</a>&amp; lexeme, <span class="keyword">const</span> size_t token, <span class="keyword">const</span> <span class="keywordtype">bool</span> hasAction = <span class="keyword">false</span>, <span class="keyword">const</span> <span class="keywordtype">bool</span> caseSensitive = <span class="keyword">false</span>);
17700336
17800345         <span class="keywordtype">void</span> setClientBNFGrammer(<span class="keywordtype">void</span>);
17900346
18000347
18100348
18200350         <span class="keywordtype">void</span> findEOL();
18300351
18400359         <span class="keywordtype">bool</span> isFloatValue(<span class="keywordtype">float</span>&amp; fvalue, size_t&amp; charsize) <span class="keyword">const</span>;
18500360
18600369         <span class="keywordtype">bool</span> isCharacterLabel(<span class="keyword">const</span> size_t rulepathIDX);
18700377         <span class="keywordtype">bool</span> isLexemeMatch(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a471">String</a>&amp; lexeme, <span class="keyword">const</span> <span class="keywordtype">bool</span> caseSensitive) <span class="keyword">const</span>;
18800379         <span class="keywordtype">bool</span> positionToNextLexeme();
18900400         <span class="keywordtype">bool</span> processRulePath( size_t rulepathIDX);
19000401
19100402
192<a name="l00405"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerb55">00405</a>         <span class="keywordtype">void</span> setActiveContexts(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a468">uint</a> contexts){ mActiveContexts = contexts; }
19300406
19400408         <span class="keywordtype">void</span> skipComments();
19500409
19600411         <span class="keywordtype">void</span> skipEOL();
19700412
19800414         <span class="keywordtype">void</span> skipWhiteSpace();
19900415
20000416
20100425         <span class="keywordtype">bool</span> ValidateToken(<span class="keyword">const</span> size_t rulepathIDX, <span class="keyword">const</span> size_t activeRuleID);
20200426
20300431         <span class="keywordtype">void</span> verifyTokenRuleLinks(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a471">String</a>&amp; grammerName);
20400435         <span class="keywordtype">void</span> checkTokenActionTrigger(<span class="keywordtype">void</span>);
20500440         <a class="code" href="namespaceOgre.html#a471">String</a> getBNFGrammerTextFromRulePath(size_t ruleID);
20600441
20700442
20800443     <span class="keyword">private</span>:
20900444         <span class="comment">// used for interpreting BNF script</span>
21000445         <span class="comment">// keep it as static so that only one structure is created</span>
21100446         <span class="comment">// no matter how many times this class is instantiated.</span>
212<a name="l00447"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1Compiler2Passv0">00447</a>         <span class="keyword">static</span> <a class="code" href="structOgre_1_1Compiler2Pass_1_1TokenState.html">TokenState</a> mBNFTokenState;
21300448         <span class="comment">// maintain a map of BNF grammer</span>
214<a name="l00449"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1Compiler2Passy0">00449</a>         <span class="keyword">typedef</span> std::map&lt;String, TokenState&gt; <a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1Compiler2Passy0">TokenStateContainer</a>;
215<a name="l00450"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1Compiler2Passv1">00450</a>         <span class="keyword">static</span> <a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1Compiler2Passy0">TokenStateContainer</a> mClientTokenStates;
21600452         <span class="keywordtype">void</span> activatePreviousTokenAction(<span class="keywordtype">void</span>);
21700454         <span class="keywordtype">void</span> initBNFCompiler(<span class="keywordtype">void</span>);
21800456         <span class="keywordtype">void</span> buildClientBNFRulePaths(<span class="keywordtype">void</span>);
21900458         <span class="keywordtype">void</span> modifyLastRule(<span class="keyword">const</span> OperationType pendingRuleOp, <span class="keyword">const</span> size_t tokenID);
22000463         size_t getClientLexemeTokenID(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a471">String</a>&amp; lexeme, <span class="keyword">const</span> <span class="keywordtype">bool</span> isCaseSensitive = <span class="keyword">false</span>);
22100465         <span class="keywordtype">void</span> extractNonTerminal(<span class="keyword">const</span> OperationType pendingRuleOp);
22200467         <span class="keywordtype">void</span> extractTerminal(<span class="keyword">const</span> OperationType pendingRuleOp, <span class="keyword">const</span> <span class="keywordtype">bool</span> notoken = <span class="keyword">false</span>);
22300469         <span class="keywordtype">void</span> extractSet(<span class="keyword">const</span> OperationType pendingRuleOp);
22400471         <span class="keywordtype">void</span> extractNumericConstant(<span class="keyword">const</span> OperationType pendingRuleOp);
22500472         <a class="code" href="namespaceOgre.html#a471">String</a> getLexemeText(size_t&amp; ruleID);
22600473
22700474     <span class="keyword">public</span>:
22800475
22900477         Compiler2Pass();
230<a name="l00478"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1Compiler2Passa1">00478</a>         <span class="keyword">virtual</span> ~Compiler2Pass() {}
23100479
23200491         <span class="keywordtype">bool</span> compile(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a471">String</a>&amp; source, <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a471">String</a>&amp; sourceName);
23300494         <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a471">String</a>&amp; getClientBNFGrammer(<span class="keywordtype">void</span>) = 0;
23400495
23500498         <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a471">String</a>&amp; getClientGrammerName(<span class="keywordtype">void</span>) = 0;
23600499
23700500     };
23800501
23900502 }
24000503
24100504 <span class="preprocessor">#endif</span>
24200505 <span class="preprocessor"></span>
243</pre></div><hr>
244<p>
245Copyright &copy; 2000-2005 by The OGRE Team<br />
246<!--Creative Commons License--><a rel="license" href="http://creativecommons.org/licenses/by-sa/2.5/"><img alt="Creative Commons License" border="0" src="http://creativecommons.org/images/public/somerights20.png"/></a><br/>
247This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/2.5/">Creative Commons Attribution-ShareAlike 2.5 License</a>.<br/>
248                <!--/Creative Commons License--><!-- <rdf:RDF xmlns="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
249                <Work rdf:about="">
250                        <license rdf:resource="http://creativecommons.org/licenses/by-sa/2.5/" />
251        <dc:type rdf:resource="http://purl.org/dc/dcmitype/Text" />
252                </Work>
253                <License rdf:about="http://creativecommons.org/licenses/by-sa/2.5/"><permits rdf:resource="http://web.resource.org/cc/Reproduction"/><permits rdf:resource="http://web.resource.org/cc/Distribution"/><requires rdf:resource="http://web.resource.org/cc/Notice"/><requires rdf:resource="http://web.resource.org/cc/Attribution"/><permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/><requires rdf:resource="http://web.resource.org/cc/ShareAlike"/></License></rdf:RDF> -->
254
255Last modified Sun Mar 12 14:37:38 2006
256</p>
257</body>
258</html>
Note: See TracBrowser for help on using the repository browser.