-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtokenizer_8cpp_source.html
executable file
·197 lines (197 loc) · 23.3 KB
/
tokenizer_8cpp_source.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Lisp: tokenizer.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File List</span></a></li>
<li><a href="globals.html"><span>File Members</span></a></li>
</ul>
</div>
<h1>tokenizer.cpp</h1><a href="tokenizer_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00002"></a>00002 <span class="preprocessor">#include <string></span>
<a name="l00003"></a>00003 <span class="preprocessor">#include <iostream></span>
<a name="l00004"></a>00004
<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="tokendefs_8h.html" title="Symbolické konstanty pro typ tokenu.">tokendefs.h</a>"</span>
<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="datetypes_8h.html">datetypes.h</a>"</span>
<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="tokenizer_8h.html">tokenizer.h</a>"</span>
<a name="l00008"></a>00008 <span class="preprocessor">#include "<a class="code" href="exceptions_8h.html">exceptions.h</a>"</span>
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="keyword">using namespace </span>std;
<a name="l00011"></a>00011
<a name="l00012"></a><a class="code" href="classTokenizer.html#a9ef429748fad985d8e9caabe6400a7c2">00012</a> <span class="keywordtype">void</span> <a class="code" href="classTokenizer.html#a9ef429748fad985d8e9caabe6400a7c2">Tokenizer::tokenizeString</a>(<span class="keywordtype">string</span> s) {
<a name="l00013"></a>00013 this-><a class="code" href="classTokenizer.html#aba99fb349fa11be72664de80dd6d92a9" title="Pozice v aktuálně zpracovávaném řetězci (ukazuje na prvek ktery bude teprve...">pos</a> = 0;
<a name="l00014"></a>00014 this-><a class="code" href="classTokenizer.html#a7eeb173bf2d7eb012afc74ba57c1e869" title="interní reprezentace zpracovávaného řetězce">repr</a> = s;
<a name="l00015"></a>00015 }
<a name="l00016"></a>00016
<a name="l00017"></a><a class="code" href="classTokenizer.html#a448b895570d816caf17f75b99a89564f">00017</a> <a class="code" href="tokendefs_8h.html#a31069637c878d3149b48df229b5acb62">token</a> <a class="code" href="classTokenizer.html#a448b895570d816caf17f75b99a89564f">Tokenizer::nextToken</a>(<span class="keywordtype">string</span> & tokRepr) {
<a name="l00018"></a>00018 <a class="code" href="tokendefs_8h.html#a31069637c878d3149b48df229b5acb62">token</a> t = <a class="code" href="classTokenizer.html#a810fff85a57e45f9342a95eee61b6471">nextToken2</a>(tokRepr);
<a name="l00019"></a>00019 <span class="comment">// cout <<t<<endl;</span>
<a name="l00020"></a>00020 <span class="keywordflow">return</span> t;
<a name="l00021"></a>00021 }
<a name="l00022"></a>00022
<a name="l00023"></a><a class="code" href="classTokenizer.html#a810fff85a57e45f9342a95eee61b6471">00023</a> <a class="code" href="tokendefs_8h.html#a31069637c878d3149b48df229b5acb62">token</a> <a class="code" href="classTokenizer.html#a810fff85a57e45f9342a95eee61b6471">Tokenizer::nextToken2</a>(<span class="keywordtype">string</span> & tokRepr) {
<a name="l00024"></a>00024 this-><a class="code" href="classTokenizer.html#a2388460dc8a0c2f6a89bbac51a5c7230" title="Přesune ukazatel pozice na další kus kódu. Přeskakuje bílé znaky a komentáře...">skipWhitespaces</a>();
<a name="l00025"></a>00025 <span class="keywordtype">char</span> ch = this-><a class="code" href="classTokenizer.html#a7eeb173bf2d7eb012afc74ba57c1e869" title="interní reprezentace zpracovávaného řetězce">repr</a>[this-><a class="code" href="classTokenizer.html#aba99fb349fa11be72664de80dd6d92a9" title="Pozice v aktuálně zpracovávaném řetězci (ukazuje na prvek ktery bude teprve...">pos</a>];
<a name="l00026"></a>00026
<a name="l00027"></a>00027 <span class="comment">//Unarni minus:</span>
<a name="l00028"></a>00028 <span class="comment">// if (ch=='-'){</span>
<a name="l00029"></a>00029 <span class="comment">// this->getChar();</span>
<a name="l00030"></a>00030 <span class="comment">// tokRepr="-";</span>
<a name="l00031"></a>00031 <span class="comment">// tokRepr+=this->readNum();</span>
<a name="l00032"></a>00032 <span class="comment">// return INT;</span>
<a name="l00033"></a>00033 <span class="comment">// }</span>
<a name="l00034"></a>00034 <span class="keywordflow">if</span> (isdigit(ch)) { <span class="comment">//prvni je cislovka</span>
<a name="l00035"></a>00035 <span class="keywordtype">string</span> num = this-><a class="code" href="classTokenizer.html#a475d735bee6443dab1c52cc9aef957ac" title="Přečte a vrátí textovou reprezentaci čísla. Posune ukazatele pozice.">readNum</a>();
<a name="l00036"></a>00036
<a name="l00037"></a>00037 <span class="keywordflow">if</span> (this-><a class="code" href="classTokenizer.html#a7eeb173bf2d7eb012afc74ba57c1e869" title="interní reprezentace zpracovávaného řetězce">repr</a>[this-><a class="code" href="classTokenizer.html#aba99fb349fa11be72664de80dd6d92a9" title="Pozice v aktuálně zpracovávaném řetězci (ukazuje na prvek ktery bude teprve...">pos</a>] == <span class="charliteral">'.'</span>) { <span class="comment">// float:</span>
<a name="l00038"></a>00038 <span class="comment">// this->pos++; //za tecku</span>
<a name="l00039"></a>00039 this-><a class="code" href="classTokenizer.html#a1cb4024406fa627ddbecebe53b800cad" title="Přečte a vrátí jeden znak. A posune všecky ukazatele pozice.">getChar</a>(); <span class="comment">//za tecku</span>
<a name="l00040"></a>00040 <span class="keywordtype">string</span> frac = this-><a class="code" href="classTokenizer.html#a475d735bee6443dab1c52cc9aef957ac" title="Přečte a vrátí textovou reprezentaci čísla. Posune ukazatele pozice.">readNum</a>();
<a name="l00041"></a>00041 tokRepr = num + <span class="stringliteral">"."</span> + frac;
<a name="l00042"></a>00042 <span class="keywordflow">return</span> <a class="code" href="tokendefs_8h.html#a3f4990a0d84a8115cb676dbbe60c0ef1">DOUBLE</a>;
<a name="l00043"></a>00043
<a name="l00044"></a>00044 } <span class="keywordflow">else</span> { <span class="comment">// INTEGER</span>
<a name="l00045"></a>00045 tokRepr = num;
<a name="l00046"></a>00046 <span class="keywordflow">return</span> <a class="code" href="tokendefs_8h.html#aafccc0c5f7908ab9183cb063d0cd6dba">INT</a>;
<a name="l00047"></a>00047 }
<a name="l00048"></a>00048
<a name="l00049"></a>00049 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ch == <span class="charliteral">'('</span>) { <span class="comment">//zacatek seznamu</span>
<a name="l00050"></a>00050 this-><a class="code" href="classTokenizer.html#a1cb4024406fa627ddbecebe53b800cad" title="Přečte a vrátí jeden znak. A posune všecky ukazatele pozice.">getChar</a>();
<a name="l00051"></a>00051 <span class="keywordflow">return</span> <a class="code" href="tokendefs_8h.html#aabe07c02e2049f45c5eccf32995ce1a1">LIST_BEGIN</a>;
<a name="l00052"></a>00052
<a name="l00053"></a>00053 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ch == <span class="charliteral">')'</span>) { <span class="comment">//konec seznamu</span>
<a name="l00054"></a>00054 this-><a class="code" href="classTokenizer.html#a1cb4024406fa627ddbecebe53b800cad" title="Přečte a vrátí jeden znak. A posune všecky ukazatele pozice.">getChar</a>();
<a name="l00055"></a>00055 <span class="keywordflow">return</span> <a class="code" href="tokendefs_8h.html#aba0050ca479f3929f8301b71439adaf6">LIST_END</a>;
<a name="l00056"></a>00056
<a name="l00057"></a>00057 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ch == <span class="charliteral">'"'</span>) { <span class="comment">//zacatek stringu</span>
<a name="l00058"></a>00058 tokRepr = this-><a class="code" href="classTokenizer.html#ab2df8aff51c86d0443b5d80dc54c221f" title="Přečte a vrátí textovou reprezentaci lispovského stringu. Posune ukazatele pozice...">readText</a>();
<a name="l00059"></a>00059 <span class="keywordflow">return</span> <a class="code" href="tokendefs_8h.html#ae4ade30bc9956b89c33ab002fbd68596">STRING_BEGIN</a>;
<a name="l00060"></a>00060
<a name="l00061"></a>00061 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!isdigit(ch) && isgraph(ch)) { <span class="comment">//symbol</span>
<a name="l00062"></a>00062 tokRepr = this-><a class="code" href="classTokenizer.html#a2181986dd70cde20dc4f50ed921c416d" title="Přečte a vrátí textovou reprezentaci symbolu. Posune ukazatele pozice.">readSymbol</a>();
<a name="l00063"></a>00063 <span class="keywordflow">return</span> <a class="code" href="tokendefs_8h.html#ac1b28a214cfb9f249172b64f038e521e">SYMBOL</a>;
<a name="l00064"></a>00064 }
<a name="l00065"></a>00065
<a name="l00066"></a>00066 <span class="keywordflow">return</span> 0;
<a name="l00067"></a>00067 }
<a name="l00068"></a>00068
<a name="l00069"></a><a class="code" href="classTokenizer.html#a2388460dc8a0c2f6a89bbac51a5c7230">00069</a> <span class="keywordtype">void</span> <a class="code" href="classTokenizer.html#a2388460dc8a0c2f6a89bbac51a5c7230" title="Přesune ukazatel pozice na další kus kódu. Přeskakuje bílé znaky a komentáře...">Tokenizer::skipWhitespaces</a>() {
<a name="l00070"></a>00070 <span class="keywordflow">while</span> (this-><a class="code" href="classTokenizer.html#aba99fb349fa11be72664de80dd6d92a9" title="Pozice v aktuálně zpracovávaném řetězci (ukazuje na prvek ktery bude teprve...">pos</a> < (<span class="keywordtype">int</span>) this-><a class="code" href="classTokenizer.html#a7eeb173bf2d7eb012afc74ba57c1e869" title="interní reprezentace zpracovávaného řetězce">repr</a>.length()) {
<a name="l00071"></a>00071 <span class="comment">// int chr;</span>
<a name="l00072"></a>00072 <span class="keywordtype">int</span> chr = this-><a class="code" href="classTokenizer.html#a1cb4024406fa627ddbecebe53b800cad" title="Přečte a vrátí jeden znak. A posune všecky ukazatele pozice.">getChar</a>();
<a name="l00073"></a>00073 <span class="keywordflow">if</span> (chr == <span class="charliteral">'#'</span>) { <span class="comment">//přeskakování komentářů</span>
<a name="l00074"></a>00074 <span class="keywordflow">do</span> {
<a name="l00075"></a>00075 chr = this-><a class="code" href="classTokenizer.html#a1cb4024406fa627ddbecebe53b800cad" title="Přečte a vrátí jeden znak. A posune všecky ukazatele pozice.">getChar</a>();
<a name="l00076"></a>00076 } <span class="keywordflow">while</span> (chr != -1 && chr != <span class="charliteral">'\n'</span>);
<a name="l00077"></a>00077
<a name="l00078"></a>00078 this-><a class="code" href="classTokenizer.html#a4922257501ad42db35dec35af72859c2" title="Vrátí stav ukazatelů o jedno zavolání funkce getChar() zpět. Na konci zdrojáku...">ungetChar</a>();
<a name="l00079"></a>00079 }
<a name="l00080"></a>00080
<a name="l00081"></a>00081 <span class="keywordflow">if</span> (!isspace(chr)) {
<a name="l00082"></a>00082 this-><a class="code" href="classTokenizer.html#a4922257501ad42db35dec35af72859c2" title="Vrátí stav ukazatelů o jedno zavolání funkce getChar() zpět. Na konci zdrojáku...">ungetChar</a>();
<a name="l00083"></a>00083 <span class="keywordflow">break</span>;
<a name="l00084"></a>00084 }
<a name="l00085"></a>00085 }
<a name="l00086"></a>00086 }
<a name="l00087"></a>00087
<a name="l00088"></a><a class="code" href="classTokenizer.html#a475d735bee6443dab1c52cc9aef957ac">00088</a> <span class="keywordtype">string</span> <a class="code" href="classTokenizer.html#a475d735bee6443dab1c52cc9aef957ac" title="Přečte a vrátí textovou reprezentaci čísla. Posune ukazatele pozice.">Tokenizer::readNum</a>() {
<a name="l00089"></a>00089 <span class="keywordtype">string</span> s;
<a name="l00090"></a>00090 <span class="keywordtype">char</span> chr;
<a name="l00091"></a>00091 <span class="keywordflow">while</span> (isdigit(chr = this-><a class="code" href="classTokenizer.html#a1cb4024406fa627ddbecebe53b800cad" title="Přečte a vrátí jeden znak. A posune všecky ukazatele pozice.">getChar</a>())) {
<a name="l00092"></a>00092 s.push_back(chr);
<a name="l00093"></a>00093 }
<a name="l00094"></a>00094 this-><a class="code" href="classTokenizer.html#a4922257501ad42db35dec35af72859c2" title="Vrátí stav ukazatelů o jedno zavolání funkce getChar() zpět. Na konci zdrojáku...">ungetChar</a>();
<a name="l00095"></a>00095 <span class="keywordflow">return</span> s;
<a name="l00096"></a>00096 }
<a name="l00097"></a>00097
<a name="l00099"></a>00099
<a name="l00100"></a><a class="code" href="tokenizer_8cpp.html#aa2a98d7dcb533cb4b9417db9b6c75cb2">00100</a> <span class="keywordtype">bool</span> <a class="code" href="tokenizer_8cpp.html#aa2a98d7dcb533cb4b9417db9b6c75cb2" title="je validni znak pro symbol">ischar</a>(<span class="keywordtype">int</span> chr) {
<a name="l00101"></a>00101 <span class="keywordflow">if</span> (!isspace(chr) && chr != <span class="charliteral">'('</span> && chr != <span class="charliteral">')'</span>) {
<a name="l00102"></a>00102 <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l00103"></a>00103 } <span class="keywordflow">else</span> {
<a name="l00104"></a>00104 <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00105"></a>00105 }
<a name="l00106"></a>00106 }
<a name="l00107"></a>00107
<a name="l00108"></a><a class="code" href="classTokenizer.html#a2181986dd70cde20dc4f50ed921c416d">00108</a> <span class="keywordtype">string</span> <a class="code" href="classTokenizer.html#a2181986dd70cde20dc4f50ed921c416d" title="Přečte a vrátí textovou reprezentaci symbolu. Posune ukazatele pozice.">Tokenizer::readSymbol</a>() {
<a name="l00109"></a>00109 <span class="keywordtype">string</span> s;
<a name="l00110"></a>00110 <span class="keywordtype">char</span> chr;
<a name="l00111"></a>00111 <span class="keywordflow">while</span> (<a class="code" href="tokenizer_8cpp.html#aa2a98d7dcb533cb4b9417db9b6c75cb2" title="je validni znak pro symbol">ischar</a>(chr = this-><a class="code" href="classTokenizer.html#a1cb4024406fa627ddbecebe53b800cad" title="Přečte a vrátí jeden znak. A posune všecky ukazatele pozice.">getChar</a>())) {
<a name="l00112"></a>00112 s.push_back(chr);
<a name="l00113"></a>00113 }
<a name="l00114"></a>00114 <span class="comment">// this->pos--;</span>
<a name="l00115"></a>00115 this-><a class="code" href="classTokenizer.html#a4922257501ad42db35dec35af72859c2" title="Vrátí stav ukazatelů o jedno zavolání funkce getChar() zpět. Na konci zdrojáku...">ungetChar</a>();
<a name="l00116"></a>00116 <span class="keywordflow">return</span> s;
<a name="l00117"></a>00117 }
<a name="l00118"></a>00118
<a name="l00119"></a><a class="code" href="classTokenizer.html#ab2df8aff51c86d0443b5d80dc54c221f">00119</a> <span class="keywordtype">string</span> <a class="code" href="classTokenizer.html#ab2df8aff51c86d0443b5d80dc54c221f" title="Přečte a vrátí textovou reprezentaci lispovského stringu. Posune ukazatele pozice...">Tokenizer::readText</a>() {
<a name="l00120"></a>00120 <span class="keywordtype">string</span> s;
<a name="l00121"></a>00121 this-><a class="code" href="classTokenizer.html#a1cb4024406fa627ddbecebe53b800cad" title="Přečte a vrátí jeden znak. A posune všecky ukazatele pozice.">getChar</a>(); <span class="comment">// prvni '"'</span>
<a name="l00122"></a>00122 <span class="keywordtype">int</span> chr = this-><a class="code" href="classTokenizer.html#a1cb4024406fa627ddbecebe53b800cad" title="Přečte a vrátí jeden znak. A posune všecky ukazatele pozice.">getChar</a>();
<a name="l00123"></a>00123 <span class="keywordflow">while</span> (chr != <span class="charliteral">'"'</span> && chr != -1) {
<a name="l00124"></a>00124 s.push_back(chr);
<a name="l00125"></a>00125 chr = this-><a class="code" href="classTokenizer.html#a1cb4024406fa627ddbecebe53b800cad" title="Přečte a vrátí jeden znak. A posune všecky ukazatele pozice.">getChar</a>();
<a name="l00126"></a>00126 }
<a name="l00127"></a>00127 <span class="keywordflow">if</span> (chr == -1) { <span class="comment">//neuzavřený řetězec</span>
<a name="l00128"></a>00128 <a class="code" href="classSyntaxException.html" title="vyjímka pro chyby v syntaxi (vyhazuje Parser)">SyntaxException</a> e;
<a name="l00129"></a>00129 e.<a class="code" href="classBaseException.html#ac970c7f195710ce512a2b05da04bc01a" title="Informace pro chybovou hlášku.">desc</a> = <span class="stringliteral">"Syntax error: Unexpected EOF inside of string"</span>;
<a name="l00130"></a>00130 e.<a class="code" href="classBaseException.html#aab474f5dda270c1618e707a4d03936bc" title="Informace pro chybovou hlášku.">line</a> = this-><a class="code" href="classTokenizer.html#a7324f9663d328e15dbb296fe6d486f87">line</a>;
<a name="l00131"></a>00131 e.<a class="code" href="classBaseException.html#a09c2458e50cfe4a062243e68308d2ab9" title="Informace pro chybovou hlášku.">col</a> = this-><a class="code" href="classTokenizer.html#a6f4b8b492e55b59408cd21617b4d64a1" title="Pozice v rámci řádku.">col</a>;
<a name="l00132"></a>00132
<a name="l00133"></a>00133 <span class="keywordflow">throw</span> e;
<a name="l00134"></a>00134 }
<a name="l00135"></a>00135
<a name="l00136"></a>00136 <span class="keywordflow">return</span> s;
<a name="l00137"></a>00137 }
<a name="l00138"></a>00138
<a name="l00139"></a><a class="code" href="classTokenizer.html#a1cb4024406fa627ddbecebe53b800cad">00139</a> <span class="keywordtype">int</span> <a class="code" href="classTokenizer.html#a1cb4024406fa627ddbecebe53b800cad" title="Přečte a vrátí jeden znak. A posune všecky ukazatele pozice.">Tokenizer::getChar</a>() {
<a name="l00140"></a>00140 <span class="keywordflow">if</span> (this-><a class="code" href="classTokenizer.html#aba99fb349fa11be72664de80dd6d92a9" title="Pozice v aktuálně zpracovávaném řetězci (ukazuje na prvek ktery bude teprve...">pos</a> >= (<span class="keywordtype">int</span>) this-><a class="code" href="classTokenizer.html#a7eeb173bf2d7eb012afc74ba57c1e869" title="interní reprezentace zpracovávaného řetězce">repr</a>.length()) {
<a name="l00141"></a>00141 <span class="keywordflow">return</span> -1;
<a name="l00142"></a>00142 }
<a name="l00143"></a>00143
<a name="l00144"></a>00144 <span class="comment">// cout <<"li: "<<this->line <<endl;</span>
<a name="l00145"></a>00145 <span class="keywordtype">int</span> chr = this-><a class="code" href="classTokenizer.html#a7eeb173bf2d7eb012afc74ba57c1e869" title="interní reprezentace zpracovávaného řetězce">repr</a>[this-><a class="code" href="classTokenizer.html#aba99fb349fa11be72664de80dd6d92a9" title="Pozice v aktuálně zpracovávaném řetězci (ukazuje na prvek ktery bude teprve...">pos</a>];
<a name="l00146"></a>00146 this-><a class="code" href="classTokenizer.html#aba99fb349fa11be72664de80dd6d92a9" title="Pozice v aktuálně zpracovávaném řetězci (ukazuje na prvek ktery bude teprve...">pos</a>++;
<a name="l00147"></a>00147
<a name="l00148"></a>00148 <span class="keywordflow">if</span> (chr == <span class="charliteral">'\n'</span>) {
<a name="l00149"></a>00149 this-><a class="code" href="classTokenizer.html#a7324f9663d328e15dbb296fe6d486f87">line</a>++;
<a name="l00150"></a>00150 this-><a class="code" href="classTokenizer.html#a6f4b8b492e55b59408cd21617b4d64a1" title="Pozice v rámci řádku.">col</a> = 0;
<a name="l00151"></a>00151 } <span class="keywordflow">else</span> {
<a name="l00152"></a>00152 this-><a class="code" href="classTokenizer.html#a6f4b8b492e55b59408cd21617b4d64a1" title="Pozice v rámci řádku.">col</a>++;
<a name="l00153"></a>00153 }
<a name="l00154"></a>00154 <span class="keywordflow">return</span> chr;
<a name="l00155"></a>00155 }
<a name="l00156"></a>00156
<a name="l00157"></a><a class="code" href="classTokenizer.html#a4922257501ad42db35dec35af72859c2">00157</a> <span class="keywordtype">void</span> <a class="code" href="classTokenizer.html#a4922257501ad42db35dec35af72859c2" title="Vrátí stav ukazatelů o jedno zavolání funkce getChar() zpět. Na konci zdrojáku...">Tokenizer::ungetChar</a>() {
<a name="l00158"></a>00158 this-><a class="code" href="classTokenizer.html#aba99fb349fa11be72664de80dd6d92a9" title="Pozice v aktuálně zpracovávaném řetězci (ukazuje na prvek ktery bude teprve...">pos</a>--;
<a name="l00159"></a>00159 <span class="keywordtype">int</span> chr = this-><a class="code" href="classTokenizer.html#a7eeb173bf2d7eb012afc74ba57c1e869" title="interní reprezentace zpracovávaného řetězce">repr</a>[this-><a class="code" href="classTokenizer.html#aba99fb349fa11be72664de80dd6d92a9" title="Pozice v aktuálně zpracovávaném řetězci (ukazuje na prvek ktery bude teprve...">pos</a>];
<a name="l00160"></a>00160
<a name="l00161"></a>00161 <span class="keywordflow">if</span> (chr == <span class="charliteral">'\n'</span>) {
<a name="l00162"></a>00162 this-><a class="code" href="classTokenizer.html#a7324f9663d328e15dbb296fe6d486f87">line</a>--;
<a name="l00163"></a>00163 <span class="comment">//TODO: vlozit misto 0 pozici konce radku:</span>
<a name="l00164"></a>00164 this-><a class="code" href="classTokenizer.html#a6f4b8b492e55b59408cd21617b4d64a1" title="Pozice v rámci řádku.">col</a> = 0;
<a name="l00165"></a>00165 } <span class="keywordflow">else</span> {
<a name="l00166"></a>00166 this-><a class="code" href="classTokenizer.html#a6f4b8b492e55b59408cd21617b4d64a1" title="Pozice v rámci řádku.">col</a>--;
<a name="l00167"></a>00167 }
<a name="l00168"></a>00168 }
</pre></div></div>
<hr class="footer"/><address style="text-align: right;"><small>Generated on Tue May 24 16:12:17 2011 for Lisp by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>