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 Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a> | <a class="qindex" href="pages.html">Related 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> |
---|
11 | 00002 <span class="comment">-----------------------------------------------------------------------------</span> |
---|
12 | 00003 <span class="comment">This source file is part of OGRE</span> |
---|
13 | 00004 <span class="comment"> (Object-oriented Graphics Rendering Engine)</span> |
---|
14 | 00005 <span class="comment">For the latest info, see http://www.stevestreeting.com/ogre/</span> |
---|
15 | 00006 <span class="comment"></span> |
---|
16 | 00007 <span class="comment">Copyright (c) 2000-2005 The OGRE Team</span> |
---|
17 | 00008 <span class="comment">Also see acknowledgements in Readme.html</span> |
---|
18 | 00009 <span class="comment"></span> |
---|
19 | 00010 <span class="comment">This program is free software; you can redistribute it and/or modify it under</span> |
---|
20 | 00011 <span class="comment">the terms of the GNU General Public License as published by the Free Software</span> |
---|
21 | 00012 <span class="comment">Foundation; either version 2 of the License, or (at your option) any later</span> |
---|
22 | 00013 <span class="comment">version.</span> |
---|
23 | 00014 <span class="comment"></span> |
---|
24 | 00015 <span class="comment">This program is distributed in the hope that it will be useful, but WITHOUT</span> |
---|
25 | 00016 <span class="comment">ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS</span> |
---|
26 | 00017 <span class="comment">FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.</span> |
---|
27 | 00018 <span class="comment"></span> |
---|
28 | 00019 <span class="comment">You should have received a copy of the GNU General Public License along with</span> |
---|
29 | 00020 <span class="comment">this program; if not, write to the Free Software Foundation, Inc., 59 Temple</span> |
---|
30 | 00021 <span class="comment">Place - Suite 330, Boston, MA 02111-1307, USA, or go to</span> |
---|
31 | 00022 <span class="comment">http://www.gnu.org/copyleft/gpl.html.</span> |
---|
32 | 00023 <span class="comment">-----------------------------------------------------------------------------</span> |
---|
33 | 00024 <span class="comment">*/</span> |
---|
34 | 00025 |
---|
35 | 00026 |
---|
36 | 00027 <span class="preprocessor">#ifndef __Compiler2Pass_H__</span> |
---|
37 | 00028 <span class="preprocessor"></span><span class="preprocessor">#define __Compiler2Pass_H__</span> |
---|
38 | 00029 <span class="preprocessor"></span> |
---|
39 | 00030 <span class="preprocessor">#include <vector></span> |
---|
40 | 00031 <span class="preprocessor">#include "<a class="code" href="OgrePrerequisites_8h.html">OgrePrerequisites.h</a>"</span> |
---|
41 | 00032 |
---|
42 | 00033 <span class="keyword">namespace </span>Ogre { |
---|
43 | 00034 |
---|
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 |
---|
45 | 00115 { |
---|
46 | 00116 |
---|
47 | 00117 <span class="keyword">protected</span>: |
---|
48 | 00118 |
---|
49 | 00119 <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}; |
---|
51 | 00121 |
---|
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> |
---|
53 | 00126 { |
---|
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; |
---|
56 | 00129 |
---|
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) |
---|
59 | 00132 : operation(ot), tokenID(token) {} |
---|
60 | 00133 }; |
---|
61 | 00134 |
---|
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<TokenRule> <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>; |
---|
64 | 00137 |
---|
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 { |
---|
67 | 00140 _no_token_ = SystemTokenBase, |
---|
68 | 00141 _character_, |
---|
69 | 00142 _value_, |
---|
70 | 00143 _no_space_skip_ |
---|
71 | 00144 }; |
---|
72 | 00145 |
---|
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, |
---|
74 | 00147 BNF_SYNTAX, BNF_RULE, BNF_IDENTIFIER, BNF_IDENTIFIER_RIGHT, BNF_IDENTIFIER_CHARACTERS, BNF_ID_BEGIN, BNF_ID_END, |
---|
75 | 00148 BNF_CONSTANT_BEGIN, BNF_SET_RULE, BNF_EXPRESSION, |
---|
76 | 00149 BNF_AND_TERM, BNF_OR_TERM, BNF_TERM, BNF_TERM_ID, BNF_CONSTANT, BNF_OR, BNF_TERMINAL_SYMBOL, BNF_TERMINAL_START, |
---|
77 | 00150 BNF_REPEAT_EXPRESSION, BNF_REPEAT_BEGIN, BNF_REPEAT_END, BNF_SET, BNF_SET_BEGIN, BNF_SET_END, |
---|
78 | 00151 BNF_NOT_TEST, BNF_NOT_TEST_BEGIN, BNF_OPTIONAL_EXPRESSION, BNF_NOT_EXPRESSION, BNF_NOT_CHK, |
---|
79 | 00152 BNF_OPTIONAL_BEGIN, BNF_OPTIONAL_END, BNF_NO_TOKEN_START, BNF_SINGLEQUOTE, BNF_SINGLE_QUOTE_EXC, BNF_SET_END_EXC, |
---|
80 | 00153 BNF_ANY_CHARACTER, BNF_SPECIAL_CHARACTERS1, |
---|
81 | 00154 BNF_SPECIAL_CHARACTERS2, BNF_WHITE_SPACE_CHK, |
---|
82 | 00155 |
---|
83 | 00156 BNF_LETTER, BNF_LETTER_DIGIT, BNF_DIGIT, BNF_WHITE_SPACE, |
---|
84 | 00157 BNF_ALPHA_SET, BNF_NUMBER_SET, BNF_SPECIAL_CHARACTER_SET1, |
---|
85 | 00158 BNF_SPECIAL_CHARACTER_SET2, BNF_SPECIAL_CHARACTER_SET3, BNF_NOT_CHARS |
---|
86 | 00159 }; |
---|
87 | 00160 |
---|
88 | 00161 |
---|
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> |
---|
90 | 00164 { |
---|
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; |
---|
97 | 00171 |
---|
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>& 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> ) |
---|
100 | 00174 : ID(ID) |
---|
101 | 00175 , hasAction(hasAction) |
---|
102 | 00176 , isNonTerminal(false) |
---|
103 | 00177 , ruleID(0) |
---|
104 | 00178 , isCaseSensitive(caseSensitive) |
---|
105 | 00179 , lexeme(lexeme) |
---|
106 | 00180 { |
---|
107 | 00181 } |
---|
108 | 00182 |
---|
109 | 00183 }; |
---|
110 | 00184 |
---|
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<LexemeTokenDef> <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>; |
---|
113 | 00187 |
---|
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<std::string, size_t> <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>; |
---|
116 | 00191 |
---|
117 | 00192 |
---|
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> |
---|
119 | 00195 { |
---|
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; |
---|
125 | 00201 }; |
---|
126 | 00202 |
---|
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<TokenInst> <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>; |
---|
129 | 00205 |
---|
130 | 00206 <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> |
---|
132 | 00208 { |
---|
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; |
---|
137 | 00213 }; |
---|
138 | 00214 |
---|
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; |
---|
140 | 00216 |
---|
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; |
---|
144 | 00225 |
---|
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; |
---|
148 | 00231 |
---|
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; |
---|
151 | 00234 |
---|
152 | <a name="l00237"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerp10">00237</a> std::map<size_t, float> mConstants; |
---|
153 | <a name="l00240"></a><a class="code" href="classOgre_1_1Compiler2Pass.html#Ogre_1_1MaterialScriptCompilerp11">00240</a> std::map<size_t, String> 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; |
---|
158 | 00253 |
---|
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; |
---|
160 | 00256 |
---|
161 | 00265 <span class="keywordtype">bool</span> doPass1(); |
---|
162 | 00266 |
---|
163 | 00276 <span class="keywordtype">bool</span> doPass2(); |
---|
164 | 00277 |
---|
165 | 00283 <span class="keyword">virtual</span> <span class="keywordtype">void</span> executeTokenAction(<span class="keyword">const</span> size_t tokenID) = 0; |
---|
166 | 00286 <span class="keyword">virtual</span> <span class="keywordtype">void</span> setupTokenDefinitions(<span class="keywordtype">void</span>) = 0; |
---|
167 | 00293 <span class="keyword">const</span> <a class="code" href="structOgre_1_1Compiler2Pass_1_1TokenInst.html">TokenInst</a>& getNextToken(<span class="keyword">const</span> size_t expectedTokenID = 0); |
---|
168 | 00296 <span class="keyword">const</span> <a class="code" href="structOgre_1_1Compiler2Pass_1_1TokenInst.html">TokenInst</a>& getCurrentToken(<span class="keywordtype">void</span>); |
---|
169 | 00302 <span class="keywordtype">bool</span> testNextTokenID(<span class="keyword">const</span> size_t expectedTokenID); |
---|
170 | 00305 <span class="keywordtype">void</span> replaceToken(<span class="keywordtype">void</span>); |
---|
171 | 00311 <span class="keywordtype">float</span> getNextTokenValue(<span class="keywordtype">void</span>); |
---|
172 | 00317 <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a471">String</a>& getNextTokenLabel(<span class="keywordtype">void</span>); |
---|
173 | 00320 size_t getPass2TokenQueCount(<span class="keywordtype">void</span>) <span class="keyword">const</span>; |
---|
174 | 00325 size_t getRemainingTokensForAction(<span class="keywordtype">void</span>) <span class="keyword">const</span>; |
---|
175 | 00326 |
---|
176 | 00335 <span class="keywordtype">void</span> addLexemeToken(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a471">String</a>& 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>); |
---|
177 | 00336 |
---|
178 | 00345 <span class="keywordtype">void</span> setClientBNFGrammer(<span class="keywordtype">void</span>); |
---|
179 | 00346 |
---|
180 | 00347 |
---|
181 | 00348 |
---|
182 | 00350 <span class="keywordtype">void</span> findEOL(); |
---|
183 | 00351 |
---|
184 | 00359 <span class="keywordtype">bool</span> isFloatValue(<span class="keywordtype">float</span>& fvalue, size_t& charsize) <span class="keyword">const</span>; |
---|
185 | 00360 |
---|
186 | 00369 <span class="keywordtype">bool</span> isCharacterLabel(<span class="keyword">const</span> size_t rulepathIDX); |
---|
187 | 00377 <span class="keywordtype">bool</span> isLexemeMatch(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a471">String</a>& lexeme, <span class="keyword">const</span> <span class="keywordtype">bool</span> caseSensitive) <span class="keyword">const</span>; |
---|
188 | 00379 <span class="keywordtype">bool</span> positionToNextLexeme(); |
---|
189 | 00400 <span class="keywordtype">bool</span> processRulePath( size_t rulepathIDX); |
---|
190 | 00401 |
---|
191 | 00402 |
---|
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; } |
---|
193 | 00406 |
---|
194 | 00408 <span class="keywordtype">void</span> skipComments(); |
---|
195 | 00409 |
---|
196 | 00411 <span class="keywordtype">void</span> skipEOL(); |
---|
197 | 00412 |
---|
198 | 00414 <span class="keywordtype">void</span> skipWhiteSpace(); |
---|
199 | 00415 |
---|
200 | 00416 |
---|
201 | 00425 <span class="keywordtype">bool</span> ValidateToken(<span class="keyword">const</span> size_t rulepathIDX, <span class="keyword">const</span> size_t activeRuleID); |
---|
202 | 00426 |
---|
203 | 00431 <span class="keywordtype">void</span> verifyTokenRuleLinks(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a471">String</a>& grammerName); |
---|
204 | 00435 <span class="keywordtype">void</span> checkTokenActionTrigger(<span class="keywordtype">void</span>); |
---|
205 | 00440 <a class="code" href="namespaceOgre.html#a471">String</a> getBNFGrammerTextFromRulePath(size_t ruleID); |
---|
206 | 00441 |
---|
207 | 00442 |
---|
208 | 00443 <span class="keyword">private</span>: |
---|
209 | 00444 <span class="comment">// used for interpreting BNF script</span> |
---|
210 | 00445 <span class="comment">// keep it as static so that only one structure is created</span> |
---|
211 | 00446 <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; |
---|
213 | 00448 <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<String, TokenState> <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; |
---|
216 | 00452 <span class="keywordtype">void</span> activatePreviousTokenAction(<span class="keywordtype">void</span>); |
---|
217 | 00454 <span class="keywordtype">void</span> initBNFCompiler(<span class="keywordtype">void</span>); |
---|
218 | 00456 <span class="keywordtype">void</span> buildClientBNFRulePaths(<span class="keywordtype">void</span>); |
---|
219 | 00458 <span class="keywordtype">void</span> modifyLastRule(<span class="keyword">const</span> OperationType pendingRuleOp, <span class="keyword">const</span> size_t tokenID); |
---|
220 | 00463 size_t getClientLexemeTokenID(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a471">String</a>& lexeme, <span class="keyword">const</span> <span class="keywordtype">bool</span> isCaseSensitive = <span class="keyword">false</span>); |
---|
221 | 00465 <span class="keywordtype">void</span> extractNonTerminal(<span class="keyword">const</span> OperationType pendingRuleOp); |
---|
222 | 00467 <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>); |
---|
223 | 00469 <span class="keywordtype">void</span> extractSet(<span class="keyword">const</span> OperationType pendingRuleOp); |
---|
224 | 00471 <span class="keywordtype">void</span> extractNumericConstant(<span class="keyword">const</span> OperationType pendingRuleOp); |
---|
225 | 00472 <a class="code" href="namespaceOgre.html#a471">String</a> getLexemeText(size_t& ruleID); |
---|
226 | 00473 |
---|
227 | 00474 <span class="keyword">public</span>: |
---|
228 | 00475 |
---|
229 | 00477 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() {} |
---|
231 | 00479 |
---|
232 | 00491 <span class="keywordtype">bool</span> compile(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a471">String</a>& source, <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a471">String</a>& sourceName); |
---|
233 | 00494 <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a471">String</a>& getClientBNFGrammer(<span class="keywordtype">void</span>) = 0; |
---|
234 | 00495 |
---|
235 | 00498 <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a471">String</a>& getClientGrammerName(<span class="keywordtype">void</span>) = 0; |
---|
236 | 00499 |
---|
237 | 00500 }; |
---|
238 | 00501 |
---|
239 | 00502 } |
---|
240 | 00503 |
---|
241 | 00504 <span class="preprocessor">#endif</span> |
---|
242 | 00505 <span class="preprocessor"></span> |
---|
243 | </pre></div><hr> |
---|
244 | <p> |
---|
245 | Copyright © 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/> |
---|
247 | This 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 | |
---|
255 | Last modified Sun Mar 12 14:37:38 2006 |
---|
256 | </p> |
---|
257 | </body> |
---|
258 | </html> |
---|